Study/Java
[JSP] JSP에서의 session 관련 메소드 학습
black6765
2022. 11. 28. 19:47
Session 개요
Session
- Web Server에서 상태를 유지하기 위한 정보
- http의 Stateless를 보완
- 브라우저를 닫거나, 세션 만료 시간이 지나거나, 서버에서 세션을 삭제했을 때 제거
- 세션은 사용자의 정보를 유지하기 위해 javax.servlet.http 패키지의 HttpSession 인터페이스를 구현해서 사용
- 쿠키보다 좀 더 안정적이고, 보안성이 높다고 할 수 있음
- 쿠키는 사용자의 컴퓨터에 저장되고 세션은 서버에 저장됨
- 세션은 각 브라우저 당 1개씩 생성되어 웹 컨테이너에 저장
주요 Session Method
- void setAttribute(String name, Object value)
- 속성 명을 name으로, 값을 value로 할당
- 이미 존재하는 속성 명이라면 덮어씌움
- Object getAttribute(String name)
- 세션 속성 명이 name인 속성의 값을 Object 타입으로 리턴
- 해당 name이 없을 경우 null을 리턴
- void removeAttribute(String name)
- 속성 명이 name인 속성을 삭제
- Enumeration getAttributesNames()
- 모든 세션 속성 이름을 Enumeration 타입으로 리턴
- long getCreationTime()
- 기준 시간부터 현재 세션이 생성된 시간까지 경과한 시간을 계산
- 기준 시간은 1970-01-01-00-00
- String getId()
- 세션에 할당된 고유 식별자를 String 타입으로 리턴
- 즉, 세션의 ID를 리턴함
- int getMaxInactiveInterval()
- 현재 세션에 설정된 유지 시간을 리턴
- void setMaxInactiveInterval(int interval)
- 세션 유지 시간을 설정(단위: Seconds)
- void invaildate()
- 현재 세션을 invalidate함
Session Attribute
세션 객체는 웹 브라우저와 매핑됨
- 해당 웹 브라우저를 닫을 때까지 같은 창에서 열린 페이지는 같은 Session 객체를 공유
- 세션의 속성 값은 객체 형태만 가능함
Eclipse를 통한 JSP 생성 및 war로 배포
Step 1. 환경설정
- tomcat, eclipse, jdk가 준비되어 있어야 함
- Tomcat : Tomcat v9.0 Server
- Eclipse : 2022-09 / Eclipse IDE for Enterprise Java and Web Developers 패키지
- JDK : 1.8
Step 2. 프로젝트 생성
- 메뉴의 [File] → [New] → [Other]에서 Server → Server를 선택 → Next
- 해당 글에서는 server type을 Apache → Tomcat v9.0 Server로 진행 → Next
- Tomcat 설치 디렉토리를 설정해주거나, Download and Install로 톰캣을 다운로드
- 해당 글에서는 Download and Install 이용
- /home/user/eclipse/apache-tomcat-9.0.62 디렉토리에 설치
- JDK(JRE) 설정
- Installed JREs… → Add → Standard VM → JRE home에 JDK의 home을 Directory로 설정
- Finish를 누르면 [Servers]가 생성된 것을 확인 가능
Step 3. Dynamic Web Project 생성
- [File] → [New] → [Dynamic Web Project]
- Project Name을 설정한 뒤 Finish → Project Name에 대한 루트 디렉토리가 생성됨
- [프로젝트 루트 디렉토리] → src → main → webapp(META-INF, WEB-INF가 있는 디렉토리)에서 [New] → [JSP File]
- 파일 이름을 정하고 finish
- 여기서는 index.jsp로 진행
Step 4. JSP 파일 내용 작성
- 기본 동작을 확인하기 위해 간단한 테스트 코드 작성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sessionTestApp</title>
</head>
<body>
<p>JSP TEST</p>
<%
out.println("Hello JSP");
%>
</body>
</html>
- [상단 바] - [Run Index.jsp] → 톰캣 지정 → Next → Configured에 [Project Name]이 있는 것을 확인 후 Finish
Step 5. process.jsp 작성
- 테스트 애플리케이션은 하이퍼링크를 통해서 특정 request를 발생시켜 테스트를 진행할 수 있음
- 별도의 파일인 process.jsp에 들어오는 쿼리에 대한 분기를 통해 테스트 애플리케이션 작성 가능
- 예시 파일
- index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>sessionTestApp</title> </head> <body> <h2>JSP TEST</h2> <% out.println("Hello JSP"); String id = session.getId(); %> </br> <% out.println("id = " + id); %> </br> <!-- ~/process.jsp?value=[텍스트 입력 값]으로 request 전송 즉, 쿼리의 값을 사용자로부터 입력받을 수 있음 --> <form action="process.jsp"> 텍스트 입력 <input type="text" name="value"> </form> <tr> <td align="left">Invalidate Test</td> </br> <td align="left"><a href="process.jsp?value=invalidate">Invalidate 실행</a></td> </br> <td align="left"><a href="process.jsp?value=setAttr">setAttribute 실행</a></td> </br> <td align="left"><a href="process.jsp?value=123">실행</a></td> </br> </tr> <% out.println("Attribute value : " + session.getAttribute("attributeName")); %> </body> </html>
- 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> <% // index.jsp에서 process.jsp로 요청할 때 [process.jsp?value=invalidate"]와 같이 요청 // 이 중 ? 뒤에 쿼리에서 있는 value=[값] 부분에 따라 다른 명령을 실행할 수 있음 if (request.getParameter("value").equals("invalidate")) { session.invalidate(); response.sendRedirect("index.jsp"); } else if (request.getParameter("value").equals("setAttr")) { session.setAttribute("attributeName", "testValue"); response.sendRedirect("index.jsp"); } else { out.println(request.getParameter("value")); } // 위의 명령 실행 후 index.jsp 페이지로 돌아감 %> </body> </html>
Step 6. war 파일로 export
- [File] → [Export] → WAR 검색 → [WAR file] 선택 →Next → Web project 선택(방금 만든 프로젝트 명) → 파일 경로 선택(Destination) → Optimize for a specific server runtime 체크 해제 → finish
- Destination으로 선택한 디렉토리에 war 파일이 저장 됨