SpringMVC拦截器简单使用

一、拦截器的配置

1、传统的配置

 

Xml代码 复制代码 收藏代码
  1. <bean  
  2.         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" >  
  3.         <property name="interceptors">  
  4.            <!-- 多个拦截器,顺序执行 -->  
  5.            <list>  
  6.               <ref bean="commonInterceptor"/>  
  7.            </list>  
  8.         </property>  
  9.     </bean>  
  10.     <!--    
  11.               如果不定义mappingURL,则默认拦截所有对Controller的请求 ;    
  12.              可以使用正则表达式对url进行匹配,从而更细粒度的进行拦截(.*/entryOrJsonController\.do\?action=reg.*);   
  13.     -->  
  14.     <bean id="commonInterceptor" class="com.wy.interceptor.CommonInterceptor">  
  15.        <property name="mappingURL" value=".*/entryOrJsonController\.do\?action=reg.*"/>  
  16.     </bean>  

 

2、基于注解的配置

 

Xml代码 复制代码 收藏代码
  1. <!-- 拦截器 -->  
  2.     <mvc:interceptors>  
  3.         <!-- 多个拦截器,顺序执行 -->  
  4.         <mvc:interceptor>  
  5.            <mvc:mapping path="/entryOrJsonController  
  6.     @Override  
  7.     public boolean preHandle(HttpServletRequest request,   
  8.             HttpServletResponse response, Object handler) throws Exception {   
  9.         // TODO Auto-generated method stub   
  10.         log.info("==============执行顺序: 1、preHandle================");   
  11.         String url=request.getRequestURL().toString();     
  12.         if(mappingURL==null || url.matches(mappingURL)){     
  13.             request.getRequestDispatcher("/msg.jsp").forward(request, response);   
  14.             return false;    
  15.         }     
  16.         return true;   
  17.     }   
  18.   
  19.     //在业务处理器处理请求执行完成后,生成视图之前执行的动作    
  20.     @Override  
  21.     public void postHandle(HttpServletRequest request,   
  22.             HttpServletResponse response, Object handler,   
  23.             ModelAndView modelAndView) throws Exception {   
  24.         // TODO Auto-generated method stub   
  25.         log.info("==============执行顺序: 2、postHandle================");   
  26.     }   
  27.   
  28.       
  29.     @Override  
  30.     public void afterCompletion(HttpServletRequest request,   
  31.             HttpServletResponse response, Object handler, Exception ex)   
  32.             throws Exception {   
  33.         // TODO Auto-generated method stub   
  34.         log.info("==============执行顺序: 3、afterCompletion================");   
  35.     }   
  36.   
  37. }  

 

 

注意:注释中的说明。

 

完整的spring配置文件

 

Java代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>   
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.         xmlns:context="http://www.springframework.org/schema/context"  
  5.         xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.         xmlns:util="http://www.springframework.org/schema/util"    
  7.         xsi:schemaLocation="   
  8.           http://www.springframework.org/schema/beans   
  9.           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
  10.           http://www.springframework.org/schema/context   
  11.           http://www.springframework.org/schema/context/spring-context-3.0.xsd   
  12.           http://www.springframework.org/schema/mvc       
  13.           http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd   
  14.           http://www.springframework.org/schema/util    
  15.           http://www.springframework.org/schema/util/spring-util-3.0.xsd">   
  16.        
  17.     <!-- 默认的注解映射的支持 ,它会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter    
  18.     <mvc:annotation-driven />   
  19.     -->   
  20.        
  21.     <!-- 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd -->   
  22.     <mvc:resources mapping="/jsentryOrJsonController\.do\?action=reg.*);   
  23.     -->   
  24.     <bean id="commonInterceptor" class="com.wy.interceptor.CommonInterceptor">   
  25.        <property name="mappingURL" value=".*/entryOrJsonController\.do\?action=reg.*"/>   
  26.     </bean>   
  27.            
  28.     <!-- 处理方法级别上的@RequestMapping注解-->   
  29.     <bean   
  30.         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >   
  31.         <property name="messageConverters">     
  32.             <util:list id="beanList">     
  33.                 <ref bean="mappingJacksonHttpMessageConverter"/>     
  34.             </util:list>     
  35.         </property>    
  36.     </bean>   
  37.        
  38.     <!--    
  39.               将指定路径的请求直接转到对应的view上,而不需要特定的controller来处理请求 .   
  40.               注意:此处的映射路径是/hello,请求时http://localhost:8080/SpringMVC/hello   
  41.               不能在hello.xxx,而不使用此种方式的映射可以加的,因为web.xml配置的是‘/’               
  42.      -->   
  43.     <mvc:view-controller path="/hello" view-name="hello" />   
  44.         
  45.     <!-- 视图解析器策略 和 视图解析器 -->   
  46.     <!-- 对JSTL提供良好的支持 -->   
  47.     <bean   
  48.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">   
  49.         <!-- 默认的viewClass,可以不用配置   
  50.         <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView" />   
  51.          -->   
  52.         <property name="prefix" value="/WEB-INF/page/" />   
  53.         <property name="suffix" value=".jsp" />   
  54.     </bean>   
  55.        
  56.     <!-- 处理JSON数据转换的 -->   
  57.     <bean id="mappingJacksonHttpMessageConverter"    
  58.         class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">    
  59.         <!-- 为了处理返回的JSON数据的编码,默认是ISO-88859-1的,这里把它设置为UTF-8,解决有乱码的情况 -->    
  60.         <property name="supportedMediaTypes">     
  61.             <list>     
  62.                   <value>text/html;charset=UTF-8</value>     
  63.             </list>     
  64.         </property>     
  65.     </bean>     
  66.        
  67.     <!-- 拦截器 -->   
  68.     <mvc:interceptors>   
  69.         <!-- 多个拦截器,顺序执行 -->   
  70.         <mvc:interceptor>   
  71.            <mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,将拦截所有的Controller -->   
  72.            <bean class="com.wy.interceptor.CommonInterceptor"></bean>   
  73.         </mvc:interceptor>   
  74.     </mvc:interceptors>   
  75.        
  76.     <!--    
  77.        ResourceBundleViewResolver通过basename所指定的ResourceBundle解析视图名。   
  78.                   对每个待解析的视图,ResourceBundle里的[视图名].class所对应的值就是实现该视图的类。   
  79.                   同样,[视图名].url所对应的值是该视图所对应的URL。   
  80.                   可以指定一个parent view,其它的视图都可以从parent view扩展。   
  81.                   用这种方法,可以声明一个默认的视图。   
  82.         
  83.     <bean id="messageSource"  
  84.         class="org.springframework.context.support.ResourceBundleMessageSource">   
  85.         <property name="basename" value="welcome" />   
  86.     </bean>   
  87.     -->   
  88.        
  89. </beans>  
posted @ 2018-03-06 16:39  baby孔祥超  阅读(209)  评论(0编辑  收藏  举报