로그인 페이지

[경로: src/main/webapp/login/login.jsp]

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:include page="/inc/top.jsp" />
 
<div class="container">
    <h1>Login</h1>
    <br><br>
    <form name="loginF" method="post" action="loginEnd.jsp">
        <table border="1" style="width:60%; margin:auto">
            <tr>
                <th width="20%">아이디</th>
                <td>
                <input type="text" name="id" required>
                </td>
            </tr>
            <tr>
                <th width="20%">비밀번호</th>
                <td>
                <input type="password" name="pw" required>
                </td>
            </tr>
            <tr>
                <td colspan="2" style="text-align:center">
                    <label for="saveId">
                        <input type="checkbox" name="saveId" id="saveId" style="width:5%">아이디 저장
                    </label>
                    &nbsp;&nbsp;&nbsp;&nbsp;
                    <button> 로그인 </button>
                </td>
            </tr>
        </table>
    </form>
</div>
 
<jsp:include page="/inc/foot.jsp" />
cs

 

<form action="loginEnd.jsp"> → loginEnd.jsp를 만들자.

 

[경로: src/main/webapp/login/loginEnd.jsp]

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="member.model.*" %> <!-- MemberDAO, MemberVO 포함 파일 -->
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
 
if(id==null || pw==null || id.trim().isBlank() || pw.trim().isBlank()){
    response.sendRedirect("login.jsp");
    return;
}
MemberDAO userDao = new MemberDAO();
int result = userDao.loginCheck(id, pw);
//id가 없을 경우 -1, id는 있지만 비밀번호가 틀릴 경우 -2, 인증받은 경우 1 반환
 
//회원인증 성공시 세션에 id 저장
if(result>0){
    //session내장객체: HttpSession타입
    session.setAttribute("loginId", id);
    //하나의 브라우저를 사용하는 동안 or 세션 타임아웃(30분이 default) 되기 전까지
    //세션에 저장한 정보는 계속 유지된다.
}
String msg = (result>0)? "환영합니다!! " + id + "님^^":"아이디 또는 비밀번호가 일치하지 않습니다.";
String loc = (result>0)? "../index.jsp":"javascript:history.back()";
 
%>
<script>
    alert('<%=msg %>');
    location.href='<%=loc %>';
</script>
cs

 

1
session.setAttribute("loginId", id);
cs

이 부분을 top.jsp에서 getAttribute로 꺼내자.

 

[경로: src/main/webapp/inc/top.jsp]

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    //컨텍스트명 구하기
    String ctx = request.getContextPath(); //"/MyWeb" 반환
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MyWeb</title>
<link rel="stylesheet" type="text/css" href="<%=ctx %>/css/style.css">
<!-- include하는 jps 파일의 모든 링크는 절대경로(웹 어플리케이션. 컨텍스트를 기준)로 해야 함 -->
</head>
<body>
<!-- 추가 ========================================================= -->
<%
    String loginId = (String)session.getAttribute("loginId");
    System.out.println("loginId: " + loginId);
%>
<!-- ============================================================= -->
<div class="wrap">
    <header>
    <!-- top menu: 수정 -->
        <ul class="topMenu">
            <li><a href="<%=ctx %>/index.jsp">Home</a></li>
            <% if(loginId==null){ %>
            <li><a href="<%=ctx %>/login/login.jsp">로그인</a></li>
            <% }else%>
            <li><a href="#"><%=loginId %>님 로그인 중...</a></li>
            <li><a href="<%=ctx %>/login/logout.jsp">로그아웃</a></li>
            <% } %>
            <li><a href="<%=ctx %>/member/join.jsp">회원가입</a></li>
            <li><a href="<%=ctx %>/board/input.jsp">게시판 글쓰기</a></li>
            <li><a href="<%=ctx %>/board/list.jsp">게시판 글목록</a></li>
        </ul>
    </header>
