zoukankan      html  css  js  c++  java
  • 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");
        }
    }
  • 相关阅读:
    iOS开发_当一个控件被添加到父控件中会调用
    iOS_判断应用在前台还是后台
    iOS开发_ SDWebImage先下载图片保存起来,需要时再调用
    WARNING ITMS90901: "Missing fullscreen support for the latest iPad mini display.
    iOS开发_显示带HTML标签的富文本
    iOS开发_WKWebView隐藏滚动条
    iOS_获取应用当前定位授权状态
    iOS开发_判断字符串是否为空的处理
    UIAlertController和UIActivityViewController在ipad中的兼容性问题
    npm run serve报错提示js堆内存不足
  • 原文地址:https://www.cnblogs.com/chenss15060100790/p/9095394.html
Copyright © 2011-2022 走看看