docs.oracle.com/javaee/7/api/javax/servlet/http/HttpSession.html
HttpSession (Java(TM) EE 7 Specification APIs)
Provides a way to identify a user across more than one page request or visit to a Web site and to store information about that user. The servlet container uses this interface to create a session between an HTTP client and an HTTP server. The session persis
docs.oracle.com
세션 생성
개발자가 직접 수동으로 생성하는 것이 아니라, 메소드를 이용하여 생성하거나,
기존의 HttpSession 객체의 주솟값을 추출하여 사용.
세션 생성
javax.servlet.http.HttpSession을 import한 상태에서 HttpServletRequest의 getSession()을 사용
클라이언트가 가지고 있는 ID와 동일한 세션 객체를 찾아서 주솟값 반환.
만일 세션이 존재하지 않으면 새로운 HttpSession 객체를 생성하여 반환.
매개변수에 true값을 넣으면 동일하게 객체 생성, false값을 넣으면 null 반환
세션 메소드는 위 오라클에 자세히 종류별로 설명이 되어있음.
예시1
package com.edu.test.session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/session1")
public class SessionTestServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
String param = req.getParameter("p");
String msg = null;
//new를 하지 않는 이유 : req.getSession으로 이미 만들어져있는 session의 주소값을 참조형 변수로 받기 위해서
HttpSession session = null;
if(param.equals("create")) {
session = req.getSession(); // 세션이 없는 경우 새로 생성 true 인자값을 받는 것과 같음
if(session.isNew()) {
msg = "새로운 세션 객체가 생성됨";
}
else {
msg = "기존의 세션 객체가 생성됨";
}
}
else if(param.equals("delete")) {
session = req.getSession(false); // 세션이 없는 경우 null 반환
if(session != null) {
session.invalidate(); // 삭제 메소드
msg = "세션 객체 삭제 작업 완료";
}
else {
msg = "삭제할 세션 존재하지 않음";
}
}
else if(param.equals("add")) {
session = req.getSession(true); // 세션이 없는 경우 새로 생성 인자값을 받지 않는 것과 같음
session.setAttribute("msg", "메시지입니다.");
msg = "세션 객체에 데이터 등록 완료";
}
else if(param.equals("get")) {
session = req.getSession(false); // 세션이 없는 경우 null 반환
if(session != null) {
String str = (String)session.getAttribute("msg");
msg = str; //msg에 등록된 속성 값을 msg에 대입
}
else {
msg = "데이터를 추출할 세션 객체가 존재하지 않음";
}
}
else if(param.equals("remove")) {
session = req.getSession(false); // 세션이 없는 경우 null 반환
if(session != null) {
session.removeAttribute("msg");
msg = "세션 객체의 데이터 삭제 작업 완료";
}
else {
msg = "데이터를 삭제할 세션 객체 존재하지 않음";
}
}
else if(param.equals("replace")) {
session = req.getSession(); // 세션이 없는 경우 새로 생성 인자값을 받지 않는 것과 같음
session.setAttribute("msg", "새로운 메시지입니다."); //msg 이름 속성값 등록
msg = "세션 객체에 데이터 등록 추가 완료";
}
out.print("처리 결과: " + msg);
out.close();
}
}
'Servlet & JSP' 카테고리의 다른 글
JSP에서 Database(MySQL) 연결이 안될 때 : JDBC 연결이 안될 때 (0) | 2021.05.14 |
---|---|
Servlet & JSP에서 Cookie 사용법 (0) | 2021.05.07 |
Servlet에서 init()으로 객체를 받는 방법 (0) | 2021.04.30 |