1. 쿠키란?
-
웹 서버가 사용자의 로컬 컴퓨터에 저장하는 기록 정보 파일
- ex1) 아이디/비번이 쿠키에 저장되어 다음 방문 때는 자동 입력된다.
- ex2) 1주일간 이 창을 띄우지 않음을 체크하면 그 기록이 쿠키에 저장되어 1주일간 팝업창이 뜨지 않는다.
-
쿠키 동작 방식
- 쿠키 생성
- 사용자가 사이트를 처음 방문하면 서버가 해당 사용자의 쿠키를 생성 후 응답을 돌려줄 때 헤더에 담아서 보낸다.
- 쿠키 저장
- 웹 브라우저는 응답에 포함된 쿠키를 쿠키 저장소에 보관한다.
- 쿠키 전송
- 해당 웹 서버의 쿠키를 가진 웹 브라우저는 앞으로 웹 페이지 요청을 할 때마다 쿠키를 함께 전송한다.
- 쿠키 생성
-
쿠키 구성요소
- 이름 : 각각의 쿠키를 구분
- 값 : 쿠키의 이름과 관련된 값
- 유효시간 : 쿠키의 유지 시간
- 도메인 : 쿠키를 전송할 도메인
- 경로 : 쿠키를 전송할 요청 경로
2. 쿠키 생성
<%
Cookie cookie = new Cookie("name", "value");
response.addCookie(cookie);
%>
3. 쿠키 수정 및 삭제
- 쿠키 수정
- 해당 쿠키가 있는지 확인 후 있으면 새로운 값으로 쿠키 생성 후 응답에 추가
<%
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length > 0) {
for(int i = 0; i < cookies.length; i++) {
if(cookies[i].getName().equals("name")) {
Cookie cookie = new Cookie("name", "newValue");
response.addCookie(cookie);
}
}
}
%>
- 쿠키 삭제
- 쿠키 클래스는 삭제기능을 따로 지원하지는 않고 유효 시간을 0으로 설정해서 쿠키를 삭제할 수 있다.
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length > 0) {
for(int i = 0; i < cookies.length; i++) {
if(cookies[i].getName().equals("name")) {
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]);
}
}
}
4. 쿠키 도메인
-
기본적으로 웹브라우저는 쿠키를 그 쿠키를 생성한 서버에만 전송된다.
- 쿠키를 만들 때 도메인을 따로 명시하지 않은 경우
-
Cookie
객체의setDomain(String domain)
을 호출하면 쿠키를 보낼 도메인을 지정할 수 있다.- ex)
cookie.setDomain(www.naver.com)
와 같이 호출하면 www.naver.com 해당 도메인에만 쿠키를 보낸다. - ex)
cookie.setDomain(.naver.com)
와 같이 점(.)으로 시작하는 경우 같은 도메인이름(naver)를 가지는 모든 서버에 쿠키가 전송된다.- mail.naver.com, blog.naver.com 등등
- ex)
-
쿠키를 생성한 서버에만 전송하는 이유
- 보안상의 문제
- 아무 서버에서나 쿠키를 조작할 수 있으면 보안상으로 문제가 된다.
5. 쿠키 경로
-
웹 브라우저가 쿠키를 전송할 경로를 지정한다.
- 도메인이 서버를 지정했다면 경로는 그 뒷부분에 해당한다.
Cookie
객체의setPath(String path)
메소드로 지정
-
기본적으로 JSP 페이지에서 쿠키를 생성하면 웹 브라우저는 해당 페이지가 속한 경로 및 그 하위 경로에 쿠키를 전송한다.
- ex) www.myweb.com/path1/myJspPage.jsp 에서 쿠키를 만들어 전송하면 /path1 하위 경로에만 쿠키를 전송한다.
- ex)
cookie.setPath(/)
서버의 모든 경로에 쿠키 전송 - ex)
cookie.setPath(/path2)
path2 하위 경로에 대해서만 쿠키 전송
-
일반적으로 쿠키 경로는 '/'로 지정한다.
- 쿠키는 웹 애플리케이션 여기저기 퍼져있는 JSP와 서블릿에서 사용하기 때문
6. 쿠키를 사용한 로그인 기능
- 사용자가 로그인을 하면 cookie를 만든다.
String id = request.getParameter("id");
String pw = request.getParameter("pw");
Cookie cookie = new Cookie("auth", id);
cookie.setMaxAge(-1); //브라우저 종료시 쿠키 삭제되도록 유효시간 -1로 설정
- 이후 사용자가 페이지를 요청할 때 마다 auth 쿠키가 있는지 확인해서 있으면 로그인 유저, 없으면 비로그인 유저로 판단하여 적절한 응답을 하면 된다.
'웹 > JSP' 카테고리의 다른 글
13. EL(Expression Language) 기본 (0) | 2020.07.21 |
---|---|
12. 세션(Session) (0) | 2020.07.19 |
10. 자바빈(JavaBean) (0) | 2020.07.19 |
9. <jsp:forward> 액션 태그 (0) | 2020.07.19 |
8. include 디렉티브 (0) | 2020.07.19 |