WEB/JSP
[JSP] cookie, session, removeAttribute
hvoon
2022. 9. 9. 19:14
cookie
-쿠키는 웹사이트 접속시 접속자의 개인장치에 다운로드 되고 브라우저에 저장되는 텍스트 데이터임
-웹사이트는 쿠키를 통해 접속자의 장치를 인식하고 접속자의 설정과 과거 이용내역에 대한 일부 데이터를 저장함
-쿠키에는 만료일이 있음. 브라우저를 닫는 경우 자동으로 삭제되는 쿠키가 있을 수 있으며 일부는 수동으로 삭제 되기 전까지 남아 있는 쿠키가 있음
필수쿠키 | 페이지 탐색 웹사이트의 보안 영역 접속 그리고 검색을 포함한 웹사이트의 기본기능을 활성화할 목적으로 사용함 |
기능쿠키 | 웹사이트가 접속자의 지역 및 언어 등 웹사이트의 행태 및 외관에 영향을 줄 수 있는 접속자 설정을 저장하도록 허용하며, 접속자 설정에 따라 웹사이트가 작동하도록 도움을 줌 |
성능쿠키 | 정보의 익명 수집 및 보고를 통해 웹사이트 운영자가 방문자와 웹사이트 사이의 상호 작용을 이해하는데 도움을 주며, 유저와 상호관계에 대한 통계자료를 제공함으로서 웹사이트 운영자가 더욱 최적화된 웹사이트 개발에 기여함 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>01_setCookies.jsp</title>
</head>
<body>
<%
// 1. Cookie 객체 생성
Cookie c=new Cookie("id","hong123");
// 2. 쿠키의 유효기간 설정
c.setMaxAge(365*24*60*60); // 1년간의 쿠키 수명 유지
// 3. 클라이언트에 쿠키 전송
response.addCookie(c);
// 4. new 쿠키를 생성하여 클라이언트에 바로 전송
response.addCookie(new Cookie("pwd","text1234"));
response.addCookie(new Cookie("age","20"));
%>
<!-- pageContext, request, session,application 등은
서버에 존재하며 이용할 수 있는 저장소라면
쿠키는 클라이언트 쪽에 저장되는 저장소임 -->
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>02_getCookies.jsp</title>
</head>
<body>
<%
Cookie[] cookies=request.getCookies();
// 쿠키내용 한번에 다 얻어오는 명령-쿠키객체 배열로 얻어옴
for(Cookie c:cookies){
out.println("<h2>"+c.getName()+" : "+c.getValue()+"</h2>");
}
%>
</body>
</html>
session
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>03_Session.jsp</title>
</head>
<body>
<%
session.setAttribute("id","hong");
session.setAttribute("pwd","1234");
session.setAttribute("age",20);
%>
</body>
</html>
1. 세션에 저장된 값 하나씩 추출
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>04_getSession.jsp</title>
</head>
<body>
<h3>세션에 저장된 값 하나씩 추출</h3>
<%
String id=(String) session.getAttribute("id");
String pwd=(String) session.getAttribute("pwd");
Integer age=(Integer) session.getAttribute("age");
// Attribute에 저장되었던 모든 자료는 getAttribute로 꺼냈을 때
// Object형이므로 원래의 자료형으로 사용하기 위해서는
// (자료형) 같은 형변환이 필요함
%>
id: <%=id %><br>
pwd: <%=pwd %><br>
age: <%=age %><br>
</body>
</html>
2. 세션에 설정된 모든 값 얻어오기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>04_getSession.jsp</title>
</head>
<body>
<h3>세션에 설정된 모든 값 얻어오기</h3>
<%
java.util.Enumeration<String> names=session.getAttributeNames();
// 세션에 저장된 키값들만 얻어서 저장함
while(names.hasMoreElements()){
// nextElement를 String형 변수에 저장
String name=names.nextElement().toString();
// (String) 형변환을 사용하지 않고 형변환 메서드를 사용
// 얻어낸 키(name)값으로 세션에서 getAttribute로 value 값을 추출함
String value=session.getAttribute(name).toString();
// (String) 형변환을 사용하지 않고 형변환 메서드를 사용
out.println(name+" : "+value+"<br>");
}
%>
</body>
</html>
3. 세션 정보를 얻어오는 메서드를 사용하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>05_Session_Info.jsp</title>
</head>
<body>
<h3>세션 정보를 얻어오는 메서드를 사용하기</h3>
<%
String id_str=session.getId(); // 현재 세션의 고유코드 얻음
long createdtime=session.getCreationTime(); // 생성시간: 밀리초
long lasttime=session.getLastAccessedTime(); // 마지막 접근 시간: 밀리초
// 사용시간(마지막 접근시간-생성시간): 밀리초 -> 1000으로 나누어 초단위로
long time_used=(lasttime-createdtime)/1000;
session.setMaxInactiveInterval(3600); // 세션의 수명(단위: 초)
int inactive=session.getMaxInactiveInterval()/60; // 수명을 분단위로 변환
boolean b_new=session.isNew(); // 새로 만든 세션의 여부
%>
[1] 세션 ID는 [<%=id_str %>] 입니다.<br><hr>
[2] 당신이 웹사이트에 머문 시간은 <%=time_used %>초입니다.<br><hr>
[3] 세션의 유효 시간은 <%=inactive %>분입니다. <br><hr>
[4] 세션이 새로 만들어졌나요?<br>
<%
if(b_new) out.print(" 예! 새로운 세션을 만들었습니다.");
else out.print(" 아니오! 새로운 세션을 만들지 않았습니다.");
%>
</body>
</html>
removeAttribute
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>06_RemoveAttribute.jsp</title>
</head>
<body>
<%
session.setAttribute("s_name1","저는 세션에 저장된 첫번재 값");
session.setAttribute("s_name2","저는 세션에 저장된 두번재 값");
session.setAttribute("s_name3","저는 세션에 저장된 세번재 값");
out.print("<h3> >>세션값을 삭제하기 전<< </h3>");
java.util.Enumeration<String> names=session.getAttributeNames();
while(names.hasMoreElements()){
String name=names.nextElement().toString();
String value=session.getAttribute(name).toString();
out.println(name+" : "+value+"<br>");
}
// 이름을 지정하여 세선에 저장된 객체를 제거함
session.removeAttribute("s_name2");
out.print("<hr><h3> >>세션값을 삭제한 후<< </h3>");
names=session.getAttributeNames();
while(names.hasMoreElements()){
String name=names.nextElement().toString();
String value=session.getAttribute(name).toString();
out.println(name+" : "+value+"<br>");
}
%>
</body>
</html>