.Net转Java自学之路—SpringMVC框架篇九(拦截器)

定义拦截器须要实现HandlerInterceptor接口,该接口中由三个方法:afterCompletion、postHandle、preHandle。web

public class TestHandlerInterceptor implements HandlerInterceptor {

    /**
     * 执行Handler后执行。
     * 能够在该方法进行统一的异常处理、统一的日志处理
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        
    }

    /**
     * 进入Handler方法以后,返回ModelAndView以前执行。
     * 应用场景从ModelAndView出发,将公用的模型数据在该方法传到视图。
     * 也能够统一指定视图。
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        
    }

    /**
     * 进入Handler方法以前执行
     * 该方法能够用于身份认证、身份受权。
     * 如身份认证未经过,须要此方法拦截再也不向下执行。
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {

        return false;//false:拦截。true:放行
    }

}

拦截器配置:spring

  一、SpringMVC的拦截器是针对HandlerMapping进行拦截设置。
    若在某个HandlerMapping中配置拦截,通过该HandlerMapping映射成功的Handler最终使用该拦截器。mvc

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
    <property name="interceptors">
        <list>
            <ref bean="handlerInterceptor1"/>
            <ref bean="handlerInterceptor2"/>
        </list>
    </property>
</bean>
<bean id="handlerInterceptor1" class="handlerInterceptor1全路径"/>
<bean id="handlerInterceptor2" class="handlerInterceptor2全路径"/>

  二、SpringMVC能够配置相似于全局的拦截器,SpringMVC框架将配置的相似全局的拦截器注入到每一个HandlerMapping中。app

<!-- 拦截器 -->
<mvc:interceptors>
    <!-- 多个拦截器,顺序执行 -->
    <mvc:interceptor>
        <!-- /**:表示全部url包含子url路径 -->
        <mvc:mapping path="/**"/>
        <bean class="handlerInterceptor1全路径"></bean>
    </mvc:interceptor>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="handlerInterceptor2全路径"></bean>
    </mvc:interceptor>
</mvc:interceptors>
相关文章
相关标签/搜索