[JSP] 16. 세션(Session) 총 정리

(14) 세션 (API 사용)

sessionform.jsp :  13번과 동일하다.

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"%>
 
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 정보 입력</title>
</head>
<body>
<%
    String sessionid=null;
    if(session.getAttribute("sessionid")!=null){
    sessionid= (String)session.getAttribute("sessionid"); //항상 getAttribute는 오브젝트니까 형변환
    }
    else{
        sessionid=" "//초기값을 null이라면 공백으로 보이도록
    }
%>
    <h1> 로그인 정보 입력</h1>
    <form action="sessionset.jsp" method="post">
        아이디: <input type=text name=id value="<%=sessionid%>"<!-- 로그인한 적이없으니까 null -->
                                              <!-- getsession까지 실행하고 sessionform으로 오면 아이디가 저장되있다. -->
        비번: <input type=password name=pw>
        <input type=submit value=로그인>
    </form>
</body>
</html>



sessionset.jsp : html에서 값을 전달받아서, Attribute를 이용해서 서버에 저장한다.


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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" session="true"%>
                <!-- 페이지지시자의 session은 true가 default이기떄문에 항상 사용가능하고, 생략가능하다. -->
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8">
<title> setsession 추가</title>
</head>
<body>
<%
    //out.println(session.toString()); //를 통해 session이, null이아닌 값을 반환함으로써 만들어져있다는 것을 확인할 수 있다.
    String id=request.getParameter("id");
    String pw=request.getParameter("pw");
    
    //
    session.setAttribute("sessionid", id);
    session.setAttribute("sessionpw", pw);
    
    
%>
    <!--  
        아이다와 패스워드가 jsp에서 넘겨받은 파라미터이다. 
        이를 usbBean타입으로 객체를 만들어서 풀어보기.
        
        public class LoginVO{
            private String id;
            private String pw;
            setter/getter메소드
        }
     -->
</body>
</html>



sessionget.jsp : 아이디의 받아오는 값과 pw의 받아오는 공유값이 있다면,  로그인아이디: 값을 대문자로 출력한다.

  로그인암호: 값을 대문자로 출력한다.



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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8">
<title> getsession 조회 </title>
<script src='jquery-3.2.1.min.js'></script>
<script>
    $(document).ready(function(){
        $('#logout').on("click",function(){
                location.href="sessionremove.jsp"; //내장객체를 통해 이동
        });
    });
</script>
</head>
<body>
<h1>
<!-- 버튼이나 링크를 통해 이동하지않고 자동으로 이동하게하려면  jsp:foward 를 쓰면된다 -->
    <%
    if(session.getAttribute("sessionid")!=null && session.getAttribute("sessionpw")!=null){
    %>
    로그인 아이디(세션):
    <%=((String)session.getAttribute("sessionid")).toUpperCase() %><br>
    로그인 암호(세션):
    <%= session.getAttribute("sessionpw") %><br>
</h1>
    <a href="sessionremove.jsp">로그아웃하러 가기</a> 
    <input type=button value=로그아웃 id=logout>
    
    <% 
    }
    else{
    %>
    <jsp:forward page="sessionform.html"/>
    
    <% } %>
    
</body>
</html>



 로그아웃 링크를 통해 세션을 제거하고 로그인창으로 a태그이동한다.

 

 로그아웃버튼을 따로 또 만들어서 removesession.jsp로 이동하도록한다. (jquery)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
    session.removeAttribute("sessionid");
    session.removeAttribute("sessionpw");
    //session.invalidate(); 전체삭제
    %>
    <jsp:forward page="/sessionform.html" /> 
    <!--  request.setAttribute("",)와 같이 공유  -->
</body>
</html>



추가적으로 sessionform.jsp를 통해 한 번 로그인한 값을 다시 로그인창으로 되돌아갔을때, 

접속했던 아이디가 입력창에 저장되도록 만듭시다. (조건문을 통해 초기값을 null이라면 공백으로 보이도록)

==> html실행 => set에서 get을 수기로 실행 => 로그아웃실행시 => 수기로 get실행하면 로그아웃되는걸 확인할 수 있다.