쿠키 작동 원리
JavaServer Pages (JSP)는 Java 기반의 웹 애플리케이션을 만들기 위한 기술로, HTML 코드 내에 Java 코드를 삽입할 수 있게 해줍니다. JSP의 핵심 개념은 다음과 같습니다.
① 서버에서 쿠키 생성 : 서버는 쿠키를 생성하고 이름, 값, 유효기간 등의 정보를 설정합니다.
② 응답에 추가 : response.addCookie() 메서드를 사용하여 생성된 쿠키를 HTTP 응답에 추가합니다.
③ 클라이언트 저장 : 클라이언트의 브라우저가 응답에 포함된 쿠키를 저장합니다.
④ 서버에서 읽기 : 클라이언트가 이후 서버에 요청할 때 쿠키를 포함시켜 보내고, 서버는 이를 읽어 필요한 정보를 활용합니다.
쿠키의 용도
JSP (JavaServer Pages) 포인트에 대해 정리하자면 다음과 같습니다
① 사용자 인증 : 로그인 상태를 유지하고 사용자 인증 정보를 저장합니다.
② 사용자 설정 저장 : 사용자 맞춤 설정이나 선호도를 저장합니다.
③ 장바구니 정보 저장 : 쇼핑몰에서 장바구니에 담긴 상품 정보를 저장합니다.
④ 방문 기록 추적 : 사용자의 방문 기록이나 활동을 추적합니다.
쿠키의 단점
① 보안 취약성 : 쿠키에 민감한 정보를 저장하면 해킹 위험이 있으며, 암호화하지 않으면 노출될 수 있습니다.
② 브라우저 설정 : 사용자 브라우저 설정에 따라 쿠키가 비활성화될 수 있습니다.
③ 서블릿 컴파일 : 변환된 서블릿 자바 파일(.java)을 컴파일하여 서블릿 클래스 파일(.class)을 생성합니다. 이 컴파일 과정은 자바 컴파일러에 의해 이루어지며, 서블릿 클래스 파일은 자바 바이트코드로 변환됩니다.
④ 크기 및 개수 제한 : 쿠키는 크기와 개수에 제한이 있어 많은 양의 데이터를 저장할 수 없습니다.
Cookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
// 쿠키 생성
String userName = "홍길동";
Cookie userCookie = new Cookie("userName", userName);
// 쿠키의 유효 기간 설정 (예 : 1시간)
userCookie.setMaxAge(60 * 60);
response.addCookie(userCookie);
%>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키 생성</title>
</head>
<body>
<h2>쿠키가 생성되었습니다.</h2>
<p>사용자 이름 : <%= userName %></p>
<p>쿠키 ID : <%= session.getId() %></p>
<p>쿠키 유지시간 : <%= session.getMaxInactiveInterval() %></p>
<p><a href="ReadCookie.jsp">쿠키 읽기 페이지로 이동</a></p>
</body>
</html>
ReadCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
// 쿠키 배열 가져오기
Cookie[] cookies = request.getCookies();
String userName = null;
// 쿠키에서 사용자 이름 찾기
if (cookies != null){
for (Cookie cookie : cookies){
if ("userName".equals(cookie.getName())) {
userName = cookie.getValue();
out.println("쿠키ID" +cookie.getName() +"<br>");
out.println("쿠키 생성 시간" +System.currentTimeMillis() +"<br>");
out.println("쿠키ID" +cookie.getMaxAge() +"초<br>");
break;
}
}
}
%>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키 읽기</title>
</head>
<body>
<h2>쿠키 값 읽기</h2>
<p>저장된 사용자 이름 : <%= userName != null ? userName : "쿠키가 없습니다." %></p>
<p><a href="Cookie.jsp">쿠키 생성 페이지로 이동</a></p>
</body>
</html>