JSP에서 쿠키를 읽으려면 먼저 HttpServletRequest 객체의 getCookies() 메서드를 호출하여 javax.servlet.http.Cookie 객체 배열을 만들어야 합니다. 그다음 반복문으로 이 배열을 순회하면서 각 쿠키에 대해 getName()과 getValue() 메서드를 호출하면 쿠키 이름과 대응하는 값을 손쉽게 확인할 수 있습니다.
쿠키 읽기 예제
앞선 예제에서 설정했던 쿠키를 실제로 읽어보겠습니다. 아래 코드를 main.jsp 파일로 저장한 후 웹 브라우저에서 접속해 보세요.
<html>
<head>
<title>Reading Cookies</title>
</head>
<body>
<center>
<h1>Reading Cookies</h1>
</center>
<%
Cookie cookie = null;
Cookie[] cookies = null;
// 이 도메인과 관련된 쿠키 배열을 가져옵니다
cookies = request.getCookies();
if( cookies != null ) {
out.println("<h2> Found Cookies Name and Value</h2>");
for (int i = 0; i < cookies.length; i++) {
cookie = cookies[i];
out.print("Name : " + cookie.getName( ) + ", ");
out.print("Value: " + cookie.getValue( )+" <br/>");
}
} else {
out.println("<h2>No cookies founds</h2>");
}
%>
</body>
</html>코드 동작 방식
- request.getCookies() : 현재 요청이 속한 도메인과 관련된 모든 쿠키를 Cookie 배열 형태로 반환합니다. 저장된 쿠키가 없으면 null을 반환합니다.
- null 검사 : 쿠키가 하나도 없는 경우를 대비해 반드시 null 여부를 먼저 확인해야 합니다. 이 과정을 생략하면 NullPointerException이 발생할 수 있습니다.
- getName() / getValue() : for 문으로 배열을 순회하면서 각 쿠키의 이름과 값을 차례대로 추출하고 화면에 출력합니다.
실행 결과
first_name 쿠키를 "John"으로, last_name 쿠키를 "Player"로 미리 설정해 둔 상태에서 https://localhost:8080/main.jsp에 접속하면 다음과 같은 결과가 화면에 출력됩니다.
Found Cookies Name and Value Name : first_name, Value: John Name : last_name, Value: Player