1. application (context)

스크린샷 2025-09-04 오전 9.05.16.png

Application → context

Session → 조회수 증가 오늘 하루 방문수 → 이벤트 리스너

스크린샷 2025-09-04 오전 9.11.38.png

→ war파일이 톰캣이 띄우는 하나의 어플리케이션

//리스너는 톰캣 관할

**@WebListener**
public class ContextListener **implements ServletContextListener,
        ServletContextAttributeListener** {

    public ContextListener() {
        System.out.println("Context liistener 인스턴스 생성!");
    }
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("Context init!!");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("Context destroy!!");
    }

    @Override
    public void attributeAdded(ServletContextAttributeEvent event) {
        System.out.println("arttribute add!!: " + event.getName());
    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent event) {
        System.out.println("attribute remove!!");
    }

    @Override
    public void attributeReplaced(ServletContextAttributeEvent event) {
        System.out.println("attribute replaced!");
    }

}

스크린샷 2025-09-04 오전 9.26.17.png

필터랑 리스너는 로깅 확인용

시작하자 context 생성

@WebServlet("/context")
public class ContextListenerServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("context listener 확인용 servlet");

        **ServletContext context = req.getServletContext();**
        context.setAttribute("test1","value1"); // 추가
        context.setAttribute("test2","value2"); // 추가
        context.setAttribute("test2","value3"); // 수정

        context.removeAttribute("test1"); // 삭제
    }
}

스크린샷 2025-09-04 오전 9.27.07.png

2. session