22222222222222222222
1111111111111111111111111111111
拦截器的实现:1.编写一个类实现拦截器接口 ,目的是所有的请求都能经过这个拦截器的类,通过这个拦截器对我们的请求做处理
拦截器类编写完成,不代表所有的请求都能经过(执行到)拦截器么?
2.将拦截器注册进SpringMVC框架中,springMVC配置文件
<mvc:interceptors>要用到mvc命名空间,引入相关约束
3.配置拦截器的拦截规则
拦截器的实现:
3、配置拦截器的拦截规则
使用<mvc:interceptor>中的<mvc:mapping path="xxx"/>来配置拦截的规则;
例如: <mvc:mapping path="/viewAll.form"/>代表配置的是拦截以 viewAll.form 为结果的请求;而不能拦截到 "/query"的请求
拦截器的实现:
3、配置拦截器的拦截规则
使用<mvc:interceptor>中的<mvc:mapping path="xxx"/>来配置拦截的规则;
例如: <mvc:mapping path="/viewAll.form"/>代表配置的是拦截以 viewAll.form 为结果的请求;而不能拦截到 "/query"的请求
拦截器的实现:
拦截器注册到SpringMVC的执行结果
拦截器的实现:
2、将拦截器注册进SpringMVC框架中
拦截器的实现:
1、编写拦截器类实现HandlerInterceptor接口
拦截器的实现

注册拦截器

配置拦截器的拦截规则

拦截器的实现
步骤1:编写拦截器类实现HandlerInterceptor接口,并实现了三个方法(preHandle():到达Controller前执行的方法,postHandle():执行Controller后执行的方法,afterCompletion():执行完Controller后的方法),分别进行了输出,并把preHandle方法返回值false改为true

步骤2:SpringMVC的配置文件(mvc-dispatcher-servlet.xml)中注册拦截器
使用<mvc:interceptor><bean class="拦截器的路径"</bean></mvc:interceptor>,使用它之前需要使用到mvc的命名空间,并且配置了mvc的格式描述。



步骤3:在SpringMVC的配置文件中(mvc-dispatcher-servlet.xml)配置拦截器的拦截规则,通过<mvc:mapping path="拦截路径"/>,例如以viewAll.form结尾的请求(path="/viewAll.form"),如果再增加一个新的方法,访问该方法就不会执行拦截器的方法。

拦截器的实现
实现SpringMVC拦截器的三个步骤
1:创建一个实现HandlerInterceptor接口,并实现接口的方法的类
2:将创建的拦截器注册到SpringMVC的配置文件中实现注册
<mvc:interceptors>
<bean class="自定义拦截器的类路径">
</mvc:interceptors>
3:配置拦截器的拦截规则:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="拦截的action">
<bean class="路径下的类">
</mvc:interceptor>
</mvc:interceptors>
拦截器实现的三步
注册拦截器
在Spring MVC 的配置文件中增加配置:
<mvc:interceptors> <mvc:interceptor> <!-- 使用 mvc:mapping 类设置过滤规则,判断是进入拦截器 --> <mvc:mapping path="/viewAll.form> <bean class="com.imook.test.interceptor. Test1Interceptor"></bean>
编写拦截器
使用一个类实现 HandlerInterceptor 接口,就可以作为全局的拦截,主要有三个方法
afterCompletion
postHandle
perHandle
实现SpringMVC拦截器的三个步骤
1:创建一个实现HandlerInterceptor接口,并实现接口的方法的类
2:将创建的拦截器注册到SpringMVC的配置文件中实现注册
<mvc:interceptors>
<bean class="路径下的类">
</mvc:interceptors>
3:配置拦截器的拦截规则:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="拦截的action">
<bean class="路径下的类">
</mvc:interceptor>
</mvc:interceptors>
<!-- 注册拦截器--> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/viewAll.form> <bean class="com.imook.test.interceptor. Test1Interceptor"></bean> <mvc:interceptor> <mvc:interceptosrs>
注册拦截器
拦截器和过滤器
①拦截器是基于java的反射机制的,而过滤器是基于函数回调。
②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑
拦截器的实现
配置拦截器规则
3
1
注册拦截器
1
拦截器的实现 1.编写一个类实现HandlerInterceptor接口. 2.实现接口声明的方法.分别是afterCompletion、postHandle、preHandle方法. 3.将拦截器注册进Spring MVC框架中.在配置文件中使用<mvc:interceptors>标签配置. 有两种配置方式: 一.所有的请求都会进入拦截器: <mvc:interceptors> <bean class="com.own.interceptor.MyFirstInterceptor"/> </mvc:interceptors> 二.指明拦截器的拦截url: <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/hello/login"/> <bean class="com.own.interceptor.MyFirstInterceptor"/> </mvc:interceptor> </mvc:interceptors> 那么拦截器只会拦截到达/hello/login的请求,path属性中可以使用正则表达式.