SpringMVC拦截器简单使用

一、拦截器的配置

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> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值