본문 바로가기
Programming | Study/JSP | Servlet

[servlet] SessionListener 구현

by jinju 2021. 4. 24.

HttpSessionListener / HttpSessionAttributeListener

- 동시에 접속시 발생, 접속중이 세션정보 확인

- 세션속성이 추가,제거, 수정시 발생

 

 

-html코드작성

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Listener 연결하기</title>
</head>
<body>
    <h1>리스너 동작확인하기</h1>
    <h2><a href="sessiontest.do">SessionListener 테스터</a></h2>
        
</body>
</html>
cs

 

 

-클래스를 추가하여  HttpSessionListener인터페이스 메소드 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.listener;
 
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
 
public class SessionListenerTest implements HttpSessionListener  {
 
    @Override
    public void sessionCreated(HttpSessionEvent arg0) {
        //request.getSession() -> 매소드가 실행되면 session이 생성!
                System.out.println("세션생성!");
    }
 
    @Override
    public void sessionDestroyed(HttpSessionEvent arg0) {
        //session.invalidate() -> 메소드가 실행되면 실행
                System.out.println("세션소멸");
    }
 
}
 
cs

HttpSessionListener메소드 종류

sessionCreated(HttpSession e) : void 세션이 생성되었을 경우 실행되는 메소드

sessionDestoryed(HttpSession e) : void 세션이 무효화 되었을 경우 실행되는 메소드

 

 

-servlet클래스생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.listener.controller;
 
import java.io.IOException;
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("/sessiontest.do")
public class SessionListenerTestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
 
    public SessionListenerTestServlet() {
        super();
 
    }
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session=request.getSession();
        session.setAttribute("loginUser""uer01");
        
    }
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
 
}
 
cs

 

sessionListener실행하기

 

-HttpSessionAttributeListener 인터페이스 메소드 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.listener;
 
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
 
public class SessionListenerTest implements HttpSessionListener, HttpSessionAttributeListener  {
 
    
    @Override
    public void attributeAdded(HttpSessionBindingEvent event) {
        System.out.println("session 생성됨");
    }
 
    @Override
    public void attributeRemoved(HttpSessionBindingEvent event) {
        
    }
 
    @Override
    public void attributeReplaced(HttpSessionBindingEvent event) {
    
    }
 
    @Override
    public void sessionCreated(HttpSessionEvent arg0) {
        //request.getSession() -> 매소드가 실행되면 session이 생성!
                System.out.println("세션생성!");
    }
 
    @Override
    public void sessionDestroyed(HttpSessionEvent arg0) {
        //session.invalidate() -> 메소드가 실행되면 실행
                System.out.println("세션소멸");
    }
 
}
 
cs

HttpSessionAttributeListener 메소드 종류

attributeAdded(ServletContextAttributeEvent e) : void 새로운 속성 값이 추가될 때 실행되는 메소드

attributeRemoved(ServletContextAttributeEvent e) : void 속성 값이 제거될 때 실행되는 메소드

attributeRemoved(ServletContextAttributeEvent e) : void 속성 값이 제거될 때 실행되는 메소드

 

 

+ web.xml에 Listener 등록해주기!!!!!

 

댓글