• spring之interceptor篇


    springmvc中要写一个拦截器非常的简单,有两种方式:要么实现HandlerInterceptor接口或者继承实现了该接口的类,如spring已经为我们写好的一个HandlerInterceptorAdaptor。HandlerInterceptor接口有三个方法preHandler、postHanderl、afterCompletion,不过一般拦截器只是在preHandler方法中实现,另外两个方法空实现,所以一般用继承HandlerInterceptorAdapter比较好。

    方法介绍:

    public boolean preHandle(HttpServletRequest req, HttpServletResponse res,
    Object obj)    该方法有三个参数,返回值为布尔值,如果返回false,则该次请求结束,不会继续往下执行,obj其实就是一个包含请求调用方法的pojo。

    public void postHandle(HttpServletRequest req, HttpServletResponse res,
    Object obj, ModelAndView mav)    同样有三个方法,obj同上,mav是方法返回的试图,如果没有返回值,为null。

    public void afterCompletion(HttpServletRequest req,
    HttpServletResponse res, Object obj, Exception e)  一般不用

    拦截器的配置:

    首先继承HandlerInterceptorAdapter,定义自己的拦截器类,然后配置如下:

    <mvc:interceptors>
              <mvc:interceptor>
                  <mvc:mapping path="/charts/*"/>
                  <bean class="springframe.interceptor.MyHandlerInterceptor"></bean>
              </mvc:interceptor>
          </mvc:interceptors>

    或者

    <mvc:interceptors>
                  <bean class="springframe.interceptor.MyHandlerInterceptor"></bean>
          </mvc:interceptors>

    拦截所有的请求。

    或者使用SimpleUrlHandlerInterceptor配置

    <beans...>  
        ...  
        <bean id="measurementInterceptor"   
            class="com.apress.springrecipes.court.web.MeasurementInterceptor"/>  
        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
            <property name="interceptors">  
                <list>  
                    <ref bean="measurementInterceptor"/>  
                </list>  
            </property>  
            ...  
        </bean>  
        <bean class="org.springframework.web.servlet.mvc.support  
            .ControllerClassNameHandlerMapping">  
            <property name="interceptors">  
                <list>  
                    <ref bean="measurementInterceptor"/>  
                </list>  
            </property>  
        </bean>  
        ....  
    </beans>
  • 相关阅读:
    反转链表
    《Java JDK7 学习笔记》课后练习题1
    《Java JDK7 学习笔记》课后练习题2
    《java JDK7 学习笔记》课后练习题3
    SQL与NoSQL(关系型与非关系型)数据库的区别
    编程中编码的来源及发展
    JDK7学习笔记之基础类型
    《java JDK7学习笔记》之跨平台与路径设置
    《java jdk7学习笔记》之java三大平台
    VS2015安装之后加装SQL SERVER2014的步骤
  • 原文地址:https://www.cnblogs.com/yxjdragon/p/5916642.html
Copyright © 2020-2023  润新知