/ JAVA

cookie & session & cache

쿠키

http 프로토콜의 특징은 웹브라우저에 응답 후 관계를 끊는 것이다.
연결이 끊겼을 때 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키를 사용한다.
쿠키는 서버에서 생성하여, 생성된 쿠키는 서버가아닌 클라이언트 측에 저장
4kb로, 300개까지 데이터 정보를 가질 수 있다.

쿠키 생성 -> 속성 설정 -> response 객체에 쿠키 탑재

    <%
    Cookie cookie = new Cookie("id",id); //쿠키 name, value
    cookie.setMaxAge(60); //60초간 지속
    response.addCookie(cookie); //쿠키탑재
    response.sendRedirect("abc.jsp") // 포워딩
    %>

<!--forwarding 후-->
<%
    Cookie[] cookies = request.getCookies(); // 포워딩된 쿠키객체

    for(int i=0; i < cookies.length; i++){
        String id = cookies[i].getValue();
    }

쿠키의 한계

사용자가 임의로 고치거나 지울수있다.

쿠키가 보안상으로 취약


세션

  • 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단
  • 서버상에 객체로 존재 (쿠키는 클라이언트 쪽에 존재)
  • 세션은 서버에서만 접근이 가능 -> 보안이 좋다. , 데이터에 한계가 없다.

브라우저 하나당 하나의 객체를 jsp 컨테이너가 자동으로 생성한다.

클라이언트 요청 -> 서버에서는 기한이 짧은 임시키를 브라우저로보내어 쿠키로저장 -> 클라이언트가 사이트 접속할때마다 http요청에 key를 실어 서버로 전송

login.html


<form  action ="loginOk.jsp" method="post">
    아이디: <input type="text" name ="id" size="10"><br/>
    비밀번호: <input type="password" name ="pw" size="10"><br/>
    <input type="submit" value="로그인">
</form>

loginOk.jsp

<%!
    String id,pw;
%>

<%
    id =request.getParameter("id");
    pw = request.getParameter("pw");

    if(id.equals("abcde")&& pw.equals("12345")){
        session.setAttribute("id",id);
        response.sendRedirect("welcome.jsp");
    }else{
        response.sendRedirect("login.html");
    }
%>

welcome.jsp

<%
    Enumeration enumeration = session.getAttributeNames();
    while(enumeration.hasMoreElements()){
        String sName = enumeration.nextElement().toString();
        String sValue = (String)session.getAttribute(sName);

        if(sValue.equals("abcde")){
            out.println(sValue + "님 안녕하세요." +"<br/>");
        }
    }
%>

logout.jsp

<%
    Enumeration enumeration = session.getAttributeNames();

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

    if(sValue.equals("abcde")) session.removeAttribute(sName);
    }

%>

캐쉬

가져오는데 비용이 드는 데이터를 한번가져온뒤에는 임시로 저장

  • 웹캐쉬는 이미지정보를 불러올때 데이터사용량도 발생하고 시간도들기에
  • 사용자가 여러번 방문 할듯한 사이트에서는 한번 받아온 데이터를 사용자의 컴퓨터 or 서버에 저장

References.