`

java中过滤器不起作用的原因

    博客分类:
  • Java
阅读更多

在应用中,有时候会用到过滤器,也有时候命名写好了配好了过滤器信息,可是过滤器就是不起作用。

导致过滤器不起作用的原因,目前我碰到的有两种:一个是过滤器的顺序问题,一个是过滤文件类型。

 

先说说过滤器的顺序问题。

在项目里面,要是用SSH框架的话,web.xml文件中除了自己写的过滤器以外,还会有struts、Hibernate等的过滤器,这样子经常就会出现题目当中说的问题(尤其是过滤器过滤的是同一种类型,如.actioon)。

如:原来的过滤器顺序是这样子的:

<filter>
	<filter-name>struts2</filter-name>
	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>struts2</filter-name>
	<url-pattern>*.action</url-pattern>
</filter-mapping>

<filter>
	<filter-name>UserFilter</filter-name>
	<filter-class>com.wjl.MyFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>UserFilter</filter-name>
	<url-pattern>*.action</url-pattern>
</filter-mapping>

 这个时候的过滤器可能会不起作用,因为请求的时候先走了struts的过滤器,自己写的过滤器就不执行了。但是要是换个顺序,也就是如下的顺序,让请求先走自己的过滤器再走struts的过滤器,这样子自己的过滤器就起作用了。

<filter>
	<filter-name>UserFilter</filter-name>
	<filter-class>com.wjl.MyFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>UserFilter</filter-name>
	<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter>
	<filter-name>struts2</filter-name>
	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>struts2</filter-name>
	<url-pattern>*.action</url-pattern>
</filter-mapping>

 

再说说过滤类型导致的不起作用。

在web.xml配置文件里面,很多地方是可以连续使用多个文件的,用逗号隔开就好,如:

<context-param>
	<description>配置spring配置文件的路径</description>
	<param-name>contextConfigLocation</param-name>
	<param-value>/WEB-INF/classes/daosql.xml,/WEB-INF/classes/pageContorl.xml,/WEB-INF/classes/base.xml</param-value>
</context-param>

这个时候的<param-value >就可以放好多参数,用逗号隔开就好,而且每个都起作用。

由上面那种类似的例子就容易联想到在过滤器里面使用同样的方法配置多个过滤类型,如:

<filter-mapping>
	<filter-name>UserFilter</filter-name>
	<url-pattern>*.action,*.jsp</url-pattern>
</filter-mapping>

但实际上这样子是不对的。这样配置后,无论是action还是jsp都不会走过滤器。还是得把他们拆开才能用。拆开之后两者类型都走过滤器。

<filter>
	<filter-name>UserFilter</filter-name>
	<filter-class>com.wjl.MyFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>UserFilter</filter-name>
	<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
	<filter-name>UserFilter</filter-name>
	<url-pattern>*.jsp</url-pattern>
</filter-mapping
分享到:
评论

相关推荐

    java中文过滤器

    在Java Web开发中,"java中文过滤器"是一种常见的技术,用于处理B/S(Browser/Server)架构下中文字符编码的问题。在B/S系统中,数据通常通过HTTP协议在网络间传输,而HTTP协议默认并不规定字符编码,这可能导致在...

    JAVA过滤器 过滤器

    JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器

    Java过滤器,字符过滤,标签过滤

    Java过滤器是Java Web开发中的一个重要概念,它主要用于在HTTP请求和响应的过程中对数据进行预处理或后处理。在这个小样例中,我们看到的是如何使用Java实现字符过滤和标签过滤,以及字符编码的转换。这在处理用户...

    JAVA过滤器标准代码

    总之,JAVA过滤器作为Java Web开发中的一个重要组成部分,提供了强大的功能和灵活性,可以用于解决多种实际问题,包括但不限于编码处理、权限验证、日志记录、异常处理、数据格式转换和缓存优化等。理解和掌握过滤器...

    java * Repeatable 过滤器 * Repeatable 过滤器 * Repeatable 过滤器

    java * Repeatable 过滤器 * Repeatable 过滤器 * Repeatable 过滤器java * Repeatable 过滤器 * Repeatable 过滤器 * Repeatable 过滤器java * Repeatable 过滤器 * Repeatable 过滤器 * Repeatable 过滤器java * ...

    java 常用过滤器

    在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许开发者在请求被处理之前或之后执行一些额外的操作。下面将详细讲解Java中五种常用的过滤器及其应用场景。 1. **使浏览器不缓存页面的过滤器** ...

    java的过滤器

    Java的过滤器(Filter)是Java Web开发中的一个重要概念,主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许开发者在请求被实际处理之前或之后进行拦截,执行预处理或后处理操作,例如权限校验、数据转换、...

    java字符过滤器,过滤器

    Java过滤器就是为了解决这些问题,确保数据在处理过程中保持正确的编码格式。 在Java中,字符乱码通常是由于字符编码不一致导致的。例如,一个以UTF-8编码的文件被误认为是GBK编码来读取,就会出现乱码现象。为了...

    JAVA的中文字符过滤器

    中文字符过滤器 JAVA的中文字符过滤器 EncodingFilter过滤器

    Java自定义过滤器

    1. **过滤器接口**:`javax.servlet.Filter`是Java Web应用中的过滤器接口,所有自定义过滤器都必须实现该接口。 2. **生命周期方法**: - `init(FilterConfig config)`:过滤器初始化方法,仅执行一次,在容器启动...

    Java中过滤器的使用

    在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许我们在数据处理之前或之后执行特定逻辑,实现如权限控制、字符编码转换、日志记录等功能。本篇文章将详细探讨Java中过滤器的使用,并通过一个具体的...

    Java中配置过滤器

    ### Java中配置过滤器 在Java Web开发中,过滤器(Filter)是一种非常重要的机制,它可以在请求到达目标资源之前或响应返回客户端之后执行特定的操作。例如,可以使用过滤器来实现统一的编码设置、安全控制、日志...

    java过滤器的使用

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在请求被发送到目标资源(如Servlet、JSP页面)之前或之后进行预处理和后处理。在这个场景中,...

    accp java过滤器 PPT

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。在ACCP课程中,这个“accp java过滤器 PPT”很可能是为了帮助学习者深入理解如何在Web应用程序中有效地使用...

    JAVA Web中过滤器

    在JAVA Web开发中,过滤器(Filter)是一个至关重要的组件,它主要负责在请求被Servlet处理之前或之后执行一些预处理或后处理操作。过滤器是JAVA Servlet API的一部分,通过实现javax.servlet.Filter接口来创建...

    过滤器(java编写的过滤器)

    在Java Web开发中,过滤器(Filter)是一种非常重要的技术组件,它可以在请求到达目标资源(如Servlet或JSP页面)之前或之后执行某些操作。过滤器可以用来实现各种功能,如用户认证、权限检查、编码转换、日志记录等。...

    java过滤器简单实例

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在请求被处理之前或之后进行预处理和后处理,以此来拦截、修改或者增强请求和响应。在这个简单...

    java过滤器

    java过滤器java过滤器java过滤器java过滤器

    java 中如何使用filter过滤器

    在Java Web开发中,Filter(过滤器)是一个强大的工具,它允许开发者在数据处理的前后进行拦截和修改。本文将详细介绍如何在Java中使用Filter过滤器,以及如何配置相关的配置文件,让你一目了然。 ### 1. Filter...

    javaFilter自定义编码过滤器

    * FilterChain 接口:FilterChain 接口是 Java 中的一种过滤器链接口,用于将多个过滤器连接起来,以便实现链式调用。它提供了一个 doFilter() 方法,用于执行下一个过滤器。 二、自定义编码过滤器 在上面的代码中...

Global site tag (gtag.js) - Google Analytics