文档章节

崛起于Springboot2.X之开发拦截器(21)

木九天
 木九天
发布于 2018/07/18 12:59
字数 412
阅读 176
收藏 8

序言:几乎所有项目都需要拦截器,所以小伙伴们必须要掌握这门技术哦,不然只会mybaits增删改查那是实习生干的活呀。

1、创建拦截器类,implements HandlerInterceptor

public class MyIncerteptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("进入拦截器");

        HttpSession session = request.getSession();
        Admin user = (Admin) request.getSession().getAttribute("ADMIN_ACCOUNT");
        if (user == null) {
            //用户为空,重新登录
            response.sendRedirect(request.getContextPath() + "/login.html");
            return false;
        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

2、配置文件,注册拦截器 implements

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        String[] addPathPatterns ={
                "/dtb/**"
        };
        String[] excludePathPatterns ={
                "/test/**"
        };
        InterceptorRegistration interceptorRegistration = registry.addInterceptor(new MyIncerteptor());
        interceptorRegistration.addPathPatterns(addPathPatterns);
        interceptorRegistration.excludePathPatterns(excludePathPatterns);
    }
}

addPathPatterns是拦截的那些目录,excludePathPatterns不拦截的路径,上面我们可以换一种常用的写法,只不过上面看上去更明白,interceptorRegistration获取的注册对象添加拦截器,并设置拦截路径

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        String[] addPathPatterns ={
                "/dtb/**"
        };
        String[] excludePathPatterns ={
                "/test/**"
        };
       registry.addInterceptor(new MyIncerteptor()).addPathPatterns(addPathPatterns).excludePathPatterns(excludePathPatterns);
    }
}

 在优化一下,可以写成:

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        
       registry.addInterceptor(new MyIncerteptor()).addPathPatterns("/dtb/**").excludePathPatterns("/test/**");
    }
}

成功!其实就两个类就可以了。

3、注意点:

        springboot2.0以后:使用spring5,废弃了WebMvcConfigurerAdapter,解决方案 implements WebMvcConfigurer

        springboot2.0之前,1.X版本,使用spring4,使用拦截器需要 extends WebMvcConfigurerAdapter

 

 

© 著作权归作者所有

共有 人打赏支持
木九天

木九天

粉丝 110
博文 195
码字总数 129486
作品 0
海淀
程序员
私信 提问
崛起于Springboot2.X之集成工作流Activiti5.22(42)

声明:该博客主要是Springboot1.X和Springboot2.X集成Activiti5.22版本,并说一下两个版本的搭建不同的地方 技术:Springboot2.0.3+mysql+jpa(自动生成25张表)+Activiti5.22 /然后Springboo...

木九天
2018/12/17
0
1
jeesuite-libs 1.3.1 发布,新增轻量级安全模块 jeesuite-security

简介 jeesuite-libs分布式架构开发套件。包括缓存(一二级缓存、自动缓存管理)、队列、分布式定时任务、文件服务(七牛、阿里云OSS)、日志、搜索、代码生成、配置中心、安全认证、分布式锁、分...

vakinge
2018/12/17
0
0
崛起于Springboot2.X之多节点mongodb实现区块链交易记录(36)

序言:根据前两篇崛起于Springboot2.X之区块链单节点mysql实现交易记录和崛起于Springboot2.X之Mongodb多数据源处理,进行整合,实现区块链多节点mongodb实现交易记录方案。直接上代码了,不...

木九天
2018/08/23
0
0
面试必问的Spring AOP原理、SpringMVC过程

Spring AOP ,SpringMVC ,这两个应该是国内面试必问题,网上有很多答案,其实背背就可以。但今天笔者带大家一起深入浅出源码,看看他的原理。以期让印象更加深刻,面试的时候游刃有余。 Sp...

Java干货分享
2018/10/25
0
0
崛起于Springboot2.X之配置文件详解(10)

序言:针对公司开发配置文件的一些基础常识 1、核心配置文件 springboot框架也被我认为一个工具,它的主要核心文件为application.properties,又可以命名为application.yml亦或者application...

木九天
2018/07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 风扇写着先生请自爱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蚂蚁哈哈哈 :分享陈奕迅的单曲《落花流水》 《落花流水》- 陈奕迅 手机党少年们想听歌,请使劲儿戳(这里) @车谷 :我发现每天上班都好困 ...

小小编辑
30分钟前
2
0
centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
3
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
8
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部