Choi의 고유결계

JSP Servlet: 쿠키/세션 (cookie/session) 본문

Jsp,Servlet

JSP Servlet: 쿠키/세션 (cookie/session)

믿을수없는맛 2018. 12. 30. 16:06
반응형

쿠키 그리고 세션

쿠키와 세션을 하기전에 http프로토콜에 대해서 얘기 해봅시다.
우리가 웹을 이용할때 사용하는 프로토콜이 바로 http 프로토콜입니다.

http는 웹서버로 어떤 데이터를 요청하면 서버측에서 요청한것에 맞게 알맞은 로직을 수행한 후 결과를 다시 웹 브라우저로 응답합니다. 그리고 서버는 웹브라우저와의 관계를 종료하는데요.

이때 연결이 끊겼을 때 어떤 정보를 유지하기 위한 수단이 바로 쿠키와 세션 입니다.

쿠키의 특징

  • 쿠키의 용량은 개당 4kb로 용량이 제한적이다.
  • 쿠키는 300개까지 만들수있다.

쿠키 문법

1. 쿠키 메소드

  • setMaxAge() : 쿠키 유효기간을 설정 합니다.
  • setpath() : 쿠키사용의 유효 디렉토리를 설정 합니다.
  • setValue() : 쿠키의 값을 설정 합니다.
  • setVersion() : 쿠키 버전을 설정 합니다.
  • getMaxAge() : 쿠키 유효기간 정보를 얻습니다.
  • getName() : 쿠키 이름을 얻습니다.
  • getPath() : 쿠키사용의 유효 디렉토리 정보를 얻습니다.
  • getValue() : 쿠키의 값을 얻습니다.
  • getVersion() : 쿠키 버전을 얻습니다.

    2. 실습

    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
    <title>Insert title here</title>
    </head>
    <body>

        <%
            Cookie cookie = new Cookie("cookieN", "cookieV");
            cookie.setMaxAge(60*60);    //1시간
            response.addCookie(cookie);
        %>

        <a href="cookieget.jsp">cookie get</a>


    </body>
    </html>

쿠키를 생성하고 setMaxAge를 통해 쿠키의 유효시간을 부여한다음

리스폰스 객체에 addCoolie메소드를 이용하여 쿠키를 저장합니다.

    <%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
    <title>Insert title here</title>
    </head>
    <body>

        <%
            Cookie[] cookies = request.getCookies();
            if(cookies != null) {
                for(int i=0; i<cookies.length; i++){
                    out.println(cookies[i].getName() + "<br />");
                    out.println(cookies[i].getValue() + "<br />");
                }
            }
        %>

    </body>
    </html>

쿠키를 받을 때에는 위의 소스 처럼 반복문을 통해 데이터를 얻을수있습니다.


세션의 특징

  • 쿠키와 달리 클라이언트측에 저장되는것이 아니라 서버상에 객체로 존재 합니다.
  • 서버에서만 접근 가능하기 때문에 보안상 좋다.
  • 데이터 한계가 없다. 한계가 없는 대신 서버의 성능을 고려하여 사용해야한다.

그런데 세션도 쿠키를 사용합니다. 세션ID값 만을 쿠키에 저장하여 저장되어있는 세션ID값을 가지고 브라우저를 구분하게됩니다.

세션 문법


1. 세션 메소드

  • setAttribute() : 세션에 데이터를 저장 합니다.
  • getAttribute() : 세션에서 데이터를 얻습니다.
  • getAttributeNames() : 세션에 저장되어 있는 모든 데이터의 이름(유니크한 키값)을 얻습니다.
  • getId() : 자동 생성된 세션의 유니크한 아이디를 얻습니다.
  • isNew() : 세션이 최초 생성되었는지, 이전에 생성된 세션인지를 구분 합니다.
  • getMaxInactiveInterval() : 세션의 유효시간을 얻습니다. 가장 최근 요청시점을 기준으로 카운트 됩니다. (C:\javalec\apache-tomcat-7.0.57\apache-tomcat-7.0.57\conf\web.xml 참조)
  • removeAttribute() : 세션에서 특정 데이터 제거 합니다.
  • Invalidate() : 세션의 모든 데이터를 삭제 합니다.

2. 실습

세션 설정방법

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>

    <%
        session.setAttribute("mySessionName", "mySessionData");
        session.setAttribute("myNum", 12345);
    %>

    <a href="sessionget.jsp">session get</a>

</body>
</html>

session.setAttribute(“저장할이름”,저장할 객체);

세션값 가져오기

    <%
           session.getAttribute("mySessionName");
                session.getAttribute("myNum");
    %>

여기서 중요한점은 getAttribute의 리턴 형태는 object 형태이기 때문에 캐스트를 해주어야합니다.

세션값이 여러개일 경우

 <%
        Enumeration enumeration = session.getAttributeNames();
        while(enumeration.hasMoreElements()) {
            i++;

            String sName = enumeration.nextElement().toString();
            String sValue = (String)session.getAttribute(sName);

            out.println("sName : " + sName + "<br />");
            out.println("sValue : " + sValue + "<br />");
        }
%>

이번강의는 여기까지

반응형
Comments