码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC经典系列-14自定义SpringMVC的拦截器---【LinusZhu】

时间:2014-06-15 20:07:07      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:springmvc拦截器   springmvc自定义拦截器   springmvc   

      注意:此文章是个人原创,希望有转载需要的朋友们标明文章出处,如果各位朋友们觉得写的还好,就给个赞哈,你的鼓励是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linuszhu@163.com,敬请朋友们斧正,谢谢。

      这部分主要讲解SpringMVC的拦截器的部分,会带着大家完成定义拦截器的两种方式的实例,不多说了,开始……

      SpringMVC的拦截器主要是用于拦截用户的请求,并且进行相应的处理,如:权限验证、判断登录等。

定义拦截器的两种方式,如下:

1. 实现接口:

org.springframework.web.servlet.HandlerInterceptor

接口中有如下方法需要重写:

注意:参数中的Object handler是下一个拦截器。

a) public boolean preHandle
(HttpServletRequest request,HttpServletResponse response, 
Object handler) throws Exception

该方法在action执行前执行,可以实现对数据的预处理,比如:编码、安全控制等。

如果方法返回true,则继续执行action

b) public void postHandle
(HttpServletRequest request,HttpServletResponse response, 
Object handler,ModelAndView modelAndView) throws Exception

该方法在action执行后,生成视图前执行。在这里,我们有机会修改视图层数据。

c) public void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)throws Exception

最后执行,通常用于释放资源,处理异常。我们可以根据ex是否为空,来进行相关的异常处理。因为我们在平时处理异常时,都是从底层向上抛出异常,最后到了spring框架从而到了这个方法中。

2. 继承适配器类:

org.springframework.web.servlet.handler.HandlerInterceptorAdapter

这个适配器实现了HandlerInterceptor接口。提供了这个接口中所有方法的空实现。

下面是我定义的两中实现拦截器的示例代码,仅供大家参考:

//方式1

package interceptor;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;

import org.springframework.web.servlet.ModelAndView;

public class MyInterceptor implements HandlerInterceptor {

@Override

public void afterCompletion(HttpServletRequest request,

HttpServletResponse response, Object handler, Exception ex)

throws Exception {

System.out.println("zxs-最后执行!!!一般用于释放资源!!");

}

@Override

public void postHandle(HttpServletRequest request,

HttpServletResponse response, Object handler,

ModelAndView modelAndView) throws Exception {

System.out.println("zxs-Action执行之后,生成视图之前执行!!");

}

@Override

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

System.out.println("zxs-action之前执行!!!");

return true; // 继续执行action

}

}

//方式2

package interceptor;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class MyInterceptor2 extends HandlerInterceptorAdapter {

@Override

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

System.out.println("MyInterceptor2.preHandle()");

return true; // 继续执行action

}

}

3. springmvc-servlet.xml中如何添加如下配置,使用拦截器:

<mvc:interceptors>

<!-- 拦截器1会拦截所有.do请求 -->

<bean class="interceptor.MyInterceptor"></bean>

<!-- 拦截器2会拦截user.do请求 -->

<mvc:interceptor>

    <mvc:mapping path="/user.do" />

<bean class="interceptor.MyInterceptor2"></bean>

</mvc:interceptor>

</mvc:interceptors>

 

 

SpringMVC经典系列-14自定义SpringMVC的拦截器---【LinusZhu】,布布扣,bubuko.com

SpringMVC经典系列-14自定义SpringMVC的拦截器---【LinusZhu】

标签:springmvc拦截器   springmvc自定义拦截器   springmvc   

原文地址:http://blog.csdn.net/zxs945620754/article/details/30463273

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!