监听器:对Web应用对象的行为进行监控,自动触发指定功能代码。
- 实现XxxListener接口, 不同接口对应不同监听对象
- 在web.xml中配置<listener>(或者使用注解形式配置@WebListener)
第一个监听器ServletContextListener
public class FirstListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO 自动生成的方法存根
System.out.println("ServletContextListener已经销毁");
}
@Override
public void contextInitialized(ServletContextEvent sce) {
// TODO 自动生成的方法存根
System.out.println("ServletContextListener已经初始化");
}
}
web.xml配置
<listener>
<listener-class>com.ulikeme.listener.FirstListener</listener-class>
</listener>
内置对象监听器
创建 HelloServlet.java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().println("hello servlet");
request.getServletContext().setAttribute("sc-attr1", "sc-attr-v1");
request.getSession().setAttribute("sc-attr2","sc-attr2-v2" );
request.setAttribute("rs-attr3", "rs-attr3-v3");
}
WebListener.java
public class WebListener implements ServletContextListener,HttpSessionListener,ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
// TODO 自动生成的方法存根
System.out.println("httpRequest已销毁");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
// TODO 自动生成的方法存根
HttpServletRequest request =(HttpServletRequest) sre.getServletRequest();
System.out.println("httpRequest已被创建,uri:"+request.getRequestURI());
}
@Override
public void sessionCreated(HttpSessionEvent se) {
// TODO 自动生成的方法存根
HttpSession session =se.getSession();
System.out.println("session已创建,sessionID:"+session.getId());
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
// TODO 自动生成的方法存根
System.out.println("session已销毁");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO 自动生成的方法存根
System.out.println("servletContext已销毁");
}
@Override
public void contextInitialized(ServletContextEvent sce) {
// TODO 自动生成的方法存根
System.out.println("servletContext已初始化");
}
}
web.xml
<listener>
<listener-class>com.ulikeme.listener.WebListener</listener-class>
</listener>