Listener和Filter
Listener:监听器,监听某一个事件的发生状态的改变。其实就是接口回调
Web中监听器总共8个,分三种
监听三个作用域创建和销毁
ServletContextListener
在web.xml注册监听器
在ServletContext创建时执行初始化,在ServletContext销毁时执行销毁
SevletContext创建(初始化)
启动服务器的时候
ServletContext销毁
正常关闭服务器,从服务器移除项目
作用
初始化的时候完成自己想要的初始化工作
执行自定义的任务调度。执行某一个任务
ServletRquestListener
Request创建(执行初始化)
访问服务器上的任意资源都会创建,访问html、访问jsp、访问Servlet
Request销毁(执行销毁)
服务器对这次请求作出了响应
HttpSessionListener
Session创建(执行初始化)
Session销毁(超时30分钟,非正常关闭服务器)
作用
统计在线人数
监听三个作用域状态变更
可以监听在作用域中值添加、替换、移除的动作
HttpSessionAttributeListener
ServletRequestAttributeListener
ServletContextAttributeListener
监听httpSession里面存值的状态变更
这一类监听器不用注册
HttpSessionBindingListener
在JavaBean中继承,监听值被绑定(存在Session中)
HttpSessionActivationListener
在JavaBean中继承,监听Session
用于监听Session的值是钝化(序列化)还是活化(反序列化)
钝化(序列化):把内存中的数据存储到硬盘上;关闭服务器Session存储到硬盘
活化(反序列化):把硬盘中的数据读取到内存中;重启服务器后,取出Session值,活化Session,javaBean必须序列化
Session钝化活化存在的意义
Session中的值可能会很多,并且我们可能在很长一段时间不使用某些值,那么可以考虑把Session中的值存到硬盘上,等下一次使用的时候,在从硬盘上取出来
如何让Session在一定的时间内钝化
在tomcat里边conf/context.xml中配置(对所有运行在本服务器的项目生效)
在tomcat的conf/Catalina/localhost/context.xml中配置(对所有localhost:8080项目生效)
在自己web工程项目中的META-INF/context.xml中配置
//maxIdleSwap,多长时间不用就钝化,这里是一分钟
//directory钝化后文件目录
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="it315"/>
</Manager>
</Context>
Filter:过滤器
其实就是对客户端发出来的请求进行过滤。浏览器发出请求,然后服务器派Servlet处理,在中间就可以过滤,其实过滤器起到的是拦截的作用
作用
对一些敏感词汇进行过滤
统一设置编码等属性
自动登录
如何使用过滤器
继承Filter
在清单文件注册
在doFilter中执行chain.doFilter(request, response);//表示放行
路径匹配
全路径'/'开头
后缀名以* 开头后缀结束
dispatcher设置
REQUEST:只要是请求都拦截
FOWARD:只要是转发都拦截
ERROR:页面出错发生跳转
INCLUDE:包含页面的时候就拦截
过滤器生命周期
在服务器启动创建
在服务器关闭销毁
自动登录拦截
先判断Session,有效就放行,session无效取cookie,没有cookie放行,有cookie取出登录,存到session中,放行
BeanUtils包的使用