web.xml学习(3)_filter

Filter介绍

Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servlet的区别在于:它不能直接向用户生成响应。完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。

Filter有如下几个用处。

在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest。

根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据。

在HttpServletResponse到达客户端之前,拦截HttpServletResponse。

根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。

Filter有如下几个种类。

用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请求。

日志Filter:详细记录某些特殊的用户请求。

负责解码的Filter:包括对非标准编码的请求解码。

能改变XML内容的XSLT Filter等。

Filter可负责拦截多个请求或响应;一个请求或响应也可被多个请求拦截。

创建一个Filter只需两个步骤:

建Filter处理类;

web.xml文件中配置Filter。

6.filter:过滤器配置:将一个名字与一个实现javaxs.servlet.Filter接口的类相关联

在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称之为一个Filter链。

web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter,

当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。

在doFilter方法中,开发人员如果调用了FilterChain对象的doFilter方法,则web服务器会检查FilterChain对象中是否还有filter,

如果有,则调用第2个filter,如果没有,则调用目标资源。

<filter>
    <filter-name>testFitler</filter-name>
    <filter-class>org.test.TestFiter</filter-class>
    <init-param>
      <param-name>word_file</param-name>
      <param-value>/WEB-INF/word.txt</param-value>
    </init-param>
</filter>

<filter-name>用于为过滤器指定一个名字,该元素的内容不能为空。

<filter-class>元素用于指定过滤器的完整的限定类名。

<init-param>元素用于为过滤器指定初始化参数,它的子元素<param-name>指定参数的名字,<param-value>指定参数的值。

在过滤器中,可以使用FilterConfig接口对象来访问初始化参数。

FilterConfig接口:

用户在配置filter时,可以使用<init-param>为filter配置一些初始化参数,

当web容器实例化Filter对象,调用其init方法时,会把封装了filter初始化参数的filterConfig对象传递进来。

因此开发人员在编写filter时,通过filterConfig对象的方法,就可获得:

String getFilterName():得到filter的名称。

String getInitParameter(String name): 返回在部署描述中指定名称的初始化参数的值。如果不存在返回null.

Enumeration getInitParameterNames():返回过滤器的所有初始化参数的名字的枚举集合。

public ServletContext getServletContext():返回Servlet上下文对象的引用。

<filter-mapping>元素用于设置一个 Filter 所负责拦截的资源。

一个Filter拦截的资源可通过两种方式来指定:Servlet 名称和资源访问的请求路径

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/aspx/

<filter-name>子元素用于设置filter的注册名称。该值必须是在<filter>元素中声明过的过滤器的名字

<url-pattern>设置 filter 所拦截的请求路径(过滤器关联的URL样式)

<servlet-name>指定过滤器所拦截的Servlet名称。

<dispatcher>指定过滤器所拦截的资源被 Servlet 容器调用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,

默认REQUEST。用户可以设置多个<dispatcher> 子元素用来指定 Filter 对资源的多种调用方式进行拦截。

<dispatcher> 子元素可以设置的值及其意义:

REQUEST:当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器就不会被调用。

INCLUDE:如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。

FORWARD:如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。

ERROR:如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。

<filter>
     <!-- 定义Filter的名称.  -->
     <filter-name>URIFilter</filter-name>
     <!-- 定义Filter的类名称 -->
     <filter-class>org.cjj.filter.URIFilter</filter-class>
     <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
     </init-param>
</filter>
  <!-- filter-mapping 元素的两个主要子元素filter-name和url-pattern.用来定义Filter所对应的URL.和下面的servlet-mapping一样  -->
<filter-mapping>
     <!-- 定义Filter的名称,和上面定义的Filter名称要一致 -->
     <filter-name>URIFilter</filter-name>
     <!-- ilter所对应的RUL,这里是所有的URL -->
     <url-pattern>/*</url-pattern>
</filter-mapping>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索filter
, 元素调用
, 过滤器
, 元素
, 用户
, shiro被拦截访问
, filter过滤
, 一个
, 拦截过滤器
, servlet.Filter
, 过滤参数
, filter方法
, filter过滤器
ng-style使用filter
,以便于您获取更多的相关知识。

时间: 2024-10-23 14:48:30

web.xml学习(3)_filter的相关文章

web.xml学习(1)_icon,display-name,description,distributable

1.<icon>:Web应用图标:指出IDE(例如eclipse)和GUI(例如Visual Studio)工具用来表示Web应用的大图标和小图标 <!-- icon元素包含small-icon和large-icon两个子元素.用来指定web站台中小图标和大图标的路径. -->      <icon>          <!--small-icon元素应指向web站台中某个小图标的路径,大小为16 X 16 pixel,但是图象文件必须为GIF或JPEG格式,扩展

web.xml学习(2)_context-param

5.context-param 元素用来设定web站台的环境参数(context),它包含两个子元素:param-name和param-value. <param-name>参数名称</param-name>设定Context名称 <param-value>值</param-value>设定Context名称的值 范例: <context-param>   <param-name>param_name</param-name&g

web.xml学习(8)_jsp-config

13.jsp-config jsp-config元素主要用来设定JSP的相关配置,<jsp:config>包括<taglib>和<jsp-property-group>两个子元素.其中<taglib>元素 在JSP 1.2时就已经存在了;而<jsp-property-group>是JSP 2.0新增的元素. taglib :对标记库描述符文件(Tag Libraryu Descriptor file)指定别名.此功能使你能够更改TLD文件的位置,

web.xml学习(7)_mime-mapping、welcome-file-list、error-page

10.mime-mapping:mime-mapping包含两个子元素extension和mime-type.定义某一个扩展名和某一MIME Type做对映. MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型, 当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开.多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式 浏览器接收到文件后,会进入插件系统进行查找,查

web.xml学习(6)_session-config

9.session-config :如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存. 可通过使用HttpSession的setMaxInactiveInterval方法明确设置单个会话对象的超时值, 或者可利用session-config元素制定缺省超时值. <!-- session-config包含一个子元素session-timeout.定义web站台中的session参数.  --> <session-config>    <!-- 定义这个web站台所有

web.xml学习(5)_servlet

8.servlet:在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面.Servlet元素就是用来完成此项任务的. 大多数服务器具有一个缺省的serlvet URL:http://host/webAppPrefix/servlet/packageName.ServletName. 但最好使用定制的URL <servlet> <servlet-name>snoop</servlet-name> <servlet-cla

web.xml学习(4)_listener

7.listener:是Servlet的监听器,它可以监听客户端的请求.服务端的操作等.通过监听器,可以自动激发一些操作, 比如监听在线的用户的数量.当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1. <listener> listener元素用来定义Listener接口,它的主要子元素为<listener-class> <listen-class>Listener的类名称&l

Spring MVC 原子学习法 之 web.xml 中的配置

Spring MVC  原子学习法 之  web.xml 中的配置 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 由上图可以看得出,Spring-MVC 应用的配置要从 JavaWeb 的配置

Servlet &amp; JSP : web.xml 配置学习

一.定义 定义时注意:xml元素是区分大小写的,以下必须小写: <web-app></web-app> 二.url-pattern 1)url-pattern 的值必须以/或者*.开头 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14   <servlet>     <servlet-name>TestName</servlet-name>     <servlet-class>sedion.jeffli.serv