cs
  • top.jsp에서 session에 key값("loginId")으로 저장되어 있는 아이디를 getAttribute() 메서드로 꺼냈다.
  • 로그인하기 전 or 로그인 실패시 상단 메뉴는 '로그인'으로 보이고, 로그인이 성공하면 id님 로그인 중...과 로그아웃이 보이게 설정하였다.

[id: hong으로 로그인]

로그인 성공
"hong님 로그인 중..." 으로 상단바 변경됨 / 로그아웃 추가됨


로그아웃 구현

[경로: src/main/webapp/login/logout.jsp]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
/*loginEnd.jsp
String id = request.getParameter("id");
session.setAttribute("loginId", id);*/
 
//1. 세션에 저장된 특정 세션변수를 삭제하는 방법- removeAttribute("세션변수")
//session.removeAttribute("loginId");
//response.sendRedirect("../index.jsp");
 
//2. 모든 세션변수를 삭제하는 방법 (권장)- invalidate() 세션에 저장된 것들을 모두 무효화시킴
session.invalidate();
response.sendRedirect("../index.jsp");
%>
cs

 

세션에 저장된 변수를 삭제하는 방법

  1. session.removeAttribute("세션변수");
    세션에 저장된 특정 세션변수만 삭제한다.
  2. session.invalidate();
    세션에 저장된 모든 세션변수들을 무효화시킨다. (권장)

세션과 쿠키

세션(Session)

  • 쿠키를 기반으로 동작하지만, 사용자 정보를 클라이언트 측이 아닌 서버측에서 관리한다.
  • 일정 시간동안(default: 30분) 같은 사용자(같은 브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술
  • 일정 시간: 방문자가 웹 브라우저를 통해 웹서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점
  • 즉, 방문자가 웹서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다.
  • ex) 쇼핑몰 장바구니- 사용자가 상품을 주문할 때마다 그 사용자에 대한 상품을 세션으로 저장해두면 나중에 한 번에 구매한 물품을 세션에 저장된 정보에서 불러올 수 있음
  • 쿠키에 비해 보안성이 좋지만, 세션은 서버 자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원이 상당하다.

 

세션의 동작 원리

세션의 로그인

사용자가 loginId, password 정보를 요청 메세지에 담아 서버에 전달하면 서버에서 회원 저장소를 통해 해당 사용자가 맞는지 확인한다.

 

세션 생성

추정 불가능한 세션id를 생성해야 하므로 UUID를 생성한다.

생성된 세션id와 세션에 보관할 값인 memberA를 서버의 세션 저장소에 보관한다.

이때 세션 저장소는 key와 value로 구성되어 있으며 key sessionId이고 value객체(Object)로 이루어져 있다.

세션 저장소의 구조: key SessionId value Object

 

세션 id를 응답 쿠키로 전달

서버는 클라이언트에 mySessionId라는 이름으로 세션id만 쿠키에 담아 전달하고 클라이언트는 받은 mySessionId를 쿠키 저장소에 보관한다.

쿠키의 구조: key(name) mySessionId value(id) sessionId

따라서 클라이언트와 서버는 결국 쿠키로 연결이 되어야 한다.

 

여기서 중요한 것은 서버는 세션id만 클라이언트에게 전달하므로 쿠키에는 중요한 회원정보 등 회원과 관련된 아무런 정보도 담겨있지 않다는 것이다. 오직 추정 불가능한 세션 id만 쿠키를 통해 클라이언트에 전달한다.

이때 주의해야할 점이 있는데 바로 쿠키와 세션저장소의 key와 value를 헷갈리지 말아야 한다는 것이다. 세션 저장소의 key값인 sessionId가 쿠키에서는 value값이 된다.

  key value
세션 저장소의 구조 SessionId Object
쿠키의 구조 mySessionId SessionId

 

 

클라이언트의 세션 id 쿠키 전달

클라이언트는 요청시에 항상 mySession 쿠키를 전달해 서버에서는 해당 쿠키의 정보로 세션 저장소를 조회해 로그인시에 보관한 세션 정보를 사용한다.

 


