`
- 浏览:
33165 次
- 性别:
- 来自:
深圳
-
web.xml 文件中一般包括 servlet, spring, filter, listenr的配置。那么他们是按照一个什么顺序加载呢?
加载顺序会影响对spring bean 的调用。
比如filter 需要用到 bean ,但是加载顺序是 先加载filter 后加载spring,则filter中初始化操作中的bean为null;
首先可以肯定 加载顺序与他们在web.xml 文件中的先后顺序无关。
web.xml 中 listener 和 serverlet 的加载顺序为 先 listener 后serverlet
最终得出结果:先 listener >> filter >> servlet >> spring
所以,如果过滤器中要使用到 bean,可以将spring 的加载 改成 Listener的方式
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
搞定!
关于他们的内部执行顺序,也需要注意,如下面文章中遇到的问题
web.xml的filter执行顺序导致的乱码,切记!
发现引起bug的原因是web.xml的下面几行:
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
根据servlet2.3规范filter执行是按照web.xml配置的filter-mapping先后顺序进行执行,所以上面的配置会导致遇见*.do的url请求,先进行SecurityFilter的过滤器处理,这时候没有做编码处理,已经是乱码,到下面的filter处理时已经时乱码,再做编码处理已经没有用处。
修正方式,调整filter-mapping顺序,如下:
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
web.xml加载顺序,详解,帮助优化java web应用开发
web.xml加载顺序与web.xml常用节点解析
Web.xml加载顺序[汇编].pdf
本篇文章小编为大家介绍,关于JSP配置文件web.xml加载顺序详解。需要的朋友参考下
web.xml 中的listener、 filter、servlet 加载顺序及其详解
本源码将详细介绍web.xml配置中servlet,filter,listener的加载顺序,可以让学习者更好的了解web.xml各种属性配置,自己写的东西,不足之处请大家见谅,顺便收点积分也好下资料,谢谢
关于filter、servlet在web.xml配置及加载顺序
web.xml文件加载顺序[归纳].pdf
了解web.xml的配置信息和加载顺序,有助于理解框架的流程,
java servlet spring web filter listenr
本篇文章主要介绍了JavaWeb中web.xml初始化加载顺序详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> 整个配置文件的大体结构如下: <creator id="..." class="..."/> <converter id="..." class="..."/>...
主要介绍了web.xml中servlet, bean, filter, listenr 加载顺序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在web.xml文件中指定的加载顺序将会覆盖Web模块中web-fragment.xml文件所指定的加载顺序.假如在Web应用的web.xml文件中增加如下配置
一、1、启动一个WEB项目,WEB容器会先去读取它的配置文件web.xml,读取和两个节点 二、load-on
1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 .............................................
1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 ...............................................
本文后面的章节将从数据持久层->业务层->Web层的开发顺序,逐层讲解文件上传下载的开发过程。 数据持久层 1、领域对象及映射文件 您可以使用Hibernate Middlegen、HIbernate Tools、Hibernate ...
虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows,Mac OS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML...