博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot配置拦截器
阅读量:6970 次
发布时间:2019-06-27

本文共 2809 字,大约阅读时间需要 9 分钟。

hot3.png

一、新增拦截器配置类

@Configurationpublic class WebAppInterceptorConfig extends WebMvcConfigurerAdapter {    /**     * 拦截器链(多个拦截器)     *     * @param registry registry     */    @Override    public void addInterceptors(InterceptorRegistry registry) {        InterceptorRegistration ir_a = registry.addInterceptor(new OneInterceptor_a());        // 设置拦截规则        ir_a.addPathPatterns("/**");        // 设置无需拦截的路径规则        ir_a.excludePathPatterns("/one/index");         InterceptorRegistration ir_b = registry.addInterceptor(new OneInterceptor_b());         ir_b.addPathPatterns("/**");        super.addInterceptors(registry);    }}

二、新建拦截器类

public class OneInterceptor_a implements HandlerInterceptor {    /**     * 在请求处理之前执行该方法     *     * @param request  request     * @param response response     * @param handler  handler     * @return boolean     * @throws Exception Exception     */    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)            throws Exception {        System.out.println("Interceptor:[a-preHandle]>>>在请求处理之前进行调用(Controller方法调用之前)");        // 判断是否是Ajax请求,如果是,不拦截。        if (request.getHeader("x-requested-with") != null &&                request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {            return true;        }        // 输出调用的类名和方法名        if (handler instanceof HandlerMethod) {            HandlerMethod handlerMethod = (HandlerMethod) handler;            System.out.println("Interceptor:[a-preHandle]>>>请求控制器名称:" + handlerMethod.getBean().getClass().getName());            System.out.println("Interceptor:[a-preHandle]>>>请求方法名称:" + handlerMethod.getMethod().getName());        }        return true;    }    /**     * 在请求处理之后,在视图渲染之前执行该方法     *     * @param request      request     * @param response     response     * @param handler      handler     * @param modelAndView modelAndView     * @throws Exception Exception     */    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,                           ModelAndView modelAndView) throws Exception {        // System.out.println("Interceptor:[a-postHandle]>>>请求处理之后、在视图被渲染之前进行调用(Controller方法调用之后)");    }    /**     * 整个请求处理结束,视图渲染之后执行该方法     *     * @param request  request     * @param response response     * @param handler  handler     * @param e        e     * @throws Exception Exception     */    @Override    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e)            throws Exception {        // System.out.println("Interceptor:[a-afterCompletion]>>>在整个请求结束之后被调用," +        //         "DispatcherServlet渲染了对应的视图之后执行(主要进行资源清理)");    }}
OneInterceptor_b同理

转载于:https://my.oschina.net/MinghanSui/blog/1615977

你可能感兴趣的文章
web开发架构设计
查看>>
记录:asp.net mvc 中 使用 jquery 实现html5 实现placeholder 密码框 提示兼容password IE6...
查看>>
TDD开发感悟
查看>>
【Win 10 应用开发】Toast通知激活应用——前台&后台
查看>>
【JS】js获得下拉列表选中项的值和id
查看>>
oracle存储过程常用技巧
查看>>
python3使用smtplib发电子邮件
查看>>
git版本还原
查看>>
Android Security
查看>>
实验三 敏捷开发与XP实践
查看>>
HTML5 CSS3 精美案例 : 达到VCD盒个性幻灯片
查看>>
前端框架现状调查【转载+整理】
查看>>
shell date
查看>>
[Elasticsearch] 部分匹配 (一) - 前缀查询
查看>>
Spring内部bean无法通过id获取
查看>>
C# Use Pop3Client to read gmail
查看>>
相关Python分割操作
查看>>
Android 4.0 ICS SystemUI浅析——StatusBar结构分析
查看>>
linux 查看端口是否被占用
查看>>
设计模式之建造者模式
查看>>