쿠키
- 쿠키는 사이트에 접속할 때 생성되는 정보를 담은 4KB 이하 크기의 임시 파일을 의미
- 네트워크 환경에서 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하기 위해 사용
- 세션과 다른 점은 로그인 상태 정보를 사용자 컴퓨터인 클라이언트에 저장된다는 부분(세션은 웹 서버에 저장)
- 쿠키는 불순한 의도로 복사되거나 해킹 등에 의해 개인 정보가 탈취될 수 있다는 보안상 취약한 단점 존재
쿠키에 의한 웹 브라우저 구분
- 쿠키는 클라이언트의 정보를 웹 브라우저에 저장하기 때문에 이후 웹 서버로 서비스를 요청할 경우
- 쿠키를 읽어 새로운 웹 브라우저인지 아니면 이전에 요청했던 웹 브라우저인지를 구별함
- 쿠키가 생성되면 웹 브라우저는 쿠키가 삭제되기 전까지 쿠키의 요청이 있을 때마다 웹 서버에게 쿠키를 제공
쿠키와 세션
- 웹 브라우저에서 서버로 접속할 때 쿠키 대신 세션을 사용하는 이유는 쿠키에 비해 세션이 보안에 강하기 때문임
- 쿠키와 세션의 가장 큰 차이점은 웹 브라우저를 통해 서비스를 요청할 때 사용자의 정보가 저장되는 위치
- 쿠키는 서버의 자원을 전혀 사용하지 않지만 세션은 서버의 자원을 사용함
- 웹 서비스에 대한 요청 속도는 세션보다 쿠키가 더 빠르므로 쿠키와 세션의 선택은 주어진 개발 환경에 맞춰 사용하면 됨
Cookie 클래스
- 쿠키는 연결 상태가 없는 HTTP 프로토콜을 위해 접속된 상태를 그대로 유지할 때 필요
- 쿠키는 웹 브라우저에 상태 정보를 저장하기 때문에 이후 웹 서버로 전송되는
서비스 요청에는 쿠키가 가지고 있는 정보도 함께 포함되어 전송 - Cookie 클래스는 쿠키 생성 및 관련 정보 등을 설정하기 위해 다양한 쿠키 관련 메소드를 제공
쿠키 생성 메소드
- 쿠키를 생성하려면 Cookie 클래스의 Cookie( ) 메소드를 사용, 쿠키 생성 후
쿠키를 설정할 때 반드시 response 내장 객체의 addCookie( ) 메소드를 사용 - Cookie( ) 메소드 : 쿠키 생성(“쿠키이름”, “쿠키값”)
- addCookie( ) 메소드 : 쿠키 설정(변수명)
쿠키 정보 메소드
- getCookie( ) 메소드 : 쿠키 객체 가져오기
- Cookie[ ] 변수명 : 여러 개의 쿠키 객체 가져오기
- getName( ) 메소드 : 쿠키 이름 가져오기
- getValue( ) 메소드 : 쿠키값 가져오기
쿠키 삭제
- Cookie 클래스에서는 쿠키를 삭제하기 위한 별도의 기능을 제공하지 않기 때문에 쿠키를 삭제하려면 setMaxAge( ) 메소드를 사용하여 괄호 안에 정수의 값 0을 매개변수로 입력하여 유효시간이 만료됨에 따라 쿠키는 자동으로 삭제되도록 선언해야 함
- 쿠키의 유효시간은 ‘초’ 단위이며 1시간을 설정하려면 setMaxAge(60 * 60)으로 선언
- 쿠키의 이름이 userID이고 쿠키의 값이 u_id인 경우 setMaxAge( ) 메소드를
사용하여 쿠키를 삭제하려면 다음과 같이 선언
예제
CookieLoginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<%
Cookie[] cookies = request.getCookies(); //쿠키들을 저장할 배열, 쿠키 가져오기
String id = ""; //쿠키 값이 있다면 저장할 아이디 변수
if(cookies != null) //쿠키가 없지 않다면
{
for(int i = 0; i < cookies.length; ++i)
{
if(cookies[i].getName().equals("id")) //쿠키의 이름이 id와 같다면
{
id = cookies[i].getValue(); //아이디 변수에 해당 쿠키의 키와 대응하는 값을 저장
break;
}
}
}
%>
<center>
<h2> 쿠키 로그인 </h2>
<form action = "CookieLoginProc.jsp" method = "post">
<table width = "400" border = "1">
<tr height = "50">
<td width="150" align="center"> 아이디 </td>
<td width="250"> <input type = "text" name = "id" value="<%= id %>"></td>
</tr>
<tr height = "50">
<td width="150" align="center"> 패스워드 </td>
<td width="250"> <input type = "password" name = "pass"></td>
</tr>
<tr height = "50">
<td align="center" colspan = "2"><input type="checkbox" name = "save" value="1"> 아이디 저장 </td>
</tr>
<tr height = "50">
<td align="center" colspan = "2"><input type="submit" value = "로그인"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
CookieLoginProc.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<%
request.setCharacterEncoding("UTF-8");
String save = request.getParameter("save"); //아이디 체크박스의 값을 불러옴
String id = request.getParameter("id");
if(save != null) // 아이디 체크 박스의 값이 null이 아니라면 쿠키 생성
{
Cookie cookie = new Cookie("id", id); //쿠키 생성, 생성자는 해시테이블과 같은 방식으로 key-value형식
cookie.setMaxAge(60 * 10); //쿠키 유효시간 설정 -> 10분
response.addCookie(cookie); //클라이언트 PC에 쿠키 값을 저장
out.print("쿠키 생성 완료");
}
%>
</body>
</html>
'Java Category > JSP' 카테고리의 다른 글
[JSP] 액션 태그(Action tag) (1) | 2023.11.27 |
---|---|
[JSP] 세션(Session) (1) | 2023.11.25 |
[JSP] 내장 객체 (2) | 2023.11.24 |
[JSP] 스크립트 태그(Script Tag) (1) | 2023.11.24 |
[JSP] JSP를 배우기전 알아야 할 개념 (MVC, 빈, 서블릿, 기본 처리 과정) (0) | 2023.10.15 |