KDT/WEB

231207 WEB - JSP7(쿠키)

001cloudid 2023. 12. 7. 12:52
728x90

5. 쿠키

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp2/cookieTest1.jsp</title>
</head>
<body>
<h1>jsp2/cookieTest1.jsp</h1>

<!--
쿠키(Cookie 자바내장객체)
:JSP 내장객체가 아니며, 객체생성해서 사용. 페이지 상관없이, 서버 상관없이, 사용자 컴퓨터 상관 없이 값을 유지.
서버에서 값을 만들어서 사용자 컴퓨터 하드웨어에 저장
ex) 아이디, 비밀번호 저장

쿠키, 세션(연결정보를 저장)의 공통점과 차이점
세션은 연결정보를 저장, 페이지 상관없이 값이 유지되며, 쿠키는 페이지, 서버, 사용자 컴퓨터에 상관없이 값을 유지
즉, 값을 유지하는 점이 공통점

세션은 서버측에서 저장 관리되며 보안이 필요한 값을 저장(로그인 정보),
쿠키는 사용자에 정보가 저장되며 보안이 취약한 면이 있기 때문에 보안과 상관없는 값을 저장, 서버에 부하없이 사용할 수 있음

쿠키 생성 방법 1) http 헤더를 이용한 쿠키 설정, 2) 서블릿 API를 이용한 쿠키 설정(Cookie 자바내장객체)
-->
<%
Cookie cookie = new Cookie("cname", "cookieValue"); //쿠키값 만들기 Cookie 객체 생성 → 서버에 생성
cookie.setMaxAge(1800); //Cookie 유지시간설정(초)
response.addCookie(cookie);//서버에 만들어진 쿠키값 → 사용자 컴퓨터에 전달해서 파일로 저장
%>
쿠키 : <%=cookie %><br>
쿠키이름 : <%=cookie.getName() %><br>
쿠키값 : <%=cookie.getValue() %><br>
쿠키설정시간 : <%=cookie.getMaxAge() %><br>

<a href="cookieTest2.jsp">쿠키값 가져오기</a><br>
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp2/cookieTest2.jsp</title>
</head>
<body>
<h1>jsp2/cookieTest2.jsp</h1>
<%
//요청한 사용자 컴퓨터에 있는 쿠키값, 파라미터값, 서버 정보, 사용자 정보, 세션정보 등 요청정보를 http가 들고 와서 서버에 전달,
//요청정보를 저장하는 내장객체 request에 저장
Cookie cookies[] = request.getCookies(); //request에 저장된 쿠키값이 여러 개 있음 → Cookie 배열 변수에 저장
//cookies 쿠키값이 있으면 (쿠키값이 null이 아니면)
if(cookies != null){
//배열 접근 for문 이용
for(int i = 0 ; i < cookies.length ; i++){
// 쿠키 이름 cname 찾기
if(cookies[i].getName().equals("cname")){
out.println(" 쿠키주소 : " + cookies[i] + "<br>");
out.println(" 쿠키이름 : " + cookies[i].getName() + "<br>");
out.println(" 쿠키값 : " + cookies[i].getValue() + "<br>");
out.println(" 쿠키시간 : " + cookies[i].getMaxAge() + "<br>");
out.println("<br>");
}
}
}
%>
<a href="cookieTest1.jsp">쿠키값 만들기</a><br>
<a href="cookieTest3.jsp">쿠키값 삭제</a><br>
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp2/cookieTest3.jsp</title>
</head>
<body>
<h1>jsp2/cookieTest3.jsp</h1>
<%
//사용자 컴퓨터에서 가져온 요청정보(쿠키)를 서버에 전달 → request에 저장
//1) request에서 쿠키값 가져오기 → 변수에 저장
//2) request에 쿠키값이 있으면 → if문을 사용
//3) for문 접근
//4) if 접근해서 찾은 쿠키값 이름 "cname" 찾기
//5) 찾은 쿠키에 시간을 0으로 설정
//6) response에 담아서 사용자 컴퓨터에 전달

//1)
Cookie cookies[] = request.getCookies();
//2)
if(cookies != null){
//3)
for(int i = 0 ; i < cookies.length ; i++){
//4)
if(cookies[i].getName().equals("cname")){
//5)
cookies[i].setMaxAge(0);
//6)
response.addCookie(cookies[i]);
}
}
}
%>
<a href="cookieTest2.jsp">쿠키값 가져오기</a>
</body>
</html>

 

그림 1. cookieTest1.jsp
그림 2. cookieTest2.jsp
그림 3. cookieTest3.jsp
그림 4. cookieTest3.jsp에서 쿠키값 삭제를 눌렀을 때 결과

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp2/cookieEx1</title>
</head>
<body>
<h1>jsp2/cookieEx1</h1>
<%
Cookie cookies[] = request.getCookies(); //쿠키값 가져오기
String clanguageValue = "kor"; ////쿠키값이 없으면 "kor"로 설정
if(cookies!=null){
for(int i = 0 ; i < cookies.length ; i++){
if(cookies[i].getName().equals("clanguage")){
//out.println(cookies);
//out.println(cookies[i]);
out.println(" 쿠키 이름 : " + cookies[i].getName());
out.println(" 쿠키값 : " + cookies[i].getValue());
clanguageValue = cookies[i].getValue(); //쿠키값을 변수에 저장
}
}
}
//쿠키값을 비교해서 나타내기
if(clanguageValue.equals("kor")){
%> <h1>"안녕하세요. 이것은 쿠키 예제입니다"</h1><%
}
else {
%><h1>"Hi, This is Cookie example"</h1><%
}
%>
<form action="cookieEx2.jsp" method="get">
<input type="radio" name="language" value="kor" <%if(clanguageValue.equals("kor")){%>checked<%}%>>한국어 페이지 보기(기본값)
<input type="radio" name="language" value="eng" <%if(clanguageValue.equals("eng")){%>checked<%}%>>영어 페이지 보기<br>
<input type="submit" value="언어설정">
</form>
</body>
</html>

 

<%@page import="javax.security.auth.callback.LanguageCallback"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp2/cookieEx2</title>
</head>
<body>
<h1>jsp2/cookieEx2</h1>
<%
request.setCharacterEncoding("utf-8");
//사용자가 선택한 값이 서버에 전달 → request에 저장
//request에 저장된 파라미터 값(name, value)(태그정보값)을 가져와서 변수에 저장
String language = request.getParameter("language");
%>

사용자가 선택한 값 : <%=language %><br>

<%
Cookie cookie = new Cookie("clanguage", language); //쿠키객체생성 "이름",값 → 이름 "clanguage", 값 사용자가 선택한 언어 값
cookie.setMaxAge(3600); //쿠키시간설정 3600초
response.addCookie(cookie); //쿠키를 response에 저장한 후 사용자 컴퓨터에 저장
%>

쿠키주소 : <%=cookie %><br>
쿠키이름 : <%=cookie.getName() %><br>
쿠키값 : <%=cookie.getValue() %><br>
쿠키설정시간 : <%=cookie.getMaxAge() %>초<br>

<a href="cookieEx1.jsp">쿠키값 가져오기(설정된 언어 페이지 보기)</a>
</body>
</html>
728x90