쿠키(cookie), 세션(session)

Lee kyu min·2024년 3월 4일

JSP & Servlet

목록 보기
5/15

쿠키(cookie)

  • 서버가 아닌 클라이언트 컴퓨터의 하드디스크에 정보를 저장
  • 서버의 부하를 줄일 수 있다.
  • 서버가 쿠키를 클라이언트에 저장하면 쿠키에 대한 정보를 필요로 하는 웹페이지가 요청될 때 저장해놓은 쿠키의 정보를 다시 웹서버에 건네준다.
  • 크기는 4KB 이하, 300개까지의 데이터 정보 배열을 저장할 수 있다(최대용량 1.2MB = 4KB*300)
    (따라서 이미지 정보는 경로로만 저장)

사용방법

  • response 객체를 사용하여 쿠키 정보를 클라이언트에 저장해두었다가 resquest 객체를 사용하여 가져온다

1) 쿠키 객체 생성

Cookie cookie = new Cookie("Name", "Value");

2) 쿠키에 속성값 설정

cookie.setMaxAge(24*60*60);	 	//cookie 객체의 유효기간(24시간)설정

3) response 객체의 addCookie() 메소드를 호출하여 쿠키 추가

response.addCookie(new Cookie("pwd", "test1234"));	//Name = pwd, Value = test1234 저장
response.addCookie(new Cookie("age", "20"));		//Name = age, Value = 20	저장

4) 쿠키 얻어오기

Cookie[] cookies = request.getCookies();	
  • request객체의 getCookies()로 얻어운 쿠키를 Cookie클래스 배열인 cookies에 저장

5) 쿠키 불러오기

ex)

for ( Cookie cookie : cookies) {
	out.println(cookie.getName() + cookie.getValue() +"<br>");
 }
  • getName()로 쿠키의 Name을
  • getValue()로 쿠키의 Values값 사용

6) 쿠키 삭제

cookie.setMaxAge(0);	//cookie 객체의 쿠키 유효기간 만료시킴

세션(session)

  • 쿠키에 저장되는 정보는 디렉토리만 뒤지면 얼마든지 알 수 있어 보안이 취약하고 저장 데이터에 한계가 있다.
  • 세션은 JSP(서버)에서만 접근 가능하므로 보안 유지에 강력하며 저장 데이터에 한계가 없다.
  • 세션은 서버상에 존재하는 객체로 브라우저 단위당 한개가 존재
  • 웹브라우저를 닫기 전까지 페이지를 이동하더라도 사용자의 정보를 잃지 않고 서버에 보관 가능
    (사용 예 -> 로그인 인증 처리 : 로그인 인증 후 권한이 유지되어 다른 페이지로 갔따와도 회원 전용페이지 사용 가능)

사용방법

1) 세션 저장

session.setAttribute(String name, Object value);

ex)

session.setAttribute("id", "test");
session.setAttribute("pwd", "test1234");
session.setAttribute("age", 20);

2) 세션 가져오기

session.getAttribute(String name)

ex)

<%
	String id = (String)session.getAttribute("id");
	String pwd = (String)session.getAttribute("pwd");
	Integer age = (Integer)session.getAttribute("age");
	%>
	id : <%= id %><br>
	pwd : <%= pwd %><br>
	age : <%= age %><br>

3) 세션에 설정된 모든 값 가져오기

ex)

Enumeration names = session.getAttributeNames();
	while(names.hasMoreElements()){
		String name = names.nextElement().toString();
		String value = session.getAttribute(name).toString();
		out.println(name + " :  " + value + "<br>");
	}
  • Enumeration : 여러 개의 데이터를 집합처럼 관리하는 인터페이스
  • boolean hasMoreElements() : Enumeration 객체에서 뽑아올 데이터가 있는지 검사하여 있으면 true를 ,없으면 false
  • E nextElement() : 다음 아이템이 존재한다는 전제 하에서 아이템을 하나씩 뽑아옴

4) 특정 세션 값 제거하기

session.removeAttribute(세션에 저장된 객체명);

5) 세션 모두 삭제하기

session.invalidate();		//세션 모두 삭제

0개의 댓글