今天配置一个判断用户是否处于会话状态的filter,如果处于会话期则免登陆,结果配置好filter后,测试时发现第一登陆正常,而在会话期免登陆时则发生乱码。
经调试发现,免登陆filter会在编码处理filter前截获request,然后查看web.xml 发现免登陆filter-mapping在编码处理filter-mapping前。最后将位置调换一下,则一切正常。
结论:filter的截获优先级是在都满足filter-mapping条件下 谁在前谁先截获,是按照web.xml配置顺序的。
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>session</filter-name>
<url-pattern>*.do</url-pattern>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>