filter-mapping的执行顺序和字符集设置的优先级
2012-04-05 12:44
369 查看
转载地址:http://www.blogjava.net/jjshcc/archive/2011/12/29/367501.html
问题起因:
今天遇到一个乱码问题,以前已经配置好了的呀。而且是普遍现象,看来是公共的变更引起的问题。
分析过程:
于是开始进行调试,因为是公共问题,所以就对web.xml最近的变更进行增删调试,发现如果使用SecurityFilter就报错,去掉久正常了。
仔细检查,发现如下现象:
1、在设置字符集之前, 提前调用了request.getParameter()方法,就会出现问题。即使后来再设置字符集,随后的action接收的数据也会乱码。
2、对于同一个url,如:*.do,filter-mapping 是有顺序的,按照web.xml中的配置顺序。
从网上查到的结论:
根据servlet2.3规范filter执行是按照web.xml配置的filter-mapping先后顺序进行执行,所以上面的配置会导致遇见*.do的url请求,先进行SecurityFilter的过滤器处理,这时候没有做编码处理,已经是乱码,到下面的filter处理时已经时乱码,再做编码处理已经没有用处。
解决办法:
错误的顺序:
<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>
正确的顺序:
<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>
To get more info about me or to know more about Portuguese Translation Studio ,please access www.puyufanyi.com
问题起因:
今天遇到一个乱码问题,以前已经配置好了的呀。而且是普遍现象,看来是公共的变更引起的问题。
分析过程:
于是开始进行调试,因为是公共问题,所以就对web.xml最近的变更进行增删调试,发现如果使用SecurityFilter就报错,去掉久正常了。
仔细检查,发现如下现象:
1、在设置字符集之前, 提前调用了request.getParameter()方法,就会出现问题。即使后来再设置字符集,随后的action接收的数据也会乱码。
2、对于同一个url,如:*.do,filter-mapping 是有顺序的,按照web.xml中的配置顺序。
从网上查到的结论:
根据servlet2.3规范filter执行是按照web.xml配置的filter-mapping先后顺序进行执行,所以上面的配置会导致遇见*.do的url请求,先进行SecurityFilter的过滤器处理,这时候没有做编码处理,已经是乱码,到下面的filter处理时已经时乱码,再做编码处理已经没有用处。
解决办法:
错误的顺序:
<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>
正确的顺序:
<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>
To get more info about me or to know more about Portuguese Translation Studio ,please access www.puyufanyi.com
相关文章推荐
- 【字符编码问题】剖析网页字符集的设置顺序的优先级
- Servlet 3.0 之@WebFilter怎么控制多个filter的执行顺序
- @WebFilter执行先后优先级问题
- servlet-mapping与filter-mapping 的处理顺序
- servlet-mapping与filter-mapping 的处理顺序
- Dubbo的Filter执行顺序分析
- 采用Filter完成字符集的统一设置
- Servlet中filter的执行顺序以及urlPatterns和servletNames之间的关系
- jquery中ajax函数执行顺序问题之如何设置同步
- filter执行顺序与实例
- 探究Servlet Filter 执行顺序
- [原创]java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter
- Filter mapping specifies an unknown filter name ----filter标签在web.xml里的顺序
- WEB API 系列(二) Filter的使用以及执行顺序
- WEB API 系列(二) Filter的使用以及执行顺序
- spring boot filter 配置多个时,执行顺序
- listener、filter、servlet 执行顺序
- CSS的执行顺序和优先级问题--------Day12
- TestNG设置输出测试报告的内容级别和设置测试用例按顺序执行
- Asp.net Mvc Framework 七 (Filter及其执行顺序)