<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>sessionTest.jsp</h1>
<%
/*
session 객체
- HttpSession 타입을 사용하여 관리
- 클라이언트와 서버 사이의 연결 정보에 대해 관리 역할을 수행하는 객체(= 가상의 연결 개념)
- 주로, 페이지와 관계없이 어떠한 정보를 유지하는 용도로 사용
ex) 로그인 후 아이디 정보를 기억하여 페이지 이동 시에도 로그인이 유지되도록 함
- 서버에 접속 시 기본적으로 해당 클라이언트에 해당하는 기억장소(= 세션)가 생성되고
자동으로 아이디(세션ID)값이 부여됨 => 주의! 로그인할 때 사용되는 아이디가 아님
- 세션 유지 시간(maxInactiveInterval) 값만큼 세션 정보가 유지되며
유지 시간 동안 아무런 동작이 없을 경우 유지 시간이 만료될 때 세션 정보가 사라짐(= 제거됨)
=> 참고. 기본 maxInactiveInterval 은 1800(초) = 30분
- 세션 유지 시간과 관계없이 invalidate() 메서드를 호출하면 세션이 초기화 됨
- 웹브라우저가 종료되면 세션이 초기화 됨
*/
%>
<!-- 세션 유지시간(maxInactiveInterval) 값 확인 -->
<h3>현재 세션 유지시간 : <%=session.getMaxInactiveInterval() %>초</h3>
<!-- 세션 유지시간(maxInactiveInterval)을 10초로 변경 -->
<%-- <%session.setMaxInactiveInterval(10); %> --%>
<h3>변경 후 세션 유지시간 : <%=session.getMaxInactiveInterval() %>초</h3>
<!-- 페이지 새로고침(F5)이 10초 이내에 발생하지 않으면 현재 세션이 초기화됨 -->
<!-- 따라서, 10초가 지난 후 새로고침 시 세션에 저장된 기존 내용은 사용 불가능해짐 -->
<h3>새 세션 여부 : <%=session.isNew() %></h3>
<h3>세션 ID : <%=session.getId() %></h3>
<h3>세션 생성 시각 : <%=new Date(session.getCreationTime()) %></h3>
<h3>마지막 세션 접근 시각 : <%=new Date(session.getLastAccessedTime()) %></h3>
<!-- 세션 유지시간(maxInactiveInterval)을 1800초로 변경(생략 시 기본값) -->
<%session.setMaxInactiveInterval(1800); %>
<hr>
<!-- 세션 초기화(= 세션 객체에 저장된 모든 값을 삭제) -->
<%session.invalidate(); %>
<%-- <h3>새 세션 여부 : <%=session.isNew() %></h3> <!-- 이 코드가 실행되면 오류 발생! --> --%>
<!-- 세션 정보 삭제 후에는 세션 객체를 사용하여 값들에 접근이 불가(새 세션 생성 전까지) -->
<!-- => 다른 페이지로 이동하는 등의 작업 수행 시 새로운 세션이 생성됨 -->
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>sessionTest2.jsp</h1>
<!--
하이퍼링크를 사용하여 "세션값 생성" 링크 클릭 시 "sessionSet.jsp" 페이지로 이동하고
"세션값 삭제" 링크 클릭 시 "sessionRemove.jsp" 페이지로 이동
-->
<h3><a href="sessionSet.jsp">세션값 생성</a></h3>
<h3><a href="sessionRemove.jsp">세션값 삭제</a></h3>
<!-- 버튼과 자바스크립트를 조합하여 동일한 작업 수행 시 -->
<input type="button" value="세션값 생성" onclick="location.href='sessionSet.jsp'">
<input type="button" value="세션값 삭제" onclick="location.href='sessionRemove.jsp'">
<hr>
<h3><a href="sessionSet2.jsp">장바구니 추가</a></h3>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>sessionSet.jsp</h1>
<%
// session 객체에 값을 저장하는 방법
// => session.setAttribute("속성명", 속성값); 메서드 사용
// => 첫번째 파라미터 : 저장할 값을 지정하는 이름(속성명 = 키) = 변수명 역할을 수행(String 타입)
// 두번째 파라미터 : 세션 객체에 저장할 값(타입 무관)
session.setAttribute("sessionValue1", "첫번째 세션값입니다");
session.setAttribute("sessionValue2", "두번째 세션값입니다");
%>
<h1>세션값 생성 완료!</h1>
<h3><a href="sessionGet.jsp">세션값 확인</a></h3>
<!--
임시. session 객체로부터 값을 꺼내는 방법
=> session.getAttribute("속성명") 메서드 사용
=> 파라미터 : 저장된 값을 지정하는 이름(속성명 = 키)
-->
<%-- <h3>세션에 저장된 값 : <%=session.getAttribute("sessionValue1") %></h3> --%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>sessionGet.jsp</h1>
<h3>세션값1 확인 : <%=session.getAttribute("sessionValue1") %></h3>
<h3>세션값2 확인 : <%=session.getAttribute("sessionValue2") %></h3>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>sessionSet2.jsp</h1>
<%
// sessionValue3 라는 속성명으로 "장바구니 아이템" 값을 세션 객체에 저장
session.setAttribute("sessionValue3", "장바구니 아이템");
// sessionGet2.jsp 페이지로 이동
response.sendRedirect("sessionGet2.jsp");
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>sessionGet2.jsp</h1>
<h3>장바구니에 저장된 아이템 : <%=session.getAttribute("sessionValue3") %></h3>
<hr>
<h3>세션값1 확인 : <%=session.getAttribute("sessionValue1") %></h3>
<h3>세션값2 확인 : <%=session.getAttribute("sessionValue2") %></h3>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>sessionInvalidate.jsp</h1>
<%
// 세션 초기화 방법
// session.invalidate() 메서드 호출
session.invalidate(); // 세션에 저장된 모든 속성 제거(= 초기화)
response.sendRedirect("sessionGet.jsp");
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>sessionRemove.jsp</h1>
<!-- 세션값1삭제(sessionRemove1.jsp), 세션값2삭제(sessionRemove2.jsp),
세션초기화(sessionInvalidate.jsp) -->
<h3><a href="sessionRemove1.jsp">세션값1삭제</a></h3>
<h3><a href="sessionRemove2.jsp">세션값2삭제</a></h3>
<h3><a href="sessionInvalidate.jsp">세션초기화</a></h3>
<input type="button" value="세션값1삭제" onclick="location.href='sessionRemove1.jsp'">
<input type="button" value="세션값2삭제" onclick="location.href='sessionRemove2.jsp'">
<input type="button" value="세션초기화" onclick="location.href='sessionInvalidate.jsp'">
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>sessionRemove1.jsp</h1>
<%
// session 객체의 값을 삭제하는 방법
// => session.removeAttribute("속성명"); 메서드 사용
// 세션 객체에 저장된 "sessionValue1" 이라는 이름의 세션속성을 제거(= 세션값 삭제)
session.removeAttribute("sessionValue1");
// 세션값 삭제 후 sessionGet.jsp 페이지로 이동(포워딩)
response.sendRedirect("sessionGet.jsp");
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>sessionRemove2.jsp</h1>
<%
// 세션 객체에 저장된 "sessionValue2" 속성 제거
session.removeAttribute("sessionValue2");
// sessionGet.jsp 페이지로 이동
response.sendRedirect("sessionGet.jsp");
%>
</body>
</html>