웹페이지에서 로그인을 하다 보면 종종 아이디 저장이라는 버튼을 볼 수 있다.
이때 아이디 저장이 활성화되면 해당 웹페이지를 열었을 때 이전에 로그인했던 아이디가 적혀있는 걸 볼 수 있다.
이는 JSP에서 쿠키(Cookie)를 이용하여 구현할 수 있다.
쿠키(Cookie)란?
웹 브라우저가 보관하고 있는 데이터로 웹 서버에 요청을 보낼 때 헤더에 담아서 전송한다.
쿠키가 삭제되기 전까지 쿠키에 응답 데이터를 담아 전송하게 된다.
쿠키(Cookie) 장단점
- 클라이언트의 일정 폴더에 정보를 저장하기 때문에 서버의 부하를 줄일 수 있다.
- 정보가 사용자 컴퓨터(로컬)에 저장되기 때문에 보안에 위협받을 수 있다.
- 사용자 컴퓨터 사양에 따라 데이터 저장 용량에 한계가 있다.
- 일반 사용자가 브라우저 내의 기능인 "쿠키 차단"을 사용했을 경우 쿠키를 받을 수 없다.
쿠키(Cookie) 동작방식
- 쿠키 생성 : 웹 서버에서 쿠키를 생성하고 쿠키에 응답 데이터를 담아서 웹 브라우저에 전송한다.
- 쿠키 저장 : 웹 브라우저는 응답 데이터를 담고있는 쿠키를 메모리나 파일로 저장한다.
- 쿠키 전송 : 웹 브라우저는 쿠키 요청이 있을때마다 웹 서버에 전송한다.
쿠키(Cookie) 사용법
- setCookie.jsp (쿠키 생성)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
/* 쿠키 생성 */
Cookie cookie = new Cookie("id", "apple");
response.addCookie(cookie);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키 생성</title>
</head>
<body>
<h3>쿠키 생성</h3>
<a href="getCookie1.jsp">쿠키 전송</a>
</body>
</html>
- getCookie1.jsp (쿠키 출력 및 수정)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키 출력 및 수정</title>
</head>
<body>
<!-- 쿠키 출력 -->
<%
String cookie_check = request.getHeader("Cookie");
if(cookie_check != null){
Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies){
if(cookie.getName().equals("id")){
%>
<p>아이디 : <%=cookie.getValue()%></p>
<%
}
}
%>
<!-- 쿠키 수정 -->
<%
for(Cookie cookie : cookies){
if(cookie.getName().equals("id")){
Cookie new_cookie = new Cookie("id", "banana");
response.addCookie(new_cookie);
}
}
}
%>
<a href="getCookie2.jsp">변경된 쿠키 값 확인하기</a>
</body>
</html>
- getCookie2.jsp (쿠키 수정 확인 및 삭제)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키 수정 확인 및 삭제</title>
</head>
<body>
<!-- 쿠키 수정 확인 -->
<%
String cookie_check = request.getHeader("Cookie");
if(cookie_check != null){
Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies){
if(cookie.getName().equals("id")){
%>
<p>아이디 : <%=cookie.getValue()%></p>
<%
}
}
/* 쿠키 삭제 */
for(Cookie cookie : cookies){
cookie.setMaxAge(0);
response.addCookie(cookie);
}
}
%>
<a href="delete_check.jsp">쿠키 삭제 확인</a>
</body>
</html>
- delete_check.jsp(쿠키 삭제 확인)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키 삭제 확인</title>
</head>
<body>
<%
String cookie_check = request.getHeader("Cookie");
if(cookie_check == null){
%>
<p>쿠키가 삭제되었습니다.</p>
<%
}else{
%>
<p>쿠키가 삭제되지 않았습니다. 기존 쿠키를 모두 지운 후 다시 시도해보세요!</p>
<%
}
%>
</body>
</html>
- 실행결과
'웹 > JSP' 카테고리의 다른 글
JSP EL과 JSTL 이란? (0) | 2023.08.06 |
---|---|
JSP 세션(Session)이란? (0) | 2023.07.25 |
JSP Ajax GET 방식과 POST 방식 (0) | 2023.06.24 |
JSP Ajax(Asynchronus Javascript and XML)란? (0) | 2023.06.08 |
JSP GET 방식과 POST 방식 차이 (0) | 2023.06.07 |