`
gotothework
  • 浏览: 81329 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
最近访客 更多访客>>
社区版块
存档分类
最新评论

Servlet的Filter过滤器

阅读更多
过滤器是请求和响应之间的一种WEB组件,它驻留在服务器端,用来截取客户端与资源之间的请求,并对这些信息进行“过滤”。

Servlet容器对部署描述符中声明的每一个过滤器只会创建一个实例。与Servlet类似,容器将在同一个过滤器实例上运行多个线程来同时为多个请求服务,因此开发过滤器时要注意线程安全问题。

当Web容器接受到一个对资源的请求时,它将判断是否有过滤器与这个资源相关联,如果有那么容器将把请求交给过滤器进行处理,在过滤器中可以改变请求的内容,或重新设置请求的报头信息,然后将请求发送给目标资源,当目标资源对请求做出响应时,容器同样会将响应转发给过滤器,在过滤器中可以对响应的内容进行过滤,从上面的过程我们可以看出,客户端和目标资源不需要知道过滤器的存在,对于客户端来说是透明的。

过滤器位于javax.servlet包中,有3个主要方法:
1.init(FilterConfig config)
  Web容器调用方法来初始化过滤器,容器在调用该方法时,向过滤器传递FilterConfig对象,FilterConfig用法和ServletConfig类似。利用FilterConfig对象可以得到ServletContext对象,以及在部署描述符中配置的过滤器的初始化参数。

2.doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
  doFilter()方法类似Servlet接口的service()方法。当客户端请求目标资源的时候,容器会调用与这个目标资源想关联的过滤器的doFilter()方法。在这个方法中,可以对请求和响应进行处理,实现过滤器的功能。在特定的操作完成后,可以调用chain.doFilter()方法将请求传给下一个过滤器(或目标资源),也可以直接向客户端返回响应信息,或利用RequestDispatcher的forward()和include()方法,以及sendRedirect()方法转发。
但是要注意,这个方法的请求响应参数的类型是ServletRequest和ServletResponse,也就是说过滤器的使用不依赖具体的协议。

3.destroy()
  Web容器调用该方法只是过滤器的声明周期结束。

下面看下过滤器在Web.xml中的声明:
<filter>
    <filter-name>setEncoding</filter-name>
    <filter-class>com.test.CharFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>setEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Filter的声明和Servlet的类似,从上面的简单的配置中就可以看到,不做过多说明,主要说下<url-pattern>元素中的参数:
1.REQUEST,当用户直接访问页面时,Web容器将会调用过滤器,如果目标资源是通过RequestDispatcher的includ()或forward()方法访问时,那么不会调用这个过滤器。
2.FORWARD,如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外过滤器不会被调用。
3.INCLUDE,如果目标资源是通过RequestDispatcher的include()方法访问时,调用过滤器,其他不会调用。
4.ERROR,如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用,除此之外不会被调用。
5./*,所有请求都会调用。

过滤器应用的很广,特别是在Spring中,AOP,Acegi都应用到了过滤器的技术,所以,我们可以看出,只有很好的掌握了Servlet的各种技术,我们在后期的学习中才能更加的得心应手。在这里,我只是简单的介绍了过滤器基础的东西,更加高级的,希望与大家一起学习讨论。
2
1
分享到:
评论

相关推荐

    servlet过滤器技术实例,

    servlet,filter,过滤器技术servlet,filter,过滤器技术

    servlet 过滤器做的简单登陆demo

    servlet 过滤器做的简单登陆demo 初学者的简单例子。

    Servlet过滤器小实例

    比较好也比较常见的方法是用专门的servlet过滤器进行过滤。java中有个Filter类专门从事这类工作,下面以一个简单的实例进行演示: 实例说明:假设有一个web应用软件,如果是正常途径登录,我们会在其session中放入...

    servlet过滤器实例经典过滤器

    servlet过滤器实例经典过滤器,手把手交你配置过滤器,五大常用过滤器源码,走过路过的同事们注意了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Servlet过滤器使用

    1、Filter接口:所有的Servlet过滤器类都必须实现javax.servlet.Filter接口 a、init(FilterConfig): 这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取...

    Servlet配置过滤器 Filter

    Servlet配置过滤器 Filter

    servlet 过滤器例子 filter

    servlet 过滤器例子 filterservlet 过滤器例子 filterservlet 过滤器例子 filter 如果是action 则需要改动url patten

    servlet里过滤器设置

    sevlet里设置过滤器,利用索引过滤不符合自己想要的url,达到重定向的目的

    tomcat、struts2、servlet Filter(过滤器) 工作原理

    tomcat、struts2、servlet Filter(过滤器) 工作原理 学习servlet的好资料,懂得工作原理,更容易理解问题.

    jsp servlet中的过滤器Filter配置总结

    jsp servlet中的过滤器Filter配置总结 1。如果要映射过滤应用程序中所有资源: &lt;filter&gt; &lt;filter-name&gt;loggerfilter&lt;/filter-name&gt; &lt;filter-class&gt;myfilter.LoggerFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-...

    servlet过滤器Filter入门

    servlet过滤器Filter入门,Servle过滤器的使用是Servlet中的重要内容,此文档就是针对此内容编写的。

    Servlet3.0使用注解标注过滤器(Filter)

    Servlet3.0使用注解标注过滤器 Servlet3.0使用注解标注过滤器

    servlet四个有用的过滤器

    servlet四个有用的过滤器,包括中文转码,缓存过滤等等

    Servlet之过滤器

    很有用的几个过滤器编程的例子,验证非法文字、验证登录和统一编码

    JavaWeb Servlet中Filter过滤器的详解

    JavaWeb Servlet中Filter过滤器的详解 1.简述  Filter过滤器,对web服务器所有web资源进行过滤,从而实现一些特殊的功能(权限访问控制、过滤敏感词汇、压缩响应信息)。Filter能够对Servlet容器的请求和响应进行检查...

    servlet过滤器详解

    jsp中servlet的过滤器详解,在网上找了很久,这个是最清楚最简单的,容易入门,也能明白他的概念

    JAVAWeb全课程笔记( html版)

    目录 ...CSS总结 JavaScript总结 DOM总结 tomcat服务器 ...Servlet Filter 过滤器 HTTP 协议 文件上传和下载 Servlet事件监听器 JavaMail开发 (案例)Estore电子商城 软件国际化 Java基础加强 JQuery Ajax JSON

    如何配置Filter过滤器处理JSP中文乱码

    配置Filter过滤器处理JSP中文乱码 参考Tomcat服务器目录webapps的examples示例 简单配置步骤: 1.在项目web.xml文件添加过滤器标记&lt;filter&gt;和&lt;filter-mapping&gt;; 2.实现过滤器代码; 3.对Tomcat服务器conf目录里的...

    java servlet 过滤器

    如果用户没有登陆,直接通过url访问其它页面则返回到登陆页面。 用servlet的过滤器实现,不会影响到其它模块的功能。

    论文研究-基于Servlet Filter的访问控制过滤器插件 .pdf

    基于Servlet Filter的访问控制过滤器插件,汪克炎,龙毅宏,对于部署在互联网上的J2EE Web应用系统,用户的安全访问是至关重要的。本文介绍使用Servlet Filter技术设计一种可插入的、可扩展的、对��

Global site tag (gtag.js) - Google Analytics