您的位置:首页 > 移动开发

servlet-mapping与filter-mapping 的处理顺序

2017-08-24 17:36 597 查看
可以把它理解成在servlet处理过程中,普通servlet和过滤器谁先执行 

答案是过滤器先执行:不管url-pattern的值一样或者不一样 

这里有个通俗的例子: 

到百度贴吧回答问题,这就是一个普通servlet要完成的工作(提交一个问题) 

可是贴吧规定:用户未登陆不能回答问题,这就是过滤器的工作 

想象以下,当我点击提交回答的时候,肯定是先要进行用户登陆的判断,如果登陆了才把用户的回答提交,未登陆就提示其先登陆 

对不对? 

<filter-mapping> 

<filter-name>aaa</filter-name> 

<url-pattern>/a/b</url-pattern> 

</filter-mapping> 

<servlet-mapping> 

<servlet-name>sss</servlet-name> 

<url-pattern>/a/b</url-pattern> 

</servlet-mapping> 

<servlet-mapping> 

<servlet-name>sssaa</servlet-name> 

<url-pattern>/a/ba</url-pattern> 

</servlet-mapping> 

对于上面的配置,执行的情况是: 

用户请求"/a/b" 

filter先判断是不是要过滤这个请求:根据 

<url-pattern>/a/b</url-pattern> 

发现该请求要执行过滤操作,于是执行doFilter中的代码 

用户请求"/a/ba" 

filter先判断是不是要过滤这个请求:根据 

<url-pattern>/a/b</url-pattern> 

发现该请求不用执行过滤操作,于是doFilter中的代码没又执行 
以上言论引用处百度贴吧,个人觉得通俗易懂,值得一贴!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: