Cookie

- 기본 연결저장 정보를 클라이언트쪽에 남김, 보안이 약함

- 이름(name : String)과 값(value : String) 쌍으로 저장

- javax.servlet.http.Cookie (클래스)

- 쿠키 사용 경우 : 클라이언트의 접속기록, 1주일간 팝업을 띄우지 않음 등의 클라이언트 개인설정

 

1. 서버에서 쿠키 생성 후 클라이언트 전송하여 클라이언트에 저장 (서버 -> 클라이언트)

  → response.addCookie(cookie);

2. 클라이언트가 요청시 저장된 쿠키는 클라이언트 -> 서버 전송되어 읽혀짐

  → Cookie[] cookies = request.getCookie();

메서드 리턴타입 설명
new Cookie(String name, String value) (생성자) 쿠키 생성
getName() String 쿠키이름 반환
getValue() String 쿠키값 반환
setValue(String value) void 새로운 쿠키값 설정
setMaxAge(int sec) int 쿠키를 지속할 시간 설정(s)
0으로 설정시 쿠키 삭제
음수(-)로 설정시 브라우저 종료시 삭제

- 서버가 쿠키를 직접 삭제불가, 삭제하고 싶으면 같은 이름의 쿠키를 만들어 setMaxAge(0)으로 설정 후 덮어씌움

String id = request.getparameter("id");

Cookie[] cookies = request.getCookies();	// 클라이언트 -> 서버
Cookie cookie = null;

for(Cookie c : cookies) {
	System.out.println(c.getName() + ", " + c.getValue());
    
    if(c.getName().equals("idKey")) {		// idKey 이름의 쿠키가 있으면 갖고옴
        cookie = c;
    }
}

if (cookie == null) {						
    System.out.println("cookie is null");
    cookie = new Cookie("idKey", id);		// 쿠키 생성
    
    response.addCookie(cookie);			// 서버 -> 클라이언트
    cookie.setMaxAge(60*60);			// 60분 유지
}

 

Session

- 기본 연결저장 정보를 서버쪽에 남김

- 이름(name : String)과 값(value : Object) 쌍으로 저장 [HttpSession에 저장됨]

- javax.servlet.http.HttpSession (인터페이스)

 

1. 서버에서 클라이언트의 고유한 session id 생성하고 이것을 이용하여 저장소인 HttpSession 생성, 그 다음 session id를 포함시켜 쿠키 생성

  → HttpSession session = request.getSession();

2. session id를 포함한 쿠키가 클라이언트로 전송 (서버 -> 클라이언트)

3. 클라이언트가 요청시 저장된 session id를 포함한 쿠키가 클라이언트 -> 서버 전송되어 session id를 이용해 읽혀짐

  → 2, 3 과정은 알아서 진행됨

메서드 리턴타입 설명
request.getSession()   기존에 생성된 세션이 없을시 세션 생성
있을시 반환
getArrtibute(String name) Object name의 value 반환
setAttribute(String name, Object value) void name값에 value를 저장
getArrtibutetNames() Enumeration 생성된 모든 세션이름 반환
getId() String 클라이언트의 고유한 session id 반환
removeAttribute(String name) void name의 세션 제거
invalidate() void 생성된 모든 세션 제거
setMaxInactiveInterval(int sec) int 세션을 지속할 시간 설정(s) [d : 1800s]
String id = request.getparameter("id");

HttpSession session = request.getSession();		// 클라이언트 -> 서버 (세션 생성 or 반환)
session.setAttribute("idKey", id);			// 세션 값부여

 

'Web > JSP&Servlet' 카테고리의 다른 글

JSTL(JSP Standard Tag Library)  (0) 2020.04.23
EL(Expression Language)  (0) 2020.04.23
[JSP]지시자  (0) 2020.04.08
[Servlet]생명 주기  (0) 2020.04.08
JSP vs Servlet  (0) 2020.04.08

+ Recent posts