springMVC之拦截器详解

来源:互联网 发布:php技术总监招聘 编辑:程序博客网 时间:2024/05/16 03:03
一、springMVC的拦截器有两种实现方法,这里是使用springMVC 3.0:
  1、实现接口:org.springframework.web.servlet.HandlerInterceptor
  2、继承适配器:org.springframework.web.servlet.handler.HandlerInterceptorAdapter这个适配器实现了HandlerInterceptor接口。
  提供了这个接口中所有方法的空实现。
package com.springmvc.util;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView; public class SpingInterceptor implements HandlerInterceptor{        /*1、Object obj是指下一个拦截器该方法;        *2、在action执行前执行,可以实现对数据的预处理,比如:编码、安全控制等。如果方法返回true,则继续执行action。*/        @Override        public boolean preHandle(HttpServletRequest req, HttpServletResponse res,Object obj) throws Exception {                System.out.println("before action excute !!!");                return true;  //继续执行action         }        /*1、Object obj是指下一个拦截器        *2、 该方法在action执行后,生成视图前执行。在这里,我们有机会修改视图层数据。        * */        @Override        public void postHandle(HttpServletRequest req, HttpServletResponse res,Object obj, ModelAndView mv) throws Exception {                System.out.println("after Action excute,before view create!!!");        }        /*1、Object obj是指下一个拦截器        *2、最后执行,通常用于释放资源,处理异常。我们可以根据exp是否为空,来进行相关的异常处理。因为我们在平时处理异常时,        *都是从底层向上抛出异常,最后到了spring框架从而到了这个方法中。        * */        @Override        public void afterCompletion(HttpServletRequest req,HttpServletResponse res, Object obj, Exception exp)throws Exception {                System.out.println("afterComletion,use to release some resources!!!");        }}
二、在springmvc-servlet中配置拦截器:
<!--配置拦截器  -->
<mvc:interceptors><!-- <bean class="com.springmvc.util.SpingInterceptor"></bean>写在这里表示拦截所有springmvc的url! -->  <mvc:interceptor>     <mvc:mapping path="/user/upload"/>     <bean class="com.springmvc.util.SpingInterceptor"></bean><!-- 表示只拦截 /user/upload这个url-->  </mvc:interceptor></mvc:interceptors>


0 0