web.xml文件中配置(servlet, spring, filter, listenr)的加载顺序 研究
2016-06-05 12:52
896 查看
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执行顺序导致的乱码,切记!
2008-05-02 01:38
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执行顺序导致的乱码,切记!
2008-05-02 01:38
发现引起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> |
相关文章推荐
- Eclipse Java代码注释模板的设置
- Springmvc基础三之注解深入学习
- eclipse的.properties文件中文显示问题
- Spring ContentNegotiatingViewResolve 源码详解
- Restful Spring MVC
- (详细教程)mac电脑(或其他系统也相同)eclipse连接windows下sql server数据库图解及文字说明
- ContentNegotiatingViewResolver spring REST中的内容协商(同一资源,多种展现:xml,json,html)
- 青云的机房组网方案(简单)-Java
- Spring MVC的多视图解析器配置及与Freemarker的集成
- Spring 3 mvc中返回pdf,json,xml等不同的view
- spring服务定位器类
- 解析mediaTypes+viewResolvers+viewResolvers
- Maven+struts2+eclipse环境搭建
- java中的this和super
- java泛型详解
- 线程池
- Java I/O 操作及优化建议(原文已发表于IBM Developworks)
- 各种Java序列化性能比较
- 记一次Apach DBUtils的使用中出现的错误报错 Incorrect syntax near ','.
- 详解Spring MVC 4之ViewResolver视图解析器