세션(Session)을 사용하면 쿠키와 비슷하게 클라이언트의 상태값을 저장합니다. 

다만 차이점은 쿠키가 클라이언트측에 저장이 되는거라면 세션은 서버측에 저장이 된다는 점입니다.

세션도 쿠키와 마찬가지로 생성이되어야 사용할 수 있습니다.

그리고 session기본객체를 이용해서 사용이 가능합니다.

참고로 JSP가 제공해주는 기본객체는 session 말고도 몇가지 더 있다는거 아실겁니다.


1. 세션을 생성해봅시다.

sessionInit.jsp

.....????

맞습니다. 세션은 생성되었습니다.

세션은 자동으로 생성됩니다.

세션을 사용할 필요가 없다면 하단의 그림과 같이 page디렉티브의 session속성값을 false로 주시면 됩니다.


page디렉티브의  session속성값이 기본값으로 true로 세팅이 되어있어서 굳이 3번라인 처럼 추가를 하지 않아도 세션은 생성이 됩니다.


2. 세션 사용하기

setAttribute(String name, Object value), getAttribute(String name)를 이용해서 세션의 데이터를 세팅하고 얻어올 수 있습니다.

removeAttribute(String name)메소드를 이용해서 이름이 name인 속성을 삭제할 수도 있습니다.

invalidate()메소드를 이용하면 세션의 모든 데이터를 삭제합니다.

getId()메소드를 이용하면 생성된 세션의 고유한 아이디를 얻을 수 있습니다.


세션을 이용해서 간단하게 로그인을 하는 페이지를 만들어보겠습니다.

login.html

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
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 화면</title>
</head>
<body>
    <h1>로그인을 해주세요</h1>
    <form action="loginOk.jsp">
        <table>
            <tr>
                <td>아이디 : <input type="text" name="id"></td>
            </tr>
            <tr>
                <td>비밀번호 : <input type="password" name="pw"></td>
            </tr>
            <tr>
                <td>
                    <input type="submit" value="로그인"> 
                    <input type="reset" value="취소">
                </td>
            </tr>
        </table>
    </form>
</body>
</html>
cs


loginOk.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"%>
<%
    String id = request.getParameter("id");
    String pw = request.getParameter("pw");
    
 
    
    if(id.equals("sogom") && pw.equals("1234")){
        session.setAttribute("id"id);
        response.sendRedirect("welcome.jsp");
    }else{
        response.sendRedirect("login.html");
    }
%>
cs

welcome.jsp

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>어서오세요~</title>
</head>
<body>
    <%=session.getAttribute("id")%>님 환영합니다~
</body>
</html>
cs

결과화면은 따로 올리지 않겠습니다.

login.html -> loginOk.jsp -> welcome.jsp 순서로 실행이 됩니다.

login.html에서 아이디와 비밀번호를 입력하고 로그인을 하게되면 loginOk.jsp는 아이디와 비밀번호를 검사하여

맞으면 세션에 "id"라는 이름에 값으로 웹 브라우저로 부터 입력된 id를 저장합니다.

그리고 welcome.jsp로 이동해서 세션에 저장되어있는 id를 사용해서 로그인이 되었음을 확인합니다.


로그인을 했으니 로그아웃도 해야죠~

로그아웃을 처리할때에는 세션을 다 지워버리면 되니까 invalidate()를 사용하면 되겠습니다.

welcome.jsp의 body태그안에 

1
<a href="logout.jsp"><button>로그아웃</button></a>


위와 같은 소스를 추가해주시고

아래와 같이 logtout.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"%>
<%
    session.invalidate();
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>빠이빠이~</title>
</head>
<body>
    <h1>로그아웃 되었습니다.</h1>
</body>
</html>
cs
4번라인에 invalidate()메소드를 실행했습니다.


로그인이 완료된 welcome.jsp부터 확인해보면~


로그아웃버튼을 클릭~



로그아웃되었네요~


DB랑 연동을 하면 그럴듯한 로그인을 할 수 있을거 같네요 ㅎ