快速业务通道

Servlet过滤器介绍之原理分析 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

Servlet过滤器介绍之原理分析

时间:2011-04-09 51cto zhangjunhd

1.Servlet过滤器

1.1 什么是过滤器

过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加 到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过 滤器可以作如下的选择:

①以常规的方式调用资源(即,调用servlet或JSP页面)。

②利用修改过的请求信息调用资源。

③调用资源,但在发送响应到客户机前对其进行修改。

④阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。

1.2 Servlet过滤器的基本原理

在Servlet作为过滤器使用时,它可以对客户的请求进行处理。处理完成后,它会交给下 一个过滤器处理,这样,客户的请求在过滤链里逐个处理,直到请求发送到目标为止。例如 ,某网站里有提交“修改的注册信息”的网页,当用户填写完修改信息并提交后,服务器在 进行处理时需要做两项工作:判断客户端的会话是否有效;对提交的数据进行统一编码。这 两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数 据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。

2.Servlet过滤器开发步骤

开发Servlet过滤器的步骤如下:

①编写实现Filter接口的Servlet类。

②在web.xml中配置Filter。

开发一个过滤器需要实现Filter接口,Filter接口定义了以下方法:

①destory()由Web容器调用,初始化此Filter。

②init(FilterConfig filterConfig)由Web容器调用,初始化此Filter。

③doFilter(ServletRequest request,ServletResponse response,FilterChain chain )具体过滤处理代码。

3.一个过滤器框架实例

SimpleFilter1.java

package com.zj.sample; 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 SimpleFilter1 implements Filter {    @SuppressWarnings("unused")    private FilterConfig filterConfig;    public void init(FilterConfig config) throws ServletException {     this.filterConfig = config;    }    public void doFilter(ServletRequest request, ServletResponse response,       FilterChain chain) {     try {       System.out.println("Within SimpleFilter1:Filtering the Request...");       chain.doFilter(request, response);// 把处理发送到下一个过滤器       System.out .println("Within SimpleFilter1:Filtering the Response...");     } catch (IOException ioe) {       ioe.printStackTrace();     } catch (ServletException se) {       se.printStackTrace();     }    }    public void destroy() {     this.filterConfig = null;    } }

Servlet过滤器介绍之原理分析(2)

时间:2011-04-09 51cto zhangjunhd

SimpleFilter2.java

package com.zj.sample; 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 {    @SuppressWarnings("unused"

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号