- 리스너: 정해진 이벤트가 발생했을 때 수행되는 메소드를 제공하는 객체
- https://dololak.tistory.com/616 < 참고
종류
- ServletContext - 서버 시작시 생성 || 서버 종료 시 삭제
- HttpSession - 클라이언트 접속 시 생성 || 클라이언트 접속종료 시 삭제
- HttpServletRequest - 클라이언트 서비스 요청 시 생성 || 클라이언트 서비스 응답 시 삭제

- contextInitialized 여기서 set.attribute가 실행되면 attributeAdded가 실행된다
- ServletContextEvent 객체인 sce에서 getServletContext 메서드를 호출하여 현재 웹 애플리케이션의 ServletContext 객체를 가져옵니다. 이렇게 얻은 ServletContext 객체를 sctx 변수에 저장합니다.

- web.xml에서 가져온 것

- 그렇다면 jsp에서 보내보자
- ServletConfig는 서블릿의 설정 정보를 담고 있는 객체로, getServletContext 메서드는 해당 서블릿의 ServletContext 객체를 반환합니다. ServletContext는 웹 애플리케이션의 환경 정보를 담고 있는 객체입니다.




<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="AddServlet">ServletContext 속성 추가</a><br>
<a href="ReplaceServlet">ServletContext 속성 변경</a><br>
<a href="RemoveServlet">ServletContext 속성 삭제</a><br>
</body>
</html>
package servlets;
import java.io.IOException;
import javax.servlet.ServletConfig;
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("/AddServlet")
public class AddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
ServletContext sctx;
@Override
public void init(ServletConfig config) throws ServletException {
sctx =config.getServletContext();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
sctx.setAttribute("city", "홍콩");
response.sendRedirect("01_result.jsp");
}
}
package servlets;
import java.io.IOException;
import javax.servlet.ServletConfig;
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("/ReplaceServlet")
public class ReplaceServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
ServletContext sctx;
@Override
public void init(ServletConfig config) throws ServletException {
sctx =config.getServletContext();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
sctx.setAttribute("city", "서울");
response.sendRedirect("01_result.jsp");
}
}
package servlets;
import java.io.IOException;
import javax.servlet.ServletConfig;
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("/RemoveServlet")
public class RemoveServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
ServletContext sctx;
@Override
public void init(ServletConfig config) throws ServletException {
sctx =config.getServletContext();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
sctx.removeAttribute("city");
response.sendRedirect("01_result.jsp");
}
}
package listeners;
import java.util.Enumeration;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class ServletContextTestListener implements ServletContextListener, ServletContextAttributeListener {
ServletContext sctx;
public ServletContextTestListener() {
System.out.println("Listener생성...");
}
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Listener초기화 ...");
sctx = sce.getServletContext();
System.out.println(sctx.getInitParameter("user")); //green -web.xml
sctx.setAttribute("user", "짱구");
//어플리케이션 속성으로 들어가있는 녀석들
// Enumeration<String> names = sctx.getAttributeNames();
// while(names.hasMoreElements()) {
// System.out.println(names.nextElement());
// }
}
public void attributeAdded(ServletContextAttributeEvent scae) {
System.out.println("Listener : ServletContext 속성 추가..");
String name = scae.getName();
System.out.println("추가된 속성명 :" +name);
}
public void attributeReplaced(ServletContextAttributeEvent scae) {
System.out.println("Listener : ServletContext 속성 변경..");
String name = scae.getName();
System.out.println("변경된 속성명 :" +name);
}
public void attributeRemoved(ServletContextAttributeEvent scae) {
System.out.println("Listener : ServletContext 속성 삭제..");
String name = scae.getName();
System.out.println("삭제된 속성명 :" +name);
}
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Listener 종료..");
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
pageContext.setAttribute("city", "NewYork");
%>
<h1>결과페이지</h1>
<hr>
<h3>도시: ${applicationScope.city}</h3>
</body>
</html>
'JSP > 이론' 카테고리의 다른 글
JUnit(단위테스트 도구)//assertEquals (0) | 2023.07.04 |
---|---|
form으로 데이터 빈공백으로 보내면 null체크여부 (0) | 2023.07.03 |
filter (0) | 2023.07.03 |
페이징 (0) | 2023.07.02 |
data-* 속성// button이랑 input등 속성값변경 (0) | 2023.06.29 |