监听器的理解:对对象以及对象的状态实行监控,并对相应的改变执行相关的程序。
按照监听的对象可以分为:监听ServletContext(应用程序环境对象)的事件监听器 ServletContextListener
HttpSession(用户会话对象)的事件监听器 HttpSessionListener
ServletRequest(请求消息对象)的事件监听器 ServletRequsetListener
Session何时被销毁? 关闭服务器的时候
与服务器有连接,但长期没有交互的时候
关闭浏览器,等待Session过期
生命周期概括:暂且不讨论Servlet的实例化,运行web服务器,servlet容器会实例化一个ServletContext对象,然后web 应用的 web.xml
被解析,有servlet,filter和Listener有 servlet
、filter
和 Listener
或 @WebServlet
、@WebFilter
和 @WebListener
注解的内容被加载至内存,初始化ServletRequest对象,TCP三次握手后,与服务器建立连接,初始化HttpSession对象,有一个唯一的sessionId然后servlet针对request做出相应,该request对象就被销毁,该过程十分短暂,Session的销毁上述有说明。
监听器部署过程:
第一种
第一步:web.xml配置
<listener> <listener-class> package.class </listener-class> </listener> <!--设置session过期时间,单位是分钟--> <session-config> <session-timeout>10</session-timeout> </session-config>
第二步:写监听器类,实现相关的监听器接口就行了。
第二种
书写监听器类时,在import后面加上@WebListener
@WebListener public class MyServletRequestListener implements ServletRequestListener{}