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


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

    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:放行
        }
    
    }

    拦截器配置:

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

    <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全路径"/>

      2、SpringMVC可以配置类似于全局的拦截器,SpringMVC框架将配置的类似全局的拦截器注入到每个HandlerMapping中。

    <!-- 拦截器 -->
    <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>
  • 相关阅读:
    Leetcode 493.翻转对
    Leetcode 491.递增子序列
    Leetcode 488.祖玛游戏
    Leetcode 486.预测赢家
    Leetcode 483.最小好进制
    Leetcode 482.密钥格式化
    商品期货投资的那些事(八)为你的套利头寸买个保险
    商品期货投资的那些事(七)趋势套利震荡投机、直道飘移弯道超越
    商品期货投资的那些事(五)做空焦煤焦炭?你是想跟发改委作对吗?
    商品期货投资的那些事(六)期现投资这行怎样才能赚大钱?
  • 原文地址:https://www.cnblogs.com/zltao/p/10665965.html
Copyright © 2020-2023  润新知