servlet与filter过滤路径的问题

在下也是刚刚学习java,写的比较简单,不喜勿喷

先上3个代码我们看结果,然后再讨论
拦截:以前我对这个词的理解不深入,以前的理解为,拦截了就不让进了,就没用了。实则不然,一个请求如果连拦截都没有,那么显然是不起任何作用的。filter的过滤器,先拦截请求,经过一系列的校验,然后如果通过,那么放行,再进入servlet里,此时的请求才会起作用,如果连拦截都没有,就是连过滤器都没有经过,那么就更不会进入servlet里面,更不要说起作用了。

filter与servlet的大致流程:
整个流程大致为,请求先被filter过滤器过滤,拦截,放行,然后进入到servlet,找到与servlet中url-pattern映射匹配的路径,如果一致,则进入到相应的servlet,执行相应的方法。

++++++++++案例一:
如发送一个x.action,则此时可以被filter过滤器拦截,放行,之后就找servlet,但是servlet找不到以*.action结尾的url路径映射,所以请求资源不存在404。反之x.do,过滤器匹配不到,所以不会被放行,就不会进入servlet,故404

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>
    ----------------------
 <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
===========结果1404

++++++++++案例二:
如发送一个x.do,因为配置的为/*,则表明该过滤器可以拦截所有的HTTP 请求。但是只有以.do为结尾的请求才可进入servlet

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
    ----------------------
 <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
==================结果:只要是以.do结尾的请求都可以被拦截

++++++++++案例三:
不解释

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>
    ----------------------
 <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>
==================结果:只有.action结尾的请求都可以被拦截

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值