一、拦截器的配置
1、传统的配置
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" >
<property name="interceptors" >
<!-- 多个拦截器,顺序执行 -->
<list>
<ref bean="commonInterceptor" />
</list>
</property>
</bean>
<!--
如果不定义mappingURL,则默认拦截所有对Controller的请求 ;
可以使用正则表达式对url进行匹配,从而更细粒度的进行拦截(.*/entryOrJsonController\.do\?action=reg.*);
-->
<bean
id="commonInterceptor"
class="com.wy.interceptor.CommonInterceptor" >
<property
name="mappingURL"
value=".*/entryOrJsonController\.do\?action=reg.*" />
</bean>
2、基于注解的配置
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配置文件
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>