servlet过滤器的链式处理
来源:互联网 发布:world of goo mac 编辑:程序博客网 时间:2024/06/05 20:49
servlet过滤器的链式处理
分类: Java
先贴代码,用输出结果来阐述原理。
web.xml
代码完毕,然后刷新任意Context下的任意页面,输出如下:
** 执行doFilter()方法之前. **
** 过滤器开始工作 **
** 执行SimpleFilter2.doFilter()方法之前. **
** SimpleFilter2.过滤器开始工作 **
** 执行SimpleFilter2.doFilter()方法之后. **
** 执行doFilter()方法之后. **
这时候想想链式处理,每个过滤器都会输出自己的doFilter()方法处理前后。而且最早声明的过滤器会包围最末声明的过滤器。这就是链式的处理特点!
使用ServletFilter的例子有:登录验证,设置Request.setCharacterEncoding编码
- package org.lxh.filterdemo;
- import java.io.IOException;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- public class SimpleFilter implements Filter{
- public void init(FilterConfig config) throws ServletException{
- String initParam = config.getInitParameter("ref");
- System.out.println("** 过滤器初始化,初始化参数="+initParam+" **");
- }
- public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain)throws IOException,ServletException{
- System.out.println("** 执行doFilter()方法之前. **");
- System.out.println("** 过滤器开始工作 **");
- chain.doFilter(req, resp);
- System.out.println("** 执行doFilter()方法之后. **");
- }
- public void destroy(){
- System.out.println("** 过滤器销毁 **");
- }
- }
- package org.lxh.filterdemo;
- import java.io.IOException;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- public class SimpleFilter2 implements Filter{
- public void init(FilterConfig config) throws ServletException{
- String initParam = config.getInitParameter("ref");
- System.out.println("** SimpleFilter2.过滤器初始化,初始化参数="+initParam+" **");
- }
- public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain)throws IOException,ServletException{
- System.out.println("** 执行SimpleFilter2.doFilter()方法之前. **");
- System.out.println("** SimpleFilter2.过滤器开始工作 **");
- chain.doFilter(req, resp);
- System.out.println("** 执行SimpleFilter2.doFilter()方法之后. **");
- }
- public void destroy(){
- System.out.println("** SimpleFilter2.过滤器销毁 **");
- }
- }
web.xml
- <filter>
- <filter-name>simple</filter-name>
- <filter-class>org.lxh.filterdemo.SimpleFilter</filter-class>
- <init-param>
- <param-name>ref</param-name>
- <param-value>HELLO WORLD</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>simple</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <filter>
- <filter-name>simple2</filter-name>
- <filter-class>org.lxh.filterdemo.SimpleFilter2</filter-class>
- <init-param>
- <param-name>ref</param-name>
- <param-value>HELLO WORLD</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>simple2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
代码完毕,然后刷新任意Context下的任意页面,输出如下:
** 执行doFilter()方法之前. **
** 过滤器开始工作 **
** 执行SimpleFilter2.doFilter()方法之前. **
** SimpleFilter2.过滤器开始工作 **
** 执行SimpleFilter2.doFilter()方法之后. **
** 执行doFilter()方法之后. **
这时候想想链式处理,每个过滤器都会输出自己的doFilter()方法处理前后。而且最早声明的过滤器会包围最末声明的过滤器。这就是链式的处理特点!
使用ServletFilter的例子有:登录验证,设置Request.setCharacterEncoding编码
0 0
- servlet过滤器的链式处理
- servlet过滤器的链式处理
- 通过Servlet过滤器处理Web的编码问题
- 使用filter(过滤器)处理JSP和servlet的中文乱码
- Servlet的过滤器
- Servlet的Filter过滤器
- Servlet的Filter过滤器
- servlet的过滤器
- Servlet过滤器的概念
- servlet过滤器的使用
- servlet过滤器的使用
- 过滤器的使用servlet
- servlet--过滤器的使用
- servlet的过滤器定义
- servlet过滤器的使用
- Servlet的过滤器,监听器
- Servlet的过滤器Filter
- servlet的filter过滤器
- tomcat自动加载问题
- servlet客户端跳转+服务器端跳转
- 前言
- Ubuntu12.0.4安装nagios3.2.3中文
- HDU 4821 String 字符串hash map的妙用
- servlet过滤器的链式处理
- tomcat数据源
- propertis文件保存异常解决方法
- libevent源码深度剖析一
- 归并排序
- smart210 linux3.0.8内核蜂鸣器pwm驱动分析
- libevent源码深度剖析二
- 腾讯百度Offer的求职经历
- Hibernate 异常org.hibernate.LazyInitializationException: could not initialize proxy - no Session