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 |