[JSP study] DB를 이용한 로그인 예제

Noah97·2022년 5월 27일
0

JspStudy

목록 보기
13/18
post-thumbnail

📝Database를 이용한 로그인 예제

Database를 연동하여 member 테이블을 만들어 login.html의 id와 같을 시 테이블에서 name과 level을 받아와서 출력하는 예제이다.
실행 예제

login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="login.jsp" method="post">
		<input type="text" name="id" id="id"> <input type="submit"
			value="Login" id="sub">
	</form>
</body>
</html>

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
	
	Connection conn = null;
	String sql = "select * from member"; //sql 조작 구문
	PreparedStatement pstmt = null;
	ResultSet rs = null;

	try {
		Context init = new InitialContext();
		DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/mariaDB");
		conn = ds.getConnection(); //JNDI를 이용하여 연결된 Connection 객체를 가져온다.
		
		String id = request.getParameter("id"); //id값을 받아와서 저장
		pstmt = conn.prepareStatement(sql); //connection 객체를 사용항 PreparedStatement 객체를 생성한다.
		rs = pstmt.executeQuery(); //PreparedStatement 객체로 SQL문을 실행하여 얻어온 레코드들을 ResultSet 타입의 변수로 참조한다.
		while (rs.next()) { //레코드가 존재하지 않을 때까지 계속 레코드 행을 다음으로 이동하면서 동작한다.
			String name = rs.getString(2); //두 번째 테이블인 name 을 String name으로 받아온다
			int level = rs.getInt(3); //세 번째 테이블인 level을 int level로 받아온다
			if (rs.getString(1).equals(id) && id != null) {
				session.setAttribute("id", name); //세션지정
				session.setAttribute("level", level);
				response.sendRedirect("member.jsp"); //member.jsp로 이동
			}
			else {
			    out.print("<script>alert('없는 id 입니다.'); location.href = 'login.html';</script>");
			}
		}
	} catch (Exception e) {
		out.println("데이터 가져오기 실패");
		e.printStackTrace();
	} finally {
		try {
			rs.close();
			pstmt.close();
			conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>

member.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%
	String id = (String) session.getAttribute("id"); //id라는 String형으로 session을 받아옴
	int level = (int)session.getAttribute("level"); //level 이라는 int형으로 session을 받아옴
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
	<h3>
	<%if(level == 0) { %>
		<%=(String)session.getAttribute("id") %>(<%=(String)session.getAttribute("id") %>) 반갑습니다.
	<%} else  { %>
		<%=(String)session.getAttribute("id") %>(레벨<%=(int)session.getAttribute("level") %>) 반갑습니다. 
	<% } %> //출력!
	</h3>
	<a href="logout.jsp">Logout</a>
</body>
</html>

logout.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h3>로그아웃 되었습니다.</h3>
<a href = "login.html">로그인</a>
</body>
</html>

실행 화면 ⬇
id: admin 일 때

id: cat 일 때

id: dog 일 때

id가 테이블에 없을 시

DB 화면

profile
안녕하세요 반갑습니다😊

0개의 댓글