拦截器
用处:拦截用户请求、做请求判断处理
实现步骤:
- 定义类实现
HanderIntercept
接口,重写里面的方法,可选择性重写 - 在springMVC中声明拦截器,让框架知道
<mvc:intercepts>
<mvc:intercept>
<!--指定拦截器的请求URL地址-->
<mvc:mapping path="/**"/>
<!--声明拦截对象-->
<bean class="拦截器的全限定类名"/>
<mvc:interceptor/>
</mvc:intercept>
<mvc:intercepts>
拦截器的执行时间:
- 请求之前 — 预处理方法,整个项目的入口,为真可向下继续执行
- 在控制器执行完后— 对原来的执行结果做二次修正
- 在请求处理后 —
多个拦截器的执行顺序
在springMVC的配置文件处声明多个拦截器,接着在写类都去实现HanderIntercept
接口,重写响应的方法,在框架中保存多个拦截器是ArrayList,按声明先后顺序放入到ArrayList集合中。
<mvc:intercepts>
<!--第一个拦截器-->
<mvc:intercept>
<mvc:mapping path="/**"/>
<bean class="拦截器的全限定类名"/>
<mvc:interceptor/>
</mvc:intercept>
<!--第二个拦截器-->
<mvc:intercept>
<mvc:mapping path="/**"/>
<bean class="拦截器的全限定类名"/>
<mvc:interceptor/>
</mvc:intercept>
<mvc:intercepts>
执行顺序:
两个拦截器都为真:
拦截器11–>拦截器21—>处理器方法some.do方法—>拦截器22—>拦截器12---->拦截器23----->拦截器13
拦截器和过滤器的区别
- 过滤器是servlet中的对象,拦截器是框架中的对象
- 过滤器用来实现Filter接口,拦截器实现
HanderIntercept
接口 - 过滤器用来设置request、response的参数,属性的,侧重对数据过滤的,拦截器是用来验证请求的,截断请求
- 过滤器是在拦截器之前执行的
- 过滤器是Tomcat服务器创建的对象,拦截器是springmvc容器创建的对象
- 过滤器是一个执行时间点
- 拦截器有是哪个执行时间点
- 过滤器处理jsp、js、html,拦截器是侧重拦截Controller的对象,如果请求不能就被中央调度器接收,这个请求就不会执行拦截器
- 拦截器拦截普通方法执行,过滤器过滤servlet请求响应