세션 테스트

[경로: src/main/webapp/login/sessionTest.jsp]

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:include page="/inc/top.jsp" />
 
<div class="container">
    <h1>Session Test</h1>
    <h2 style="color:red">JSessionId: <%= session.getId() %></h2>
    <hr color="blue">
    <br>
    <h2>세션에 저장된 모든 변수를 출력해보자</h2>
    <%
    //서블릿의 경우: HttpSession session = request.getSession();
    //JSP의 경우: 내장객체 => session
    java.util.Enumeration<String> en = session.getAttributeNames();
    //컬렉션-iterator처럼 반복문 돌려서 꺼내야됨
    while(en.hasMoreElements()){//요소가 있는지 질문(커서이동)
        String key = en.nextElement(); //다음 요소를 꺼냄
        Object val = session.getAttribute(key); //값은 Object
        %>
        <h3><%=key %> ==> <%=val %></h3>
        <%
    }
    %>
</div>
 
<jsp:include page="/inc/foot.jsp" />
cs

 

hong으로 로그인해서 sessionTest.jsp를 실행해보자.

실행 결과

JSessionId란?
  • 톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키(key)
  • 상태를 저장하기 위해서 톰캣은 JSessionId쿠키를 클라이언트에 발급해주고 이 값을 통해 세션을 유지할 수 있도록 한다.
  • 이전에 접근했던 사용자인지 처음 접근하는 사용자인지 구별하기 위해서 JSessionId를 사용한다.

 


쿠키(Cookie)

  • HTTP의 일종으로 사용자가 어떤 웹 사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일
  • HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있다.
  • 세션이 웹 서버에 사용자 정보를 저장하는 반면, 쿠키는 클라이언트(사용자 PC)에 저장한다.
  • 속도는 세션보다 빠르지만, 보안에 취약하다.

 

쿠키의 동작 원리

쿠키 생성

사용자가 로그인을 하기 위해 아이디와 비밀번호를 입력해 서버에 요청하면, 서버는 로그인 정보를 회원 저장소에서 찾아 memberId를 key로 하는 Cookie를 생성해 웹브라우저에게 응답한다.

 

쿠키의 구조: key memberId value 1

 

웹브라우저는 서버의 응답 메시지를 받아 Cookie를 쿠키 저장소에 저장한다.

 

쿠키 전달

Cookie를 쿠키 저장소에 저장했으니, 이제는 서버에 요청을 할 때마다 쿠키 저장소에서 쿠키를 찾아서 요청메세지에 담는다. 여기서 사용하는 쿠키는 세션 쿠키로 로그인 상태에서, 웹브라우저가 종료되지 않은 상태라면 계속 유지된다.

 

서버로 보내는 모든 요청 메세지에 쿠키 정보가 자동으로 포함된다. 따라서 서버는 요청을 한 클라이언트가 누구인지 정보를 알 수 있다. 하지만 쿠키를 탈취당한 경우 심각한 보안 문제가 발생한다.

위의 쿠키의 key는 memberId이지만 만약 쿠키의 key가 주민등록번호나 신용카드 번호라면 심각한 상황에 놓이게 된다. 따라서 이러한 경우 쿠키보다는 Session을 사용하는 것이 안전하다.

 


쿠키 테스트

[경로: src/main/webapp/login/cookieTest.jsp]

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*, java.text.*" %>
<jsp:include page="/inc/top.jsp" />
 
