1.过滤器filter:把每个servlet中都有的公共代码提取出来,形成过滤器,易于扩展并且提高了程序的可维护性。
2.filter执行过程
2.1、用户在客户端浏览器发起请求;
2.2、tomcat容器接收到请求,并解析请求的url信息;
2.3、匹配到相应的过滤器,进入过滤程序,进入一层层过滤(字符集编码指定、登录验证、是否IP过滤);
2.4、过滤完成后再转到对应的目标资源。(可能是过滤器,也可能是一个页面);
3.如何写一个过滤器:
3.1、先创建一个类实现Filter接口;
3.2、实现Filter中的方法doFilter();
3.3、web.xml中配置过滤器
<filter>实例化信息</filter>
<filter>
<filter-name>characterFilter</filter-name>
<filter-class> com.chinasofti.filter.CharacterFilter</filter-class>
<init-param>
<param-name>remark</param-name>
<param-value>备注信息</param-value>
</init-param>
</filter>
<filter-mapping>映射信息</filter-mapping>
<filter-mapping>
<filter-name>characterFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4.一个过滤器可以配置多个映射信息
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/index.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/front/front.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/behind/behind.jsp</url-pattern>
</filter-mapping>
5.监听器Listener:
5.1
对某一特定的事件进行监听(比如监听上下文对象ServletContext对象的状态,监听session状态,再比如监听session的attribute添加,删除状态);
事件对象是由容器创建的,触发的事件也是已经定好的,例如:容器要关闭,启动就会触发上下文对象ServletContextEvent,容器会自动创建一个该类型的对象;
例如,当发生了ServletContextEvent事件后,只能用ServletContextListener监听器监听。
5.2:监听器配置
<listener>
<listener-class>com.chinasofti.listener.LoginCountListener</listener-class>
</listener>
6.常用的监听:
Servlet API中定义了6种事件类型
ServletContextEvent:该类表示上下文事件,当应用上下文对象发生改变,如创建或销毁上下文对象时,将触发上下文事件。
ServletContextAttributeEvent:该类表示上下文属性事件,当应用上下文的属性改变,如增加、删除、覆盖上下文中的属性时,将触发上下文属性事件。
ServletRequestEvent:该类表示请求事件,当请求对象发生改变,如创建或销毁请求对象时,触发请求事件。
ServletRequestAttributeEvent:该类表示请求属性事件,当请求中的属性改变,如增加、删除、覆盖请求中的属性时,触发请求属性事件。
HttpSessionEvent:该类表示会话事件,当会话对象发生改变,如创建或销毁会话对象,活化或钝化会话对象时,将触发会话事件。
HttpSessionBindingEvent:该类表示会话绑定事件,当会话中的属性发生变化时,如增加、删除、覆盖会话中的属性时,将触发会话绑定事件。
------------------事件类型对应的8种监听器接口---------------------------------------------------------
Servlet API中定义了8种监听器接口,用来监听不同的事件类型
ServletContextListener:上下文监听器,监听ServletContextEvent事件。
ServletContextAttributeListener:上下文属性监听器,用来监听ServletContextAttribute事件。(了解)
ServletRequestListener:请求监听器,监听ServletRequestEvent事件。(了解)
ServletRequestAttributeListener:请求属性监听器,用来监听ServletRequestAttributeEvent事件。(了解)
HttpSessionListener:会话监听器,监听HttpSessionEvent。
HttpSessionAttributeListener:会话属性监听器,监听HttpSessionAttributeEvent事件。
HttpSessionBindingListener:会话绑定监听器,监听HttpSessionAttributeEvent事件。
但是仅监听从HttpSessionBindingListener派生出来的对象与session的绑定。此监听器不用在web.xml中配置。
HttpSessionActivationListener:会话活化监听器,监听HttpSessionEvent事件。(了解)
JavaWeb编程(九)servlet高级应用之监听器和过滤器
原文:http://www.cnblogs.com/dgq-blog/p/6529700.html