- [JSP] 20. 세션과 리스너를 함께 사용하기2024년 07월 03일
- Song hyun
- 작성자
- 2024.07.03.:51
728x90반응형[JSP] 20. 세션과 리스너를 함께 사용하기
package com.tenco.listeners; import java.util.logging.Logger; import jakarta.servlet.annotation.WebListener; import jakarta.servlet.http.HttpSessionEvent; import jakarta.servlet.http.HttpSessionListener; /* * 세션이 생성될 때/감지할 때 사용! => 리스너 등록 */ @WebListener public class MySessionListener implements HttpSessionListener{ private static final Logger logger= Logger.getLogger(MySessionListener.class.getName()); @Override public void sessionCreated(HttpSessionEvent se) { // 세션 생성 시 실행됨 logger.info("새로운 세션이 생성 됨 : "+se.getSession().getId()); se.getSession().setAttribute("LoginTime", System.currentTimeMillis()); } @Override public void sessionDestroyed(HttpSessionEvent se) { // 세션 소멸 시 실행됨 Long loginTime=(Long)se.getSession().getAttribute("LoginTime"); Long logoutTime=System.currentTimeMillis(); if(loginTime!=null) { Long sessionDurationMs=logoutTime-loginTime; // 접속시간 계산 (밀리초 단위) double sessionDurationMsSec=sessionDurationMs/1000; // 초 단위로 변환 System.out.println("세션 지속 시간 : "+sessionDurationMsSec); } } }
package com.tenco.controller; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import java.io.IOException; @WebServlet("/session-test") public class SessionTestServlet extends HttpServlet { private static final long serialVersionUID = 1L; public SessionTestServlet() { super(); } // 주소 설계 - http://localhost:8080/fl/session-test protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 새로운 세션을 생성해보아용 HttpSession session = request.getSession(); response.setContentType("text/plain;charset=UTF-8"); response.getWriter().print("당신의 세션 아이디는 : "+session.getId()); // 세션 무효화 버튼 response.getWriter().println("<form action='session-test' method='POST'>"); response.getWriter().println("<button type='submit' >세션 종료(로그아웃)</button>"); response.getWriter().println("</form>"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doPost 실행 확인"); HttpSession session=request.getSession(false); // 기존 세션을 반환, 없으면 null if(session!=null) { session.invalidate(); // 세션 무효화 } response.sendRedirect("session-test"); // 새로운 request,response 객체가 새로 생성됨 // sendRedirect -> 클라이언트로 돌아감 -> get 방식으로 http://localhost:8080/fl/session-test } }
NID-SES를 삭제하고, 새로고침을 하고 나면 로그아웃 되어있다!! 728x90반응형'JSP > 기본 이론' 카테고리의 다른 글
[JSP] 21. JSP의 개념과 역할 (0) 2024.07.03 [JSP] 19. 리스너 (0) 2024.07.03 [JSP] 18. 필터를 사용해 특정 IP 차단시켜보기 (0) 2024.07.03 [JSP] 17. 서블릿 필터와 리스너 (0) 2024.07.03 [JSP] 16.server.xml과 context.xml, web.xml (0) 2024.07.03 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)