Spring MVC拦截器的使用

来源:互联网 发布:网络拓扑工具 编辑:程序博客网 时间:2024/04/28 06:10

这篇文章是对Spring MVC拦截器如何使用的整理。

它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间。

实现流程:

一、定义Intercepter类,实现HandlerIntercepter接口,实现后需要实现三个方法:

package demo.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{//在生成视图之后执行,一般用于释放资源@Overridepublic void afterCompletion(HttpServletRequest arg0,HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {System.out.println("在生成视图之后执行");}//在生成视图之前执行@Overridepublic void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2, ModelAndView arg3) throws Exception {System.out.println("在生成视图之前执行");}//拦截器的主方法@Overridepublic boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2) throws Exception {System.out.println("调用Controller之前执行");return false;//设置是否继续执行,false拦截}}

二、配置文件中配置这个拦截器,例子中拦截了所有带.do地址的请求

<!-- 设置拦截器 --><mvc:interceptors><mvc:interceptor><!-- 设置要拦截的请求 --><mvc:mapping path="/*.do" /><bean class="demo.interceptor.MyInterceptor"></bean></mvc:interceptor></mvc:interceptors>

拦截器的配置大概就这样了,接下来测试

我的Controller类(关于注解,详情可查看创建SpringMVC项目之使用注解实现)

package demo.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controller//注册bean@RequestMapping("/")//通过此注解来为这个类映射一个URL,具体请求方法也配置路径则映射的路径为两者路径的叠加public class ProvinceAnnotationController {@RequestMapping("hello.do")public String aa(){System.out.println("+++++++++");return "index";}}


访问:http://localhost:8080/TestSpringMVC/hello.do

结果


设置拦截器主方法返回true,结果:



0 0