20.03 ~ 20.08 국비교육/JSP

세션 사용 로그인 예제

찹키리 2020. 5. 6. 10:35

<세션 사용 로그인의 흐름>

 

1. 로그인 폼
1)세션 체크(로그인을 했는지, 안했는지)
2)T 메시지 - 이동(결과 페이지)
3)F 로그인 폼 뷰

 

--- 전송 --->

2. 로그인 처리
0)한글 인코딩
1)받는다
2)Java 메소드 call

3. DAO
1)SQL 실행
2)DBCP사용해 연동객체 대여
3)쿼리 사용, 결과 도출
4)연동객체 반납
5)결과를 가공(비즈니스 메소드 처리)
6)로그인 처리 페이지로 결과 리턴(T/F)

 

<--- 응답 ---

 

4. 로그인 처리
T: 세션 생성 - 메시지 - 이동(결과 페이지)
F: 경고 메시지 - 로그인 폼 이동(back)

5. 결과 페이지
1)세션 체크
T: 뷰 처리
F: 경고 메시지 - 이동(back)

 

 

 

 

 

<예제>

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<%
    String id = (String)session.getAttribute("idkey");
    if (id != null) {
%>
 
<script>
    alert("로그인 되었습니다.");
    location.href = "sessionLoginOK.jsp";
</script>
 
<%
    }
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor = "#996600" topmargin = "100">
    <h2 align = "center">Session 로그인</h2>
    <table width = "75%" border = "1" align = "center" bordercolor = "#660000" bgcolor = "#FFFF99">
    <tr bordercolor = "#FFFF99">
    <td height = "190" colspan = "7">
    <form method = "post" action = "sessionLoginProc.jsp">
    <table width = "50%" border = "1" align = "center" cellspacing = "0" cellpadding = "0">
    <tr bordercolor = "#FFFF66">
    <td colspan = "2"><div align = "center">Log in</div></td>
    </tr>
    
    <tr>
    <td width = "47%"><div align = "center">ID</div></td>
    <td width = "53%"><div align = "center"><input name = "id"></div></td>
    </tr>
    
    <tr>
    <td><div align = "center">PWD</div></td>
    <td><div align = "center"><input name = "pwd"></div></td>
    </tr>
    
    <tr>
    <td colspan = "2"><div align = "center">
    <input type = "submit" value = "login"> &nbsp;
    <input type = "reset" value = "reset">
    </div>
    </td>
    </tr>
    
    </table>
    </form>
    </td>
    </tr>
    </table>
</body>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

1. 로그인 폼

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id = "regMgr" class = "chapter12.RegisterMgr"/>
<%
    String id = "";
    String pwd = "";
    if(request.getParameter("id"!= null)
        id = request.getParameter("id");
    
    if(request.getParameter("pwd"!= null)
        pwd = request.getParameter("pwd");
    
    if(regMgr.loginRegister(id, pwd)) {
        session.setAttribute("idkey", id);
%>
 
<script>
    alert("로그인 되었습니다.");
    location.href = "sessionLoginOK.jsp";
</script>
<% } else { %>
 
<script>
    alert("로그인 되지 않았습니다.");
    location.href = "sessionLogin.jsp";
</script>
<% } %>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

2. 로그인 처리 페이지

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package chapter12;
 
import java.sql.*;
 
public class RegisterMgr {
    
    private DBConnectionMgr pool;
    
    public RegisterMgr() {
        try {
            pool = DBConnectionMgr.getInstance();
        } catch(Exception e) {
            System.out.println("Error: 커넥션 연결 실패");
        }
    }
    
    public boolean loginRegister(String id, String pwd) {
        Connection con = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        boolean loginCon = false;
        
        try {
            con = pool.getConnection();
            String query = "select count(*) from tblRegister where id = ? and pwd = ?";
            
            stmt = con.prepareStatement(query);
            stmt.setString(1, id);
            stmt.setString(2, pwd);
            rs = stmt.executeQuery();
            
            if(rs.next() && rs.getInt(1> 0) {
                loginCon = true;
            }
        } catch (Exception ex) {
            System.out.println("Exception" + ex);
        } finally {
            pool.freeConnection(con, stmt, rs);
        }
        
        return loginCon;
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

3. Java 메소드 페이지

: SQL 요청 및 결과 반환

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<%
    String id = (String)session.getAttribute("idkey");
    if(id == null) {
%>
 
<script>
    alert("로그인 되지 않았습니다.")
    location.href = "sessionLogin.jsp";
</script>
 
<% } %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Simple Login</title>
</head>
<body bgcolor = "#996600" topmargin = "100">
    <table width = "75%" border = "1" align = "center" cellpadding = "1" cellspacing = "1"
    bordercolor = "#660000" bgcolor = "#FFFF99">
    <tr bordercolor = "#FFFF99">
    <td height = "190" colspan = "7">
    <table width = "50%" border = "1" align = "center" cellspacing = "0" cellpadding = "0">
    <tr bordercolor = "#FFFF66">
    <td colspan = "2"><div align = "center">Log On Page</div></td>
    </tr>
    
    <tr>
    <td><div align = "center">
        <strong><%= id %></strong>
        님이 로그인 하셨습니다.
    </div></td>
    <td><div align = "center">
        <a href = "sessionLogout.jsp"><strong>LOG OUT</strong></a>
    </div></td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
</body>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

4. 뷰 페이지

 

 

 

1
2
3
4
5
6
7
8
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% session.invalidate(); %>
 
<script>
    alert("로그아웃 되었습니다.");
    location.href = "sessionLogin.jsp";
</script>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

5. 로그아웃 페이지

 

 

 

 

-실행

 

 

로그인 폼

 

 

 

 

로그인 성공 메시지

 

 

 

 

뷰 페이지 이동

 

 

 

 

로그아웃

 

 

 

 

테이블에 존재하지 않는 id와 패스워드

 

 

 

 

경고 메시지

 

 

 

 

다시 로그인 폼으로 이동