세션(Session)은 쿠키를 기반으로 동작하는데
사용자의 정보를 Web Server에서 관리합니다.
쿠키를 유지할 수 있는 시간(24시간)처럼
쿠키를 유지할 수 있는 시간을 설정할 수 있습니다.
일정시간 동안 응답이 없으면 해당 정보를 삭제합니다.
=> 로그인 유지시간 지날 시 자동 로그아웃
쿠키보다는 보안성은 좋지만,
메모리 사용량이 큰 편입니다.
동접자 수가 많으면 서버에 과부하가 올 수 있고
성능이 저하될 수 있습니다.
Session은 attribute이긴한데
Request소속 attribute가 아니고,
Session소속 attribute입니다.
쉽게 말하자면
웹서버와 사용자를 연결해주는
연결고리 역할이라고 생각하면 됩니다.
Session은 Model쪽에서 만들고
Object 자료형을 사용합니다.
연결만 되어있으면 어디서든지 사용 가능한 값이고,
유지시간은 기본 30분이며 설정이 가능합니다.
그 시간동안 아무 요청도 안하면 자동으로 끊기게됩니다.
쿠키랑 비교하자면
쿠키는 정해놓은 시간이 만료되거나,
쿠키를 삭제하기 전까지는 유지되는 성격이 있고,
세션은 만료되는 시간을 지정할 수 있지만,
브라우저(서버)가 종료되면 바로 삭제되는 성격이 있습니다.
그럼 세션을 자바에서 한 번 만들어보겠습니다.
int d = 40000;
사용자와 서버간의 연결
HttpSession hs = req.getSession();
session의 유지시간을 15초
hs.setMaxInactiveInterval(15);
session값을 지정
hs.setAttribute("d", d);
d의 값을 d라는 세션에 넣었습니다.
다음으로는 Model에서 값을 생성해주는
메소드를 만들겠습니다.
public static void printSecondDataNew(HttpServletRequest req) {
try {
HttpSession hs = req.getSession();
세션 객체를 만들고
int d = (Integer) hs.getAttribute("d");
정수형으로 변환후 출력하는 메소드입니다.
System.out.println(d);
} catch (Exception e) {
// TODO: handle exception
}
해당 메소드를 컨트롤러에서 호출한 후 값을 생성해야하는데요.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
M.makeSecondData(request, response);
M.printSecondDataNew(request);
request.getRequestDispatcher("secondV.jsp").forward(request, response);}
Servlet파일의 컨트롤러에 해당 메소드를 호추랗였습니다.
이것을 View역할을 하는 JSP에서 출력하려면
${sessionScope.세션명 }
위처럼 EL을 사용해서 출력할 수 있습니다.
d : ${sessionScope.d }
'JSP' 카테고리의 다른 글
[JSP] 쿠키 (Cookie) 🍪 (0) | 2025.02.05 |
---|---|
[JSP] Custom Tag (0) | 2025.01.24 |
[JSP] 홀 짝 게임 (0) | 2025.01.23 |
[JSP] EL (0) | 2025.01.22 |
[JSP] Redirect (2) | 2025.01.21 |