이번에는 ServletContextListener이어서 인터페이스 ServletContextAttributeListener 구현하기
https://pearl23.tistory.com/20
여기서 이어서!
ServletContextAttributeListener : ServletContext에 속성이 추가, 제거, 수정시 발생
일단 메인페이지에 기본적으로 작성
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="contexttest.do">ContextListener 연결</a></h2>
</body>
</html>
|
cs |
-리스너 구현하기
인터페이스 ServletContextAttributeListener 구현 받고 오버라이딩하기
단축기 alt + s + v
1. attributeAdded(ServletContextAttributeEvent e)
: void 새로운 속성 값이 추가될 때 실행되는 메소드
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
package com.listener;
import java.util.Date;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
//리스너구현 클래스 작성
public class ContextListenerTest implements ServletContextListener, ServletContextAttributeListener {
@Override
public void attributeAdded(ServletContextAttributeEvent event) {
//ServletContext객체에 setAttribute로 값을 추가했을 때 실행기능
System.out.println("context에 값을 추가함");
System.out.println(event.getName());
System.out.println(event.getValue());
}
@Override
public void attributeRemoved(ServletContextAttributeEvent event) {
//ServletContext객체에 setAttribute로 값을 삭제했을 때
System.out.println("context에 값을 삭제함");
}
@Override
public void attributeReplaced(ServletContextAttributeEvent scae) {
System.out.println("context에 값을 수정함");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
//서버가 종료되면 실행되는 리스너 메소드
System.out.println("서버가 종료됨");
}
@Override
public void contextInitialized(ServletContextEvent sce) {
// 서버가 시작되면 실행되는 리스너 메소드
System.out.println("서버가 시작됨");
}
}
|
cs |
메소드에 event매개변수를 받아 setAttribute의 contex값 가져오기
System.out.println(event.getValue());
controller패키지 생성후 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.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/
@WebServlet("/contexttest.do")
public class contextListenerTestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public contextListenerTestServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//context에 값 추가하기
ServletContext context = request.getServletContext();
context.setAttribute("data", "데이터입력");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
|
cs |
event 메소드 생성하가기
값 추가 context.setAttribute("data", "데이터입력");
이 후 서버를 구동해주고 실행 후 확인하면
이렇게 console창에서 context값 추가한 것을 확인할 수 있다
2. attributeRemoved(ServletContextAttributeEvent e)
: void 속성 값이 제거될 때 실행되는 메소드
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
|
package com.listener.controller;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/contexttest.do")
public class contextListenerTestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public contextListenerTestServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//context에 값 추가하기
ServletContext context = request.getServletContext();
context.setAttribute("data", "데이터입력");
context.removeAttribute("data");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
|
cs |
이 메소드 추가 된거뿐 context.removeAttribute("data");
console창에서 확인할 수 있다.
3. attributeReplaced(ServletContextAttributeEvent e)
: void 속성 값이 변경될 때 실행되는 메소드
'Programming | Study > JSP | Servlet' 카테고리의 다른 글
[servlet] RequestListener 구현 (0) | 2021.04.24 |
---|---|
[servlet] SessionListener 구현 (0) | 2021.04.24 |
[servlet] ServletContextListener 구현 (0) | 2021.04.23 |
[Jsp/Servlet] tomcat 서버 에러 (0) | 2021.04.22 |
Servlet 연결하기 - Annotation(어노테이션) 방식 (0) | 2021.04.22 |
댓글