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 서버에 저장