• SpringBoot(三)HandlerInterceptor


    HandlerInterceptor

    拦截器用的机会不多,在这里做数据签名校验不错,不过更多的人喜欢写Filter,

    这个切面神奇的地方是:可以在页面渲染的不同阶段使用Writer。

    (因为替代方案太多,基本得不到应用)

    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * 请求拦截器,
     *
     * Created by 12614 on 2018/5/11.
     */
    public class TestInterceptor implements HandlerInterceptor {
        @Override
        public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
            System.out.println("TestInterceptor: preHandle");
            //TODO 请求拦截处理逻辑
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
            System.out.println("TestInterceptor: postHandle");
    
            //TODO 页面渲染前置逻辑
            //E.G.
            httpServletResponse.getWriter().write("-----------------------");
        }
    
        @Override
        public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
            System.out.println("TestInterceptor: afterCompletion");
    
            //TODO 页面渲染后置逻辑
            //E.G.
            httpServletResponse.getWriter().write("========================");
        }
    }

    Spring配置

    <mvc:interceptors>
       <mvc:interceptor>
            <!--进行拦截的路径-->
            <mvc:mapping path="/**"/> 
            <!--不进行拦截的路径-->   
            <mvc:exclude-mapping path="/lib/**" /> 
            <beans:bean class="xxxxx全类名"/>
        </mvc:interceptor>
    </mvc:interceptors>

    SpringBoot配置

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    /**
     * Created by 12614 on 2018/5/11.
     */
    @Configuration
    public class ApplicationConfigurer extends WebMvcConfigurerAdapter {
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            super.addInterceptors(registry);
            registry.addInterceptor(new TestInterceptor())
                    .addPathPatterns("/**.ftl","/**.json");
        }
    }
  • 相关阅读:
    结合项目实例 回顾传统设计模式(五)单例模式
    CUDA并行计算框架(二)实例相关。
    结合项目实例 回顾传统设计模式(八)模板方法模式
    结合项目实例 回顾传统设计模式(三)装饰者模式
    结合项目实例 回顾传统设计模式(十一)代理模式
    趣谈.net大型电子商务 亲~ 走过路过不要错过~
    结合项目实例 回顾传统设计模式(九)迭代器模式
    DataTable的操作类
    xslt调用自定义函数(C#/Js/Java)
    优秀的前段框架Bootstrap推荐
  • 原文地址:https://www.cnblogs.com/chenss15060100790/p/9095394.html
Copyright © 2020-2023  润新知