session.jsp
<%@ 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>
<a href="<%=request.getContextPath() %>/sessiononAddTest.do">
Session 정보 저장하기 </a><br><hr><br>
<a href="<%=request.getContextPath() %>/sessiononReadTest.do">
Session 정보 확인하기 </a><br><hr><br>
<a href="<%=request.getContextPath() %>/sessiononDeleteTest.do">
Session 정보 삭제하기 </a><br><hr><br>
</body>
</html>
Session 정보 저장하기
1. Session 객체를 생성하거나 현재 Session정보 가져오기 형식1) request객체.getSession() 또는 request객체.getSession(true) ==> 현재 Session이 존재하면 현재 Session을 반환하고, 존재하지 않으면 새로운 Session을 생성한다. 형식2) request객체.getSession(false); ==> 현재 Session이 존재하면 현재 세션을 반환하고 존재하지 않으면 null을 반환한다.
HttpSession session = request.getSession();//세션이 만들어진것
2. setAttribute()메서드를 이용하여 Session값을 저장한다. 형식) session객체.setAttribute("key값", session값); //(문자열, 아무값이나 가능) ==> 'key값'은 문자열, 'session값'은 모든 종류의 데이터
MemberVO memVo = new MemberVO();
memVo.setMem_id("a001");
memVo.setMem_name("홍길동");
memVo.setMem_pass("1234");
memVo.setMem_tel("010-1019-0781");
memVo.setMem_addr("대흥동");
session.setAttribute("memVo", memVo);
session.setAttribute("userName", "이순신");
session.setAttribute("age", 30);
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html><head><meta charset='utf-8'>");
out.println("<title>세션저장</title></head>");
out.println("<body>");
out.println("<h2>세션 데이터가 저장되었습니다.</h2><br><br>");
out.println("<a href='"
+request.getContextPath()
+"/session/sessionTest.jsp'>시작문서로가기</a>");
out.println("</body></html>");
}
저장된 Session정보 읽어오기 1. Session객체 생성 또는 현재 Session 가져오기
HttpSession session = request.getSession();
out.println("<html><head><meta charset='utf-8'>");
out.println("<title>세션읽기</title></head>");
out.println("<body>");
out.println("<h2>저장된 Session 데이터 확인하기</h2><hr>");
out.println("<h3>Session 데이터 1개 확인하기</h3>");
2. getAttribute()메서드로 Session값을 읽어온다. 형식) session객체.getAttirbute("key값");
String userName = (String) session.getAttribute("userName");// 키 값을 명확히 알때
if(userName==null) { //session에 해당 'key값'으로 저장된 데이터가 없을 때
out.println("<h3>userName의 Session값이 없습니다.</h3>");
}else {
out.println("<h3>userName의 세션값 : " + userName + "</h3>");
}
out.println("<hr>");
세션에 있는 모든 값을 가져오고 싶을때
out.println("<h3>전체 session 데이터 확인하기</h3>");
out.println("<dl>");
session의 모든 'key값'을 가져온다.
Enumeration<String> sessionNames = session.getAttributeNames();
while(sessionNames.hasMoreElements()) { //다음 데이터가 있는지 검사
session의 'key값' 1개 가져오기
String sessionKey = sessionNames.nextElement();
Object data = session.getAttribute(sessionKey);
문자와 숫자만 있는게 아니라 객체도 저장해야 하기 때문에
out.println("<dt>"+sessionKey +"</dt>");
if(data instanceof MemberVO) {
MemberVO memvo = (MemberVO)data;
out.println("<dd>"+sessionKey + "</dt>");
out.println("<dd>"+memvo.getMem_id()+"</dd>");
out.println("<dd>"+memvo.getMem_name()+"</dd>");
out.println("<dd>"+memvo.getMem_pass()+"</dd>");
out.println("<dd>"+memvo.getMem_tel()+"</dd>");
out.println("<dd>"+memvo.getMem_addr()+"</dd>");
}else {
out.println("<dd>"+data+"</dd>");
}
}
out.println("</dl>");
out.println("<hr>");
세션ID ==> 세션을 구분하기 위한 고유한 값(세션을 찾을 값으로 사용함)
out.println("세션ID: " + session.getId()+"<br>");
생성시간 ==> 1970년1월1일부터 경과한 시간(밀리세컨드단위)
out.println("세션 생성 시간 : " + session.getCreationTime()+"<br>");
최근 접근 시간 ==> 1970년1월1일부터 경과한 시간(밀리세컨드단위)
out.println("세션에 최근에 접근한 시간" + session.getLastAccessedTime()+"<br>");
세션 유효시간 ==> 세션이 생성된 후에 유지되는 시간(초 단위)
==> 유효시간 설정 : session객체.setMaxInactiveInterval(시간);
```
out.println("세션 유효 시간: " + session.getMaxInactiveInterval()+"<br>");
out.println("<br><hr><br>");
out.println("<a href='"
+request.getContextPath()
+"/session/sessionTest.jsp'>시작문서로가기</a>");
out.println("</body></html>");
Session 삭제하기
HttpSession session = request.getSession();
==> 형식) session객체.removeAttribute("key값");
==> session객체는 삭제되지 않고 해당
'key값'에 설정된 'session값'만 삭제된다.
session.removeAttribute("userName");
==>Session겍체 자체가 삭제된다.
형식) session객체.invalidate();
session.invalidate(); //세션 자체를 삭제한는것
out.println("<html><head><meta charset='utf-8'>");
out.println("<title>세션저장</title></head>");
out.println("<body>");
out.println("<h2>Session정보 삭제하기</h2>");
out.println("<a href='"
+request.getContextPath()
+"/session/sessionTest.jsp'>시작문서로가기</a>");
out.println("</body></html>");
}