728x90
반응형

 

웹서버와 클라이언트 간의 상태를 지속적으로 유지하는 방법

Session 

Cookies 

- 웹서버에 저장됨
- 보안성이 높으며, 웹서버 메모리 용량내에 저장가능함.
- 클라이언트에 저장됨
- 암호화가 되지 않아 보안성이 낮다
- 웹서버는 웹브라우저가 전송한 쿠키를 사용해 필요한 데이터를 읽어올 수 있다.
- 유효기간 미설정시 웹브라우저에 저장
(웹브라우저 닫을 때 삭제)
- 유효기간 설정시 사용자의 PC에 저장됨
(유효기간이 지나면 자동으로 삭제)
- 쿠키는 그 크기가 하나에 4KB이하로 제한이 되어 있으며,
총 300개까지 정보를 저장할 수 있다.
따라서, 최대로 저장 가능한 쿠키의 용량은 1200KB 즉 1.2MB

14_01_session01_accessform.jsp
14_01_session01_process.jsp

session.getAttributeNames();

14_01_session01_accessform.jsp

<%@ 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>
	<form action="14_01_session01_process.jsp" method="post">
		<p>아이디 : <input type="text" name="id"></p>
		<p>비밀번호 : <input type="text" name="passwd"></p>
		<p><input type="submit" value="전송"></p>
	</form>
</body>
</html>
14_01_session01_process.jsp

<%@ 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>
	<%
	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>");
	%>
</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>
	<%
		String user_id = request.getParameter("id");
		String user_pw = request.getParameter("passwd");
		
		if(user_id.equals("admin") && user_pw.equals("1234")){
			session.setAttribute("userID", user_id);
			session.setAttribute("userPW", user_pw);
			out.println("세션 설정이 성공했습니다<br>");
			out.println(user_id+"님 환영합니다.");
		}else{
			out.println("세션 설정이 실패했습니다.");
		}
	%><br>
	<a href="14_01_session02.jsp">세션 확인하기</a>
</body>
</html>
세션이 살아있는 동안 아래 화면 유지
(30분간 - tom cat)

 

14_01_session03.jsp

14_01_session03.jsp

<%@ 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>Insert title here</title>
</head>
<body>
<%
	String name;
	String value;
	
	Enumeration en = session.getAttributeNames();
	int i = 0;
	
	while (en.hasMoreElements()){
		i++;
		name = (String) en.nextElement();
// 		name = en.nextElement().toString();
		//toString()이 null값일 수도 있어서 다운캐스팅이 안전하다.
		value = session.getAttribute(name).toString();
		out.println("설정된 세션의 속성 이름 [ " + i + " ] : " + name + "<br>");
		out.println("설정된 세션의 속성 값 [ " + i + " ] : " + value + "<br>");
	}
%>
</body>
</html>
Enumeration<String> en = session.getAttributeNames();

value = (String) session.getAttribute(name);

value = session.getAttribute(name).toString();
 
   
   
   
request.isRequestedSessionIdValid()  
session.removeAttribute("userID"); 삭제할 session명 입력
session.invalidate(); 다중 세션 삭제 유효하지 않은 값
 
session.getMaxInactiveInterval(); 세션 유효시간 설정(초 단위)  
session.getCreationTime();
session.getLastAccessedTime();
 

 

728x90
반응형

+ Recent posts