SpringMVC笔记(四)拦截器

一、拦截器:Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必 须实现HandlerInterceptor接口

 

二、实现步骤:

1.自定义实现类实现HandlerInterceptor接口
2.在springMVC中配置文件中的配置相应的拦截器
实现的代码:
1.自定义实现类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package  com.neuedu.springmvc.interceptor;
 
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;
 
import  org.springframework.web.servlet.HandlerInterceptor;
import  org.springframework.web.servlet.ModelAndView;
 
/*
* 项目名称:springmvc-03
* @author:(官网:www.fhadmin.org)
* @date 创建时间:2017年8月24日 上午10:37:35
* @Description:自定义拦截器
* @parameter 
*   */
public  class  interceptor  implements  HandlerInterceptor{
 
     @Override
     public  void  afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
             throws  Exception {
         System.out.println( "afterCompletion" ); 
     }
 
     @Override
     public  void  postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
             throws  Exception {
         System.out.println( "postHandle" );
     }
     @Override
     public  boolean  preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2)  throws  Exception {
         System.out.println( "preHandle" );
         return  true ;
     }
 
}

2.在springMVC中配置文件中的配置相应的拦截器

1
2
3
4
5
<!-- 配置拦截器 -->
  <mvc:interceptors>
   <!-- 配置自定义拦截器全类名 -->
     <bean  class = "com.neuedu.springmvc.interceptor.interceptor" ></bean>
  </mvc:interceptors>

 三、拦截器工作原理

四、拦截器中的三种方法:

–    preHandle():该方法在目标方法之前被调用,
                    若返回值为true,则继续调用后续的拦截器和目标方法
                    若返回值为false,则不会再调用后续的拦截器和目标方法
                    可以考虑做权限,日志或者事务等!
    –    postHandle():调用目标方法之后,但渲染视图之前被调用
                 可以对请求域中的属性或者视图做出修改!
    –    afterCompletion():(官网:www.fhadmin.org) 渲染视图之后被调用,
                      可以在该方法中进行一些资源清理的操作。

 

五/多拦截器的实现

可以自定义多个拦截器实现类(官网:www.fhadmin.org),然后只需要在SpringMVC-xml文件中进行配置就行

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 配置拦截器 -->
<mvc:interceptors>
    <!-- 配置自定义拦截器全类名 -->
    <bean  class = "com.neuedu.springmvc.interceptor.interceptor" ></bean>
   <!-- 增加拦截器配置 -->
   <mvc:interceptor >
          <!-- 可以配置拦截的请求路径 -->
          <mvc:mapping path= "/testJson" />
          <!-- 配置自定义拦截器全类名 -->
         <bean  class = "com.neuedu.springmvc.interceptor.SecondInterceptor" >
         </bean>
   </mvc:interceptor>
</mvc:interceptors>

 六、多拦截器的执行顺序图

 

猜你喜欢

转载自qingyu11068.iteye.com/blog/2391054