Archive

JSP - Cookie & Session

|


  1. Cookie

    • 쿠키는 웹브라우저가 보관하고 있는 데이터로 웹서버에 요청을 보낼때 함께 전송된다

    • 쿠키 동작 방식

      • 쿠키는 JSP 웹서버에서 생성하거나 JS를 사용해서 클라이언트 측에서 생성한다

      • 생성된 쿠키는 응답 데이터와 함께 전송된다

      • 웹 브라우저에서 쿠키를 저장소에 보관한다. 종류에 따라 메모리나 파일로 저장

      • 웹 브라우저는 저장된 쿠키를 요청이 있을시 웹 서버에 전송한다. 이 쿠키를 사용해서 웹 서버에서 필요한 작업을 수행한다.

    • 쿠키 특성

      • 특정 웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일로 4KB 이하로 생성된다

      • 개인의 정보는 되도록 쿠키에 저장하지 않는 것이 좋다

      • 보안문제로 웹 브라우저 자체에 쿠키 거부 기능을 설정할 수 있다

    • 쿠키 구성요소

      • 이름 : 각각 쿠키를 구별하는데 사용되는 이름
      • 값 : 쿠키 이름과 관련된 값
      • 유효시간 : 쿠키 유지시간
      • 도메인 : 쿠키를 전송할 도메인
      • 경로 : 쿠키를 전송할 요청 경로
    • 쿠키 생성

    <%
    	Cookie cookie = new Cookie("CookieName","CookieValue");
    	response.addCookie(cookie);
    %>
    
    • cookie.getName, cookie.getValue로 값을 꺼내어 사용한다
    • 쿠키 관련 메소드

    메소드


    • 쿠키 경로
    • 쿠키는 그 쿠키를 생성한 서버에만 전송된다. 같은 도메인을 사용하는 서버에 대해서 모두 쿠키를 보내고 싶으면 setDomain() 메소드를 이용하여 처리할 수 있다
    • .xxx.co.kr : . 으로 시작하는 경우에는 관련된 도메인 모두에게 쿠키를 전송
    • www.xxx.co.kr : 특정 도메인에 대해서만 쿠키를 전송
    • 도메인뿐만 아니라 setPath() 메소드를 이용하여 경로를 지정할 수 있다
    • cookie.setPath(“/path”); => /path 또는 /path/sub 하위 경로에만 전송
    • 쿠키의 유효시간
    • 쿠키는 유효시간을 설정할 수 있다. 설정하지 않으면 웹 브라우저를 닫는 순간 삭제된다
    • 유효시간을 설정하면 브라우저를 닫더라도 삭제되지 않는다
  2. Session

    • 쿠키가 웹 브라우저 쪽에 상태를 유지하기 위한 정보를 저장했다면, 세션은 웹 서버 쪽의 웹 컨테이너에 상태를 유지하기 위한 정보를 저장한다
    • javax.servlet.http 패키지의 HttpSession 인터페이스를 통해 세션을 사용한다
    • 웹 컨테이너는 기본적으로 하나의 웹 브라우저에 하나의 세션을 생성한다
    • 세션은 웹 브라우저마다 따로 존재하기 때문에 웹 브라우저 관련 1 대 1 정보를 저장한다
    • 서버와 관련된 정보를 노출시키지 않기 위해 쿠키보다 세션을 통한 상태관리가 효율적
    • 세션 생성
    <%@ page session = "true" %> <!-- 기본 설정이 true이므로 굳이 안해도 됨-->
    
    • 세션 내장객체의 주요 메소드

    메소드


    • 한번 생성된 세션은 종료되기 전까지 지속적으로 유지된다
    • setAttribute(), getAttribute() 메소드로 상태관리를 할 수 있다
    <%
    	session.setAttribute("name","limu");
    %>
    <%
    	String name = (String)session.getAttribute("name");
    %>
    
    • 세션 종료

    • invalidate() 메소드를 호출하여 세션을 종료할 수 있다. 기존 세션 객체는 삭제된다
    • 세션 유효시간
    • dd(web.xml)에 유효시간을 설정하는 방법
    <session-config>
    	<session-timeout>10</session-timeout>
    </session-config>
    
    • setMaxInactiveInterval() 메소드를 활용한 유효시간 설정방법
    <%
    	session.setMaxInactiveInterval(10*60);
    %>
    



참고 자료


KG 아이티뱅크 강의 자료

처음해보는 JSP&Servlet 웹 프로그래밍