过滤器:
什么是过滤器:
是servlet规范中一种特殊的类,用于对servlet调用过程的拦截.
如何编写一个过滤器:
1>编写一个java类,该类必须实现Filter接口
2>重写接口中的抽象方法
3>在web.xml中配置该过滤器,让web容器了解当用户访问那些地址时需要经过该过滤器.
案例:
过滤请求中的敏感词:
Filter的优先级:
在web.xml中配置靠前的优先级越高,约先执行.
Filter的生命周期:
Filter的创建阶段:
web容器创建.服务器启动时创建,Filter对象在容器中是单例的.
Filter的初始化阶段:
web容器调用.对象创建完成后立即调用.
init(FilterConfig config)
FilterConfig可以读取web.xml中的配置信息:初始化参数:
<init-param>
<param-name></param-name>
<param-value></param-value>
</init-param
Filter对象业务的调用阶段:
doFilter(request,response,filterchain)
若调用chain.doFilter(req,resp),web容器会继续执行后续组件业务,若后续组件是filter,则执行doFilter方法,若是servlet,则执行service方法.
Filter的销毁阶段阶段:
web容器调用.在项目被移除或服务器关闭时调用destroy 方法.
过滤器的优点:
a .把在servlet中需要编写的相同的业务逻辑,封装起来,实现代码的重用,便于代码的维护.
b .实现模块功能的可插拔性,需要,配置,不需要,不配做.(编码,事物,日志.....)
监听器:
什么是监听器:
servlet规范中一种特殊的类,用于监听web容器在运行中所触发的事件,并且进行相应的事件处理.
web容器中的事件分为两大类:
1>生命周期相关事件
指的是当容器创建或销毁request sesson,servletContext这些对象时所触发的事件.
2>数据绑定事件
指的是当容器调用,request,session,servletContext对象的setAttribute() removeAttribute()等对保存的值操作时所触发的一些事件.
ServletContext:
当web容器启动时,容器为部署在当前容器中的所有应用都分别创建一个ServeltContext实例,该实例会随着应用一直存在,并且每个应用有且只有一个.
何时销毁?
应用被移除,或web容器关闭.
常用API:
setAttribute("key",value)绑定数据
getAttribute("key")获取绑定数据
如何获取ServeltContext对象:
GenericServlet提供了getServletContext()
HttpSession提供了getServeltContext();
ServletConfig提供了getServletContext();
案例:统计在线人数:
统计web容器创建session对象的个数
如何写一个监听器:
1>编写一个java类,实现相应监听器接头.
HttpSessionListener
2>重写抽象方法
3>在web.xml中配置该监听器.作用是让web容器了解系统中有这么一个监听器.