session

Mia Lee·2021년 12월 17일
0

JSP

목록 보기
10/22
<%@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>























0개의 댓글