监听器listener
一般监听器的用法(例外的会标注)
创建一个监听器类去实现某个特定的接口
然后在web.xml内注册
监听三个作用域
request
· HttpServletRequest
· 访问服务器的资源请求时创建
· 响应后关闭
session
· HttpSession
· 访问有getsession的url时被创建
html:不会
jsp:会(默认的jsp自带getSession方法
servlet:(有getSession就会,反之就不会)
· 超时销毁
application
· ServletContext
· 项目在服务器上发布的时候创建
· 项目移除或服务器关闭的时候销毁
常用 session和application
HttpServletSession
用来统计在线人数
ServletContext
用来设置服务器初始化时需要做的事情
监听三个作用域的属性状态的变更
request
ServletRequestAttributeListener
session
HttpSessionAttribute
servletContext
ServletContextAttributeListener
监听对象与session绑定和接触绑定(不用注册)
这个监听器不用注册,只需要让对象实现HttpSessionBindingListenerHttpSessionBindingListener接口即可
监听钝化和活化
HttpSessionActivactionListener
用于监听现在session的值 是 钝化 (序列化)还是活化 (反序列化)的动作
- 钝化 (序列化)
把内存中的数据 存储到硬盘上
- 活化 (反序列化)
把硬盘中的数据读取到内存中。
- session的钝化活化的用意何在
session中的值可能会很多, 并且我们有很长一段时间不使用这个内存中的值, 那么可以考虑把session的值可以存储到硬盘上【钝化】,等下一次在使用的时候,在从硬盘上提取出来。 【活化】
- 如何让session的在一定时间内钝化.
做配置即可
1. 在tomcat里面 conf/context.xml 里面配置
对所有的运行在这个服务器的项目生效
2. 在conf/Catalina/localhost/context.xml 配置
对 localhost生效。 localhost:8080
3. 在自己的web工程项目中的 META-INF/context.xml
只对当前的工程生效。
maxIdleSwap : 1分钟不用就钝化
directory : 钝化后的那个文件存放的目录位置。
D:\tomcat\apache-tomcat-7.0.52\work\Catalina\localhost\ListenerDemo\itheima
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="itheima"/>
</Manager>
</Context>
拦截器Filter
作用
- 对请求进行过滤和拦截
注册过滤器
<filter> <display-name>FilterDemo</display-name> <filter-name>FilterDemo</filter-name> <filter-class>com.itheima.filter.FilterDemo</filter-class> </filter> <filter-mapping> <filter-name>FilterDemo</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
生命周期
随着项目发布或者服务器的启动而创建
随着项目移除或者服务器的销毁而销毁
使用频率更高
- 如果要写一个过滤器。
定义一个类,实现接口 Filter
注册 . web.xml . 与servlet相似。
- 过滤器放行。
chain.doFilter(request, response);
过滤器生命周期
创建: 服务器加载这个项目的时候创建实例
销毁: 关闭服务器或者从服务器中移除项目的时候。