개발/JAVA
listener를 사용한 servlet 객체 공유하는 법
신매력
2013. 6. 11. 23:57
초기화 파라미터로 쓸 수 있는것은 String 밖에 없기 때문에,
객체를 초기화 파라미터로 사용하기 위해서는 Listener를 써야한다.
여러 서블릿간에 특정 객체를 공유할 때 다음과 같이한다.
(서블릿마다 객체를 각각 생성하지 않는)
1. web.xml 에서 Servlet과 Listener 설정
<web-app> <!-- 서블릿 설정 --> <servlet> <servlet-name>First</servlet-name> <servlet-class>FirstServlet</servlet-class> <!-- 클래스명 --> </servlet> <servlet> <servlet-name>Second</servlet-name> <servlet-class>SecondServlet</servlet-class> </servlet>
<!-- 리스너 설정 --> <listener> <listener-class>ContextListener</listener-class> </listener>
</web-app> |
2. 리스너 (ContextListener.java)
웹 어플리케이션이 생성될 때 발생하는 이벤트를 처리하는 리스너 : ServletContextListener
public class ContextListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) {
Example example = new Example(); // 공유할 객체 생성 ServletContext sc = event.getServletContext(); sc.setAttribute("common", example); }
public void contextDestroyed(ServletContextEvent event){ // TODO } }
|
3. servlet 구현 (FirstServlet,java)
public class FisrtServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws Exception {
ServletContext sc = request.getSession().getServletContext(); Example ex = (Example) sc.getAttribute("common"); } } |
getAttribute를 통해서 리스너에서 set해줬던 객체를 가져올 수 있다.