1. 세션
- 서버와의 관계를 유지하기 위한 수단
- 쿠키와 비슷하지만 쿠키와 달리 클라이언트가 아닌 서버상에 객체로 존재
- 서버에서만 접근이 가능하기 때문에 보안성이 좋음
- 저장 데이터의 한계가 없음
2. 동작 과정
- 세션은 클라이언트의 요청시 자동생성
- session이라는 내부객체를 지원하여 속성 설정 가능

3. 문법

1) 세션 생성 및 받아오기 테스트
① init.jsp (세션 생성)
<%
session.setAttribute("mySessionName", "mySessionData");
session.setAttribute("myNum", 12345);
%>
<a href="sessionget.jsp">session get</a>
② get.jsp (세션 받아서 처리)
<%
Object obj1 = session.getAttribute("mySessionName");
String mySessionName = (String)obj1;
out.println(mySessionName +"<br />");
Object obj2 = session.getAttribute("myNum");
Integer myNum = (Integer)obj2;
out.println(myNum +"<br />");
out.println("************************ <br />");
String sName;
String sValue;
Enumeration enumeration = session.getAttributeNames();
while(enumeration.hasMoreElements()){
sName = enumeration.nextElement().toString();
sValue = session.getAttribute(sName).toString();
out.println("sName : " + sName + "<br />");
out.println("sValue : " + sValue + "<br />");
}
out.println("************************ <br />");
String sessionID = session.getId();
out.println("sessionID : " + sessionID + "<br />");
int sessionInter = session.getMaxInactiveInterval();
out.println("sessionInter : " + sessionInter + "<br />");
out.println("************************ <br />");
session.removeAttribute("mySessionName");
Enumeration enumeration1 = session.getAttributeNames();
while(enumeration1.hasMoreElements()){
sName = enumeration1.nextElement().toString();
sValue = session.getAttribute(sName).toString();
out.println("sName : " + sName + "<br />");
out.println("sValue : " + sValue + "<br />");
}
out.println("************************ <br />");
session.invalidate();
if(request.isRequestedSessionIdValid()) {
out.println("session valid");
} else {
out.println("session invalid");
}
%>
③ get.jsp 의 출력 화면
mySessionData
12345
************************
sName : myNum
sValue : 12345
sName : mySessionName
sValue : mySessionData
************************
sessionID : 7704086DBAC4973F0AB6FB4941D6112B
sessionInter : 1800
************************
sName : myNum
sValue : 12345
************************
session invalid
2) 세션을 활용한 로그인 기능 구현
① 로그인 페이지
<form action="loginOk.jsp" method="post">
아이디 : <input type="text" name="id" size="10"><br />
비밀번호 : <input type="password" name="pw" size="10"><br />
<input type="submit" value="로그인">
</form>

② 로그인기능 처리 페이지
<%!
String id, pw;
%>
<%
id = request.getParameter("id");
pw = request.getParameter("pw");
if(id.equals("abcde") && pw.equals("12345")) {
session.setAttribute("id", id);
response.sendRedirect("welcome.jsp");
} else {
response.sendRedirect("login.html");
}
%>
③ 로그인성공 페이지
<%
Enumeration enumeration = session.getAttributeNames();
while(enumeration.hasMoreElements()){
String sName = enumeration.nextElement().toString();
String sValue = (String)session.getAttribute(sName);
if(sValue.equals("abcde")) out.println(sValue + "님 안녕하세요." + "<br />");
}
%>
<a href="logout.jsp">로그아웃</a>

④ 로그아웃 페이지
<%
Enumeration enumeration = session.getAttributeNames();
while(enumeration.hasMoreElements()) {
String sName = enumeration.nextElement().toString();
String sValue = (String)session.getAttribute(sName);
if(sValue.equals("abcde")) session.removeAttribute(sName);
}
%>
<a href="sessiontest.jsp">sessionTest</a>
⑤ 세션 소멸 확인 페이지
<%
Enumeration enumeration = session.getAttributeNames();
int i = 0;
while(enumeration.hasMoreElements()) {
i++;
String sName = enumeration.nextElement().toString();
String sValue = (String)session.getAttribute(sName);
out.println("sName : " + sName + "<br />");
out.println("sValue : " + sValue + "<br />");
}
if(i == 0) out.println("해당 세션이 삭제 되었습니다.");
%>

'강의 정리 > JSP & Servlet (Seoul Wiz)' 카테고리의 다른 글
16. JAVA Bean (0) | 2019.08.14 |
---|---|
15. 예외 페이지 (0) | 2019.08.14 |
13. 쿠키 (0) | 2019.08.06 |
12. 액션태그 (0) | 2019.08.06 |
11. JSP (3) (0) | 2019.08.05 |