在web.xml中配置多个filter是怎么执行的?

问题描述

如题:在web.xml中配置了两个或者多个的filter,他们的执行顺序是什么,是依次执行(也就是按顺序执行,配置在前的先执行,配置在后的后执行),还是怎么回事:如下代码: 这是公司一个项目的架构,我在研究的时候发现的,始终搞不明白:web.xml的部分配置文件: <!--配置的filter--> <filter><filter-name>struts2Filter</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><!-- UrlRewrite filter --><filter><filter-name>urlRewriteFilter</filter-name><filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class></filter> <!--配置的filtermapping--> <filter-mapping><filter-name>struts2Filter</filter-name><url-pattern>*.action</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping><filter-mapping><filter-name>urlRewriteFilter</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping>就像这两个,到底谁先执行,谁后执行?

解决方案

filter的执行类似于栈,执行顺序是按照在配置文件中配置的顺序执行的,比如定义两个filter(f1,f2),过滤的对象为index.jsp,则客户的请求(req)和响应(res)顺序是req->f1->f2>index.jsp->f2->f1->res。

时间: 2024-09-06 11:26:19

在web.xml中配置多个filter是怎么执行的?的相关文章

struts 2在web.xml中配置详情

web.xml是web应用中加载有关servlet信息的重要配置文件,起着初始化servlet,filter等web程序的作用. 通常,所有的MVC框架都需要Web应用加载一个核心控制器,那采取什么方法加载这样的核心控制器呢,servlet或filter成为了很好的选择, 因为它们会随着web服务的启用而自动的载入.对于Struts 2框架而言,需要加载FilterDispatcher, 只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载应用的Str

web.xml 中的listener、 filter、servlet 加载顺序及其详解

在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰.         首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> filter -> servlet         同时还存在着这样一种配置节:context-pa

spring,struts2整合时web.xml中配置过滤器后部署报错

问题描述 <?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.s

web.xml中配置classpath:和classpath*:的区别和意思

首先 classpath是指 WEB-INF文件夹下的classes目录 解释classes含义: 1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml 2.存放模板文件 eg.actionerror.ftl 3.存放class文件 对应的是项目开发时的src目录编译文件 总结:这是一个定位资源的入口 如果你知道开发过程中有这么一句话:惯例大于配置 那么也许你会改变你的想法 对于第二个问题 这个涉及的是lib和classes下文件

紧急求助,新网虚拟机在web.xml中配置连接申请了server报错

问题描述 在新网的虚拟机部署了一个.net的网站,然后用的是sqlserver的数据库,移植到虚拟机上面以后需要改连接数据库的配置,他的文档的要求是我改的是这样的但是这样的话就会报错不知道是怎么回事,还请大神帮忙,我应该写那个配置文件 解决方案 解决方案二:ConnectionString原来可用的是什么样子的解决方案三:看stacktrace,程序中使用了SqlConnection,这个不需要指定Provider的,把provider去掉试一试.

web.xml中的所有配置,Listener和Filter的加载顺序

web.xml 中的listener. filter.servlet 加载顺序及其详解 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰.         首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> filter

JavaWeb工程中web.xml基本配置

一.理论准备         先说下我记得xml规则,必须有且只有一个根节点,大小写敏感,标签不嵌套,必须配对. web.xml是不是必须的呢?不是的,只要你不用到里面的配置信息就好了,不过在大型web工程下使用该文件是很方便的,若是没有也会很复杂.         那么web.xml能做的所有事情都有那些?其实,web.xml的模式(Schema)文件中定义了多少种标签元素,web.xml中就可以出现它的模式文件所定义的标签元素,它就能拥有定义出来的那些功能.web.xml的模式文件是由Sun

解析web.xml中在Servlet中获取context-param和init-param内的参数

web.xml里面可以定义两种参数:1.application范围内的参数,存放在servletcontext中,在web.xml中配置如下: 复制代码 代码如下: <context-param>            <param-name>context/param</param-name>            <param-value>avalible during application</param-value>   </con

java-web.xml中配置地址信息如何从properties中获取

问题描述 web.xml中配置地址信息如何从properties中获取 现在有一个java项目,其中包含web.xml,还有spring的一些配置文件,比如applicationcontext.xml还有一些jsp文件.现在想在这三类文件中添加一些IP配置,三类文件里面都要用到,想统一进行配置放在properties文件中,如何配置或写程序读取才能实现三种文件都能通过类似${变量名}或函数的方式获取配置值? 解决方案 我觉得你还是把你的需求说出来比较好 感觉你这个问题有点奇怪,不晓得你要达到什么