티스토리 뷰

Spring&Spring Boot/JSP

Session

on1ystar 2019. 1. 24. 16:55
728x90
반응형
본 글의 목적은 제가 공부한 내용을 바탕으로 정리하면서 저와 같이 공부하시는 분 들을 위함입니다
때문에 부족한 부분이 있을 수 있고, 잘못된 부분이 있을 수 있습니다. 
만약 있을 경우, 생각을 고칠 수 있도록 저에게 알려주시면 정말 감사하겠습니다 !!


세션은 쿠키와 상당히 밀접한 관계입니다. 따라서 서론은 생략하고 정의와 차이점을 시작으로 공부해 보겠습니다.

(참고 : Cookie)

Session ?



세션도 쿠키와 마찬가지로 http 프로토콜의 약점을 보안하기 위한 방법입니다. 쿠키와 마찬가지로 연결유지를 위한 수단인데,

중요한 차이점은, 쿠키는 연결정보를 클라이언트에 저장하는 반면 세션은 서버에 저장합니다.

이로인해 둘의 특징이 갈리게 됩니다.

▶ 서버보다는 개인 PC를 사용하는 클라이언트가 해킹당할 위험이 더 크기때문에 서버에 정보를 저장하는 세션이 쿠키보다 보안성에 있어서 우월합니다.

 다만 속도에 있어서는 클라이언트가 브라우저에 접속할 때 해당 브라우저에 저장되어 있는 쿠키를 이용하는 것이 더 빠릅니다. 하지만 그 차이는 미미합니다.

그렇다면 세션만 사용하면 되지 왜 쿠키를 사용할까요 ?

세션은 서버에 정보를 저장하기 때문에 서버의 리소스를 사용합니다. 이 리소스들은 서버의 성능에 직관되는 자원들이고 이를 남용하게 되면 서버 입장에서 상당히 부담스럽고, 여차하면 성능의 저하까지 이를 수 있기 때문에 세션이 좋다고 여기저기 막 사용할 수 없는 노릇입니다.


Session 구현



login.jsp

1
2
3
4
5
6
7
8
9
<%
    if(session.getAttribute("userID"!= null)
        response.sendRedirect("loginOk.jsp");
%>
    <form action="loginCon" method="post">
        ID : <input type ="text" name="userID"><br>
        PW : <input type ="password" name="userPW"><br>
        <input type="submit" value="login">
    </form>
cs

LoginCon.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@WebServlet("/loginCon")
public class LoginCon extends HttpServlet {
 
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
        PrintWriter out = response.getWriter();
        
        String userID = request.getParameter("userID");
        String userPW = request.getParameter("userPW");
        
        out.print("userID : " + userID);
        out.print("userPW : " + userPW);
        
        HttpSession session = request.getSession();
        session.setAttribute("userID", userID);
        
       response.sendRedirect("loginOk.jsp");
    }
 
cs

쿠키와 다른점으로는 HttpSession 객체를 생성한다는 점입니다. 그리고 session을 검사할 때 배열과 반복문을 사용하지 않아 비교적 간단합니다.(참고로 post방식을 사용했지만 doGet에서 코딩을 하는 이유는 저번에도 말했듯이 doPost 메소드에서 doGet(request, response)를 통해 객체를 파라미터로 전달했기 때문입니다.)


loginOk.jsp

1
2
3
4
5
6
7
8
<%
    session = request.getSession();
    out.print("userID : " + Session.getAttribute("userID"+ "<br>");
%>
 
<form action="logoutCon" method="post">
    <input type="submit" value="logout">
</form>
cs

session 객체를 통해 세션정보를 출력해 주고 세션을 삭제하기 위한 logout을 만들어 주겠습니다.


logoutCon.java

1
2
3
4
5
6
7
8
9
10
11
@WebServlet("/logoutCon")
public class LoginCon extends HttpServlet {
 
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
       HttpSession session = request.getSession();
       session.invalidate();
        
       response.sendRedirect("login.jsp");
    }
cs

세션을 삭제하는 방법은 간단하게 invalidate() 함수를 호출해 주면 됩니다.

728x90
반응형

'Spring&Spring Boot > JSP' 카테고리의 다른 글

Cookie  (0) 2019.01.23
Servlet 데이터 공유  (1) 2019.01.22
JSP 내장객체  (0) 2019.01.21
JSP request, response  (0) 2019.01.20
JSP 스크립트  (0) 2019.01.19
댓글