SpringMVC拦截器(1)


当然对静态资源的访问并不取决于interceptor还取决于default-servlet-handler放行静态资源


1.第一步实现HandlerInterceptor

2.配置拦截器
<mvc:mapping path="/**"/>表示对所有资源进行拦截操作

按照执行顺序应该先执行preHandler然后执行show方法,然后是postHandle,afterCompletion
由于返回的是false,所以后边是都执行不了的。

如果改为true则按顺序依次访问,也就是放行。


下面这个地方呢就是因为是返回模型对象之前,所以我们可以在返回之前修改ModelAndView
下面讲一下详细的操作,我们一般在访问目标资源进行一些操作,访问之后倒是没有什么必要了。

如果url携带的参数是yes则放行,否则跳转到error页面。
下面讲一下postHandler方法里修改ModelAndView


可以看到呢,ModelAndView对象已经修改了,这是为什么呢?
因为preHandler会先执行判断url中的参数是否为yes,yes则放行,然后执行show()方法,添加ModelAndView在返回执行执行postHandler方法更新了ModelAndView所以为itheima。

那如果我们现在有两个拦截器,执行顺序又是怎样的呢?


可以看到结果如下所示:那么这是为什么呢?
因为拦截器相当于filter,可以想象一下preHandler是过去,postHandler和afterCompletion是回来
所以穿过去的顺序是拦截器1的preHandler拦截器2preHandler2、返回去就是postHandler2、postHandler、afterCompletion2、afterCompletion1



浙公网安备 33010602011771号