쿠키와 세션 정의
https://interconnection.tistory.com/74
cookie_form, cookie_form2 의 차이는 Tomcat8.5 이상일 때와 이하일 때의 차이이다.(자동 인코딩 차이)
각각 cookie_save, cookie_read와 cookie save2, cookie_read2로 연결되니 차이를 확인하여 사용하면 좋다.
현재 사용하고 있는 Tomcat은 8.5 이상임으로 두 방식 모두 정상적으로 작동한다.
쿠키값 확인하기
cookie_form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/test/cookie_form.jsp</title>
</head>
<body>
<h1>쿠키 테스트</h1>
<p>
클라이언트의 웹브라우저에 특정 key 값으로 문자열을 저장할수 있다.
저장할수 있는 문자열은 Base64 인코딩 형식의 64가지 문자열을 저장할수 있다.
</p>
<form action="cookie_save.jsp" method="post">
<label for="msg">웹브라우저(client side)에 저장할 문자열 </label>
<input type="text" name="msg" id="msg"/>
<button type="submit">저장</button>
</form>
</body>
</html>
cookie_form2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/test/cookie_form.jsp</title>
</head>
<body>
<h1>쿠키 테스트</h1>
<p>
클라이언트의 웹브라우저에 특정 key 값으로 문자열을 저장할수 있다.
저장할수 있는 문자열은 Base64 인코딩 형식의 64가지 문자열을 저장할수 있다.
(Tomcat 8.5 는 자동으로 처리 되어서 인코딩이 필요 없다)
</p>
<form action="cookie_save2.jsp" method="post">
<label for="msg">웹브라우저(client side)에 저장할 문자열 </label>
<input type="text" name="msg" id="msg"/>
<button type="submit">저장</button>
</form>
</body>
</html>
cookie_form3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//쿠키에 저장된 아이디와 비밀번호를 담을 변수
String savedId="";
String savedPwd="";
//쿠키에 저장된 값을 위의 변수에 저장하는 코드를 작성해 보세요.
Cookie[] cooks=request.getCookies();
if(cooks!=null){
//반복문 돌면서 쿠키객체를 하나씩 참조해서
for(Cookie tmp: cooks){
//저장된 키값을 읽어온다.
String key=tmp.getName();
//만일 키값이 savedId 라면
if(key.equals("savedId")){
//쿠키 value 값을 savedId 라는 지역변수에 저장
savedId=tmp.getValue();
}
if(key.equals("savedPwd")){
savedPwd=tmp.getValue();
}
}
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/test/cookie_form3.jsp</title>
</head>
<body>
<form action="login.jsp" method="post" >
<table>
<tr>
<th><label for="id">아이디</label></th>
<td><input type="text" name="id" id="id" value="<%=savedId %>"/></td>
</tr>
<tr>
<th><label for="pwd">비밀번호</label></th>
<td><input type="password" name="pwd" id="pwd" value="<%=savedPwd %>"/></td>
</tr>
<tr>
<td></td>
<td>
<label>
<input type="checkbox" name="isSave" value="yes"/>
로그인 정보 저장
</label>
</td>
</tr>
<tr>
<td></td>
<td><button type="submit">로그인</button></td>
</tr>
</table>
</form>
</body>
</html>
로그인 form 작성 양식이다. login.jsp 를 만들어 두지 않아서 아직 작동하지는 않는다.
cookie_save.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//폼전송되는 문자열 읽어오기
String msg=request.getParameter("msg");
//1. 쿠키 객체 생성 new Cookie("key", value);
Cookie cook=new Cookie("savedMsg", msg);
//2. 쿠키 유지시간 (초단위)
cook.setMaxAge(60); //60초 테스트
//3. HttpServletResponse 객체에 담는다.
response.addCookie(cook);
//4. 응답할때 쿠키가 자동으로 응답되고 클라이언트의 웹브라우저에 저장이 된다.
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/test/cookie_save.jsp</title>
</head>
<body>
<p>웹 브라우저에 savedMsg 라는 키값으로 "<%=msg %>" 를 저장했습니다.</p>
<a href="cookie_read.jsp">저장된 문자열 확인 해보기</a>
</body>
</html>
cookie_save2.jsp
<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//폼전송되는 문자열 읽어오기
String msg=request.getParameter("msg");
//모든 문자열을 다 저장하려면 tomcat 8 이하 버전에서는 인코딩을 해서 저장을 한다.
String encodedMsg=URLEncoder.encode(msg, "utf-8");
//1. 쿠키 객체 생성 new Cookie("key", value);
Cookie cook=new Cookie("savedMsg", encodedMsg);
//2. 쿠키 유지시간 (초단위)
cook.setMaxAge(60); //60초 테스트
//3. HttpServletResponse 객체에 담는다.
response.addCookie(cook);
//4. 응답할때 쿠키가 자동으로 응답되고 클라이언트의 웹브라우저에 저장이 된다.
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/test/cookie_save2.jsp</title>
</head>
<body>
<p>웹 브라우저에 savedMsg 라는 키값으로 "<%=msg %>" 를 저장했습니다.</p>
<a href="cookie_read2.jsp">저장된 문자열 확인 해보기</a>
</body>
</html>
cookie_read.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//HttpServletRequest 객체를 이용해서 요청과 함께 전달된 쿠키 읽어내기
Cookie[] cooks=request.getCookies();
//"savedMsg" 라는 키값으로 저장된 문자열을 저장할 변수
String savedMsg=null;
if(cooks!=null){
//반복문 돌면서 쿠키 객체를 하나씩 참조
for(Cookie tmp:cooks){
//쿠키의 키값을 읽어온다.
String key=tmp.getName();
if(key.equals("savedMsg")){//만일 우리가 찾는 키값이라면
//해당 키값으로 저장된 value 를 읽어낸다.
savedMsg=tmp.getValue();
}
}
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/test/cookie_read.jsp</title>
</head>
<body>
<p>savedMsg 라는 키값으로 저장된 문자열 : <%=savedMsg %></p>
<a href="cookie_form.jsp">다시 테스트</a>
</body>
</html>
cookie_read2.jsp
<%@page import="java.net.URLDecoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//HttpServletRequest 객체를 이용해서 요청과 함께 전달된 쿠키 읽어내기
Cookie[] cooks=request.getCookies();
//"savedMsg" 라는 키값으로 저장된 문자열을 저장할 변수
String savedMsg=null;
if(cooks!=null){
//반복문 돌면서 쿠키 객체를 하나씩 참조
for(Cookie tmp:cooks){
//쿠키의 키값을 읽어온다.
String key=tmp.getName();
if(key.equals("savedMsg")){//만일 우리가 찾는 키값이라면
//해당 키값으로 저장된 value 를 읽어내서 디코딩을 한다.
savedMsg=URLDecoder.decode(tmp.getValue(),"utf-8");
}
}
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/test/cookie_read2.jsp</title>
</head>
<body>
<p>savedMsg 라는 키값으로 저장된 문자열 : <%=savedMsg %></p>
<a href="cookie_form2.jsp">다시 테스트</a>
</body>
</html>
'Servlet&JSP' 카테고리의 다른 글
Step04_Final (fetch) (0) | 2022.08.22 |
---|---|
Step04_Final(jstl) (0) | 2022.08.21 |
Step04_Final (test_el) (0) | 2022.08.21 |
Step04_Final (jstl 문법 비교, 로그인navbar) (0) | 2022.08.21 |
Step03_Scope (HttpSession) (0) | 2022.08.19 |