<div class="container">
    <h1>Cookie Test</h1>
    <h2>쿠키에 정보를 저장해보자- Cookie 클래스 활용</h2>
    <%
    //1. 쿠키 생성 절차
    //    [1] 쿠키 생성
    Cookie ck = new Cookie("visitId""kim"); //key, value형태로 저장(String타입만 가능)
    
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd_hh:mm:ss");
    String time = sdf.format(date);
    Cookie ck2 = new Cookie("visitTime", time);
    //    [2] 쿠키 속성 설정(유효기간, 도메인, 경로, ...)
    ck.setMaxAge(60*60*24*7); //7일 동안 방문자 id를 기억(7일간 유효)
    ck2.setMaxAge(60*60*24*3); //date는 3일간 유효
    //setMaxAge(0);=> 쿠키 삭제
    
    //id를 꺼내 쓸 수 있는 접근경로 지정
    //기본경로: /login/cookieTest.jsp
    ck.setPath("/"); //MyWeb 어디서든 꺼낼 수 있게(/localhost:9090)
    //    [3] 쿠키를 클라이언트에 전송
    //응답 메시지 헤더에 쿠키가 포함되어 클라이언트에 전달됨
    response.addCookie(ck); 
    response.addCookie(ck2);
    out.println("<h3>쿠키 저장 완료</h3>");
    
    //2. 쿠키를 꺼내 사용하는 절차
    %>
    <hr>
    <a href="cookieList.jsp"><h2>쿠키 꺼내러 가기</h2></a>
</div>
 
<jsp:include page="/inc/foot.jsp" />
cs

 

[경로: src/main/webapp/login/cookieList.jsp]

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:include page="/inc/top.jsp" />
 
<div class="container">
    <h1>쿠키 목록</h1>
    <%
    /*쿠키가 전송되면 웹브라우저는 저장된 쿠키를
    매번 서버에 요청을 보낼 때마다 가지고 간다.
    그러면 웹서버는 브라우저가 전송한 쿠키를
    이용해서 필요한 작업을 수행한다.*/
    Cookie[] cks = request.getCookies();
    if(cks!=null){
        for(Cookie ck:cks){
            String key = ck.getName(); //쿠키 key값을 반환
            String val = ck.getValue(); //쿠키 value값을 반환
            %>
            <h3><%=key %> ==> <%=val %></h3>
            <%
        }
    }
    %>
</div>
 
<jsp:include page="/inc/foot.jsp" />
cs

 

id=lala로 로그인하여 Test

실행 결과

 


아이디 저장 구현

[경로: src/main/webapp/login/loginEnd.jsp] (수정)

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="member.model.*" %> <!-- MemberDAO, MemberVO 포함 파일 -->
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
//추가(3/4)
String saveId = request.getParameter("saveId"); //아이디 저장 체크박스
System.out.println("saveId: " + saveId); //체크: on / 체크X: null
 
if(id==null || pw==null || id.trim().isBlank() || pw.trim().isBlank()){
    response.sendRedirect("login.jsp");
    return;
}
MemberDAO userDao = new MemberDAO();
int result = userDao.loginCheck(id, pw);
//id가 없을 경우 -1, id는 있지만 비밀번호가 틀릴 경우 -2, 인증받은 경우 1 반환
 
//회원인증 성공시 세션에 id 저장
if(result>0){
    //session내장객체: HttpSession타입
    session.setAttribute("loginId", id);
    //하나의 브라우저를 사용하는 동안 or 세션 타임아웃(30분이 default) 되기 전까지
    //세션에 저장한 정보는 계속 유지된다.
    
//추가(3/4)
    Cookie ck = new Cookie("uid", id);
    if(saveId!=null){
        //saveId에 체크했다면 ==> 쿠키에 "uid"라는 키값으로 로그인한 사람의 id를 저장한다, 유효시간 7일 설정
        ck.setMaxAge(7*24*60*60);
    }else{
        //saveId에 체크하지 않았다면 ==> 쿠키 삭제
        ck.setMaxAge(0);
    }
    ck.setPath("/"); //경로를 MyWeb의 모든 사이트로 줌
    //response 헤더에 쿠키 추가
    response.addCookie(ck);
    //쿠키 꺼내기 ==> login.jsp에서 한다.
}
String msg = (result>0)? "환영합니다!! " + id + "님^^":"아이디 또는 비밀번호가 일치하지 않습니다.";
String loc = (result>0)? "../index.jsp":"javascript:history.back()";
 
%>
<script>
    alert('<%=msg %>');
    location.href='<%=loc %>';
</script>
cs
  • String saveId = request.getParameter("saveId");
    아이디 저장 체크박스의 String 값을 저장 → 체크가 되어 있으면 on, 체크가 되어 있지 않으면 null을 반환
  • Cookie ck = new Cookie("uid", id);
    uid라는 key값으로 id를 쿠키에 저장 → 조건문으로 체크(on)라면 유효기간을 7일을 주고, 체크X(null)라면 유효기간 0을 줘서 쿠키를 삭제한다.
  • ck.setPath("/"): 현재 폴더가 src/main/webapp/login/loginEnd.jsp이므로 /login에 해당하는 사이트들에만 세션이 적용된다. 전체 사이트에 적용하고 싶다면 setPath에 "/"를 부여하면 된다.

loginEnd.jsp에서 조건문에 따라 쿠키를 저장했고, login.jsp에서 쿠키를 꺼내면 된다.

 

[경로: src/main/webapp/login/login.jsp] (수정)

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
55
56
57
58
59
60
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:include page="/inc/top.jsp" />
 
<div class="container">
    <h1>Login</h1>
    <br><br>
    <!-- 추가(3/4) -->
    <%
    //쿠키 꺼내기
    boolean saveId = false;
    String uid = "";
    Cookie[] cks = request.getCookies();
    if(cks!=null){
        for(Cookie ck:cks){
            String key = ck.getName();
            if(key.equals("uid")){
                saveId = true//쿠키가 있음
                uid = ck.getValue(); //저장한 uid값
                break//반복문 벗어나기
            }
        }
    }
    %>
    <!-- ======== -->
    
    <form name="loginF" method="post" action="loginEnd.jsp">
        <table border="1" style="width:60%; margin:auto">
            <tr>
                <th width="20%">아이디</th>
                <td>
                <!-- 수정(3/4) -->
                <input type="text" name="id" required value="<%=uid %>">
                </td>
            </tr>
            <tr>
                <th width="20%">비밀번호</th>
                <td>
                <input type="password" name="pw" required>
                </td>
            </tr>
            <tr>
                <td colspan="2" style="text-align:center">
                    <label for="saveId">
                        <!-- 수정(3/4) -->
                        <input type="checkbox" name="saveId" id="saveId"
                        <%if(saveId){ %>
                            checked
                        <%%>
                        style="width:5%">아이디 저장
                    </label>
                    &nbsp;&nbsp;&nbsp;&nbsp;
                    <button> 로그인 </button>
                </td>
            </tr>
        </table>
    </form>
</div>
 
<jsp:include page="/inc/foot.jsp" />
cs

lala로 로그인
로그아웃 후 => value값: <%=uid %> / 아이디 저장 체크박스(checked)

 


게시판 글쓰기 작성자 자동부여

게시판 글쓰기의 작성자(Writer) 값을 로그인한 사람의 아이디값으로 부여해보자.

 

[경로: src/main/webapp/board/input.jsp] (수정)

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:include page="/inc/top.jsp" />    
 
<!-- bbs관련 js 파일 참조 -->
<script src="../js/bbs.js"></script>
<!-- loginEnd.jsp
String id = request.getParameter("id");
//회원인증 성공시 세션에 id 저장
if(result>0){
    session.setAttribute("loginId", id);
} -->
<!-- 추가(3/4) -->
<%
String loginId = "";    
loginId = (String)session.getAttribute("loginId");
%>        
<!-- content -->
<div class="container">
    <h1>Board Write Page</h1>
    <br><br>
    <form name="bbsF" method="post" action="insert2.jsp" onsubmit="return bbs_check()">
        <table border="1">
            <tr>
                <th>작성자</th>
                <td>
                    <!-- 수정(3/4) -->
                    <input type="text" name="writer" id="writer" readonly
                    <%if(loginId!=null){ %>
                        value = "<%=loginId %>"
                    <%%>
                    placeholder="Wrtier">
                </td>
            </tr>
        </table>
    </form>
</div>
 
<jsp:include page="/inc/foot.jsp" />
cs
  • loginId = (String)session.getAttribute("loginId");
    loginEnd.jsp에서 회원인증 성공시 id를 "loginId"로 세션에 저장하였는데, 그 값을 여기에서 String loginId 값으로 꺼낸다.
  • if(loginId!=null) value = "<%=loginId %>"
    String loginId값이 null이 아니라면 작성자(Writer)의 값에 loginId값을 넣고, readonly 속성을 부여하여 수정하지 못하게 막는다.

lala로 로그인시 => 작성자에 lala 값이 들어와있고, 수정이 불가능하다.

 


로그인 여부 체크

[경로: src/main/webapp/login/loginCheckModule.jsp]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 로그인 여부를 체크하는 모듈. 세션에 저장된 loginId를 꺼내서 해당 값이 null이라면 return시킨다 -->
<%
String loginId = (String)session.getAttribute("loginId");
if(loginId==null){
    %>
    <script>
        alert('로그인해야 이용 가능합니다.');
        location.href = "<%=request.getContextPath()%>/login/login.jsp";
        /* 절대경로 */
        /* url에 쳐보기
        http://localhost:9090/MyWeb/board/insert2.jsp?title=test&writer=hong&content=test
        */
    </script>
    <%
    return;
}
%>
cs

url에 직접 게시판 입력값을 입력해서 들어올 때 막기 위해서는 로그인 여부를 체크하는 모듈을 만들어야 한다. 세션에 저장된 loginId가 null이라면 return시켜야 한다.

 

http://localhost:9090/MyWeb/board/insert2.jsp?title=test&writer=hong&content=test
location .href&nbsp; = &nbsp; "<%=request.getContextPath()%>/login/login.jsp" ;

 


insert2.jsp와 mypage.jsp에 loginCheckModule 추가하기

게시판에 글을 작성할 때 동작하는 코드인 insert2.jsp와 회원들만 들어올 수 있는 페이지인 mypage.jsp에 loginCheckModule을 추가하자.

 

[경로: src/main/webapp/board/insert2.jsp] (수정)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="/error.jsp" %>
<!-- 추가(3/4): 로그인 체크 모듈 include(소스를 포함시키자) -->
<%@include file = "/login/loginCheckModule.jsp" %>
<!-- ------------------------------------------- -->
 
<jsp:useBean id="vo" class="bbs.model.BbsVO" scope="page" />
 
<jsp:setProperty name="vo" property="*" />
 
<jsp:useBean id="dao" class="bbs.model.BbsDAO" scope="session" />
<%
int n = dao.insertBbs(vo);
response.sendRedirect("list2.jsp");
%>
cs

 

include 디렉티브 방식을 사용해서 loginCheckModule.jsp를 삽입하였다.

include 디렉티브 방식은 포함될 페이지의 소스코드를 포함시킨다. loginCheckModule.jsp의 코드가 실행되어야 하므로 디렉티브 방식을 사용했다.

 

[경로: src/main/webapp/login/mypage.jsp]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- ------------------------------------------- -->
<%@ include file="/login/loginCheckModule.jsp" %>
<!-- ------------------------------------------- -->
<jsp:include page="/inc/top.jsp" />
<div class="container">
    <h1>MyPage- 회원 인증 페이지</h1>
    <p style="color:red">
        회원들만 들어올 수 있는 페이지입니다.
        <br>
        회원 아이디: <%=loginId %>
    </p>
</div>
<jsp:include page="/inc/foot.jsp" />
cs

 

1) 로그인하지 않은 경우

 

2) 로그인한 경우

 

+ Recent posts