Servlet Filter Listener加起来是Java Web三大组件
Filter工作流程
作用
举个最实际的例子来说,就是用户没登录就不能访问一些页面。
这种需求可以用过滤器实现。
用法
//@WebFilter(filterName = "LoginFilter") public class LoginFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException { //doFilter方法类似于放行。不调用这个方法就相当于被拦截在这里。 注意,响应会从doFilter那一行下面开始执行! chain.doFilter(request,response); } } 之后要配置web.xml。注意也可以不配置filter-name,利用注解的方式去配置filtername。 <filter> <filter-name>LoginFilter</filter-name> <filter-class>xxxx</filter-class> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Filter接口的其他方法
其实filter接口还有init和destroy这两个方法。
大体类似于servlet的init和destroy。
FilterConfig接口
其实这部分和servlet也基本上是一样的。
多过滤器
先后顺序是在配置文件中编写映射文件的顺序。
Listener
监听容器内发生的事件的接口
容器产生的事件分类如下:
生命周期相关的事件。
属性状态相关的事件。
存值状态相关的事件。
底层原理是采用接口回调的方式实现。
基本分类
ServletRequestListener监听器
在ServletRequest创建和关闭时都会通知ServletRequestListener监听器。
常用方法如下:
ServletRequestAttributeListener监听器
向ServletRequest添加、删除或者替换一个属性的时候,将会通知ServletRequestAttributeListener监听器。
常用方法如下:
HttpSessionListener监听器
当一个HttpSession刚被创建或者失效(invalidate)的时候,将会通知HttpSessionListener监听器。
常用方法如下:
HttpSessionAttributeListener监听器
HttpSession中添加、删除或者替换一个属性的时候,将会通知HttpSessionAttributeListener监听器。
常用方法如下:
ServletContextListener监听器
在ServletContext创建和关闭时都会通知ServletContextListener监听器。
常用方法如下:
ServletContextAttributeListener监听器
向ServletContext添加、删除或者替换一个属性的时候,将会通知ServletContextAttributesListener监听器
常用方法如下:
HttpSessionBindingListener监听器
HttpSession中绑定和解除绑定时,将会通知HttpSessionListener监听器。
常用方法如下:
HttpSessionActivationListener监听器
当有session数值的钝化和活化操作时,将会通知HttpSessionActivationListener监听器。
常用方法如下:
配置context.xml文件的方式如下:
<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="true"> <!-- 配置文件存放的路径信息,可以自由指定 --> <Store className="org.apache.catalina.session.FileStore" directory="C:\session"/> </Manager>