본문 바로가기

BackEnd/JSP

[JSP 웹 프로그래밍] 세션 2 (session 삭제, 유효 시간 설정)

728x90
반응형

4. 세션 삭제

◎ 단일 세션 삭제하기
   ▷ 세션에 저장된 하나의 세션 속성 이름을 삭제하려면 removeAttribute( ) 메소드를 사용

 

 

◎ 세션에 저장된 세션 속성 삭제하기 예제 1

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Enumeration" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session</title>
</head>
<body>
	<h4>----- 세션을 삭제하기 전 -----</h4>
	<%
		String user_id = (String) session.getAttribute("userID");
		String user_pw = (String) session.getAttribute("userPW");
		
		out.println("설정된 세션의 속성 값 [1] : " + user_id + "<br>");
		out.println("설정된 세션의 속성 값 [2] : " + user_pw + "<br>");
		
		// userID 세션을 삭제하는 코드
		session.removeAttribute("userID");
	%>
	<h4>----- 세션을 삭제한 후 -----</h4>
	<%
		user_id = (String) session.getAttribute("userID");
		user_pw = (String) session.getAttribute("userPW");
		
		out.println("설정된 세션의 속성 값 [1] : " + user_id + "<br>");
		out.println("설정된 세션의 속성 값 [2] : " + user_pw + "<br>");
	%>	
</body>
</html>

 

 

 

◎ 세션에 저장된 세션 속성 삭제하기 예제 2

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Enumeration" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session</title>
</head>
<body>
	<h4>----- 세션을 삭제하기 전 -----</h4>
	<%
		String name;
		String value;
		
		Enumeration en = session.getAttributeNames();
		int i = 0;
		
		while(en.hasMoreElements()){
			i++;
			name = en.nextElement().toString();
			value = session.getAttribute(name).toString();
						
			out.println("설정된 세션의 속성 이름 [ " + i + " ] : " + name + "<br>");
			out.println("설정된 세션의 속성 값 [ " + i + " ] : " + value + "<br>");
		}
		
		session.removeAttribute("userID");
	%>
	<h4>----- 세션을 삭제한 후 -----</h4>
	<%
		en = session.getAttributeNames();
		
		i = 0;
		while(en.hasMoreElements()){
			i++;
			name = en.nextElement().toString();
			value = session.getAttribute(name).toString();
						
			out.println("설정된 세션의 속성 이름 [ " + i + " ] : " + name + "<br>");
			out.println("설정된 세션의 속성 값 [ " + i + " ] : " + value + "<br>");
		}
	%>	
</body>
</html>

 

 

 

◎ 다중 세션 삭제하기
   ▷ 세션에 저장된 모든 세션 속성 이름을 삭제하려면 invalidate( ) 메소드를 사용

 

 

◎ 세션에 저장된 모든 세션 속성 삭제하기 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Enumeration" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session</title>
</head>
<body>
	<h4>----- 세션을 삭제하기 전 -----</h4>
	<%
		String user_id = (String) session.getAttribute("userID");
		String user_pw = (String) session.getAttribute("userPW");
		
		out.println("설정된 세션의 속성 값 [1] : " + user_id + "<br>");
		out.println("설정된 세션의 속성 값 [2] : " + user_pw + "<br>");
		
		if(request.isRequestedSessionIdValid() == true){
			out.print("세션이 유효합니다.");
		} else{
			out.print("세션이 유효하지 않습니다.");
		}
        
        // 세션에 저장된 모든 값 삭제
		session.invalidate();
	%>
	<h4>----- 세션을 삭제한 후 -----</h4>
	<%
		if(request.isRequestedSessionIdValid() == true){
			out.print("세션이 유효합니다.");
		} else{
			out.print("세션이 유효하지 않습니다.");
		}
	%>	
</body>
</html>​


 

 

5. 세션 유효 시간
   ▷ 세션을 유지하기 위한 세션의 일정 시간
   ▷ 웹 브라우저에 마지막 접근한 시간부터 일정 시간 이내에 다시 웹 브라우저에 접근하지 않으면 자동으로 세션이 종료 
   ▷ 세션 유효 시간을 설정하기 위해 session 내장 객체의 setMaxInactiveInterval( ) 메소드를 사용


interval은 세션의 유효 시간입니다. 기본 값은 1,800초이고 값은 초단위로 설정합니다.

0, 음수로 설정하면 세션 유효 시간이 없는 상태가 됩니다. 즉, 영구적으로 유지된다는 말이겠네요!

그치만 세션이 계속 유지되면 메모리에 남아 메모리 부족 현상이 발생할 수 있습니다.

 

◎ 세션 유효 시간을 가져와 출력하기 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session</title>
</head>
<body>
	<h4>----- 세션 유효 시간 변경 전 -----</h4>
	<%
		int time = session.getMaxInactiveInterval() / 60;
		out.println("세션 유효 시간 : " + time + "분<br>");
	%>

	<h4>----- 세션 유효 시간 변경 후 -----</h4>
	<%
		session.setMaxInactiveInterval(60 * 60);
		time = session.getMaxInactiveInterval() / 60;
		
		out.println("세션 유효 시간 : " + time + "분<br>");
	%>
</body>
</html>

 


위의 예제는 세션의 유효 시간을 3600초로 설정하는 예시입니다.

기본 값은 1,800초이므로 30분이고 변경 후에는 3,600초이므로 60분으로 세션 유효시간이 변경됩니다.

 

 

◎ 세션 아이디와 웹 사이트에서 유지한 시간 출력하기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session</title>
</head>
<body>
	<%
		String sessin_id = session.getId();
		
		long last_time = session.getLastAccessedTime();
		
		long start_time = session.getCreationTime();
		
		long used_time = (last_time - start_time) / 60000;
		
		out.println("세션 아이디 : " + sessin_id + "<br>");
		out.println("요청 시작 시간 : " + start_time + "<br>");
		out.println("요청 마지막 시간 : " + last_time + "<br>");
		out.println("웹 사이트의 경과 시간 : " + used_time + "<br>");
	%>
</body>
</html>

 


웹 사이트의 경과 시간을 초로 나타냅니다.

 

세션을 삭제하고 유효 시간을 지정하므로써 메모리의 공간을 확보하는 예제들을 수행했습니다.

 

세션을 필요할 때만 사용하고 자동 로그아웃이 되어서 메모리에 남아있지 않도록 하는 것이 중요하네요!!

 

그래서 저희가 로그인 했을 때 자동 로그아웃 되었던 것도 이런 것들을 막기 위해서네요!!

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

 

 

728x90
반응형