ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP 로그인 만들기
    프로그래밍/JSP 2022. 11. 25. 22:55
    728x90

     

     

     

    미리 DB에 사용자 정보를 등록하고 클라이언트에서 입력한 사용자 정보와 비교하여 일치할 경우 로그인 성공과 로그인을 유지하는 로직을 만들어보자.

     

     

    1. DB table 생성 및 사용자 정보 등록

    -- tb_member 테이블 생성
    create table tb_user(
        tb_idx bigint auto_increment primary key,
        tb_userid varchar(30) not null,
        tb_userpw varchar(20) not null,
        tb_name varchar(50) not null
    );
    insert into tb_user(tb_userid, tb_userpw, tb_name) values ('minjae','123456','김민재');

     

     

     

     

    2. 로그인 페이지(login.jsp) 작성

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	String userid = null;
    	String name = null;
    	String idx = null;
    	if(session.getAttribute("userid") != null){
        		idx = (String)session.getAttribute("idx");
    		userid = (String)session.getAttribute("userid");
    		name = (String)session.getAttribute("name");
    	}
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>로그인</title>
    </head>
    <body>
    	<h2>로그인</h2>
    <%
    	if(userid == null){
    %>
    	<form method="post" action="login_ok.jsp">
    		<p>아이디 : <input type="text" name="userid"></p>
    		<p>비밀번호 : <input type="password" name="userpw"></p>
    		<p><input type="submit" value="로그인"></p>
    		<p>회원이 아니신가요? <a href='./member.jsp'>회원가입</a></p>
    	</form>
    <%
    	}else{
    %>
    	<h3><%=userid%>(<%=name%>)님 환영합니다.</h3>
    	<p>
    		<input type="button" value="정보수정" onclick="location.href='info.jsp'">
    		<input type="button" value="로그아웃" onclick="location.href='logout.jsp'">
    	</p>
    <%
    	}
    %>
    </body>
    </html>

    로그인 페이지

     

     

     

     

    3. 로그인 처리 페이지(login_ok.jsp)

    <%@page import="java.sql.*"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	String userid = request.getParameter("userid"); // minjae
    	String userpw = request.getParameter("userpw"); // 123456
    	
    	Connection conn = null;
    	PreparedStatement pstmt = null;
    	ResultSet rs = null;
    
    	String sql = "";
    	String url = "jdbc:mysql://localhost:3306/aiclass";
    	String uid = "root";
    	String upw = "1234";
    
    	try {
    		Class.forName("com.mysql.cj.jdbc.Driver");
    		conn = DriverManager.getConnection(url, uid, upw);
    		if (conn != null) {
    			sql = "select tb_idx, tb_name from tb_user where tb_userid=? and tb_userpw=?";
    			pstmt = conn.prepareStatement(sql); // 컴파일
    			pstmt.setString(1, userid);
    			pstmt.setString(2, userpw);
    			rs = pstmt.executeQuery();
    			if(rs.next()){ // 로그인 성공
    				session.setAttribute("userid", userid);
    				session.setAttribute("idx", rs.getString("tb_idx"));
    				session.setAttribute("name", rs.getString("tb_name"));
    %>
    			<script>
    				alert('로그인되었습니다.');
    				location.href="login.jsp"; // 로그인 페이지로 이동
    			</script>
    <%
    			}else{ // 로그인 실패
    %>	
    			<script>
    				alert('아이디 또는 비밀번호를 확인하세요');
    				history.back();		// 그 전 패이지를 기억하고 전 패이지로 이동
    			</script>
    <%
    			}
    		}	
    	} catch (Exception e) {
    		e.printStackTrace();
    }
    %>

     

    select tb_idx, tb_name from tb_user where tb_userid=? and tb_userpw=?

    DB에서 사용자를 조회하여 만족하는 사용자가 존재할 경우 사용자의 정보를 이용하여 세션을 생성하고, 사용자가 존재하지 않을 경우 뒤로돌아가게된다.

     

     

     

     

     

    4. 로그아웃 페이지(logout.jsp) 작성

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	session.invalidate();	// 세션 제거
    %>
    <script>
    	alert('로그아웃 되었습니다');
    	location.href='login.jsp';
    </script>

     

     

     

    사용자 정보 입력

     

     

    로그인 성공시, 유저 사용자를 세션에 저장하여 로그인 상태를 유지한다. 

     

     

    로그아웃 버튼 클릭시, 세션을 제거하한다.

     

     

     

     

     

    728x90

    '프로그래밍 > JSP' 카테고리의 다른 글

    Java Beans 활용하여 로그인 만들기(1)  (0) 2022.11.27
    JSP 회원가입 만들기  (0) 2022.11.26
    AJAX  (0) 2022.11.22
    세션(session)  (0) 2022.11.21
    쿠키(cookie)  (0) 2022.11.18

    댓글

Designed by Tistory.