3. Springboot快速回顾(拦截器的使用)

news2024/11/17 17:49:47

本文将提供一个案例,回顾如何在springboot中使用拦截器。

首先明白为何使用拦截器,拦截的是什么?
比如你设计了一个网站,为这个网站设计了一个登陆界面后,希望在登录界面进行身份验证,进入系统。但我可以直接访目标url,绕过登陆界面,直接进入首页。

因此需要设置只能访问登录的url,禁止直接访问其他的url。这就需要依靠拦截器设置一下。
在这里插入图片描述
此图就解释了拦截器拦截的就是url地址,设置哪些路径不能直接访问,更安全。

目录

  • 1 定义controler层
  • 2 设置拦截器顺序
  • 3 设置拦截规则
  • 4 运行结果
  • 5 总结

对测试案例的介绍:提供两个url(登陆和首页),演示如何设置禁止访问首页的url

项目结构
在这里插入图片描述

1 定义controler层

@controller
public class test(){
	@RequestMapping("/oa/login")
	@ResponseBody
	public String login(){
		Systems.out.println("这是登陆界面");
		return "登录界面";
	}

    @RequestMapping("/oa/index")
	@ResponseBody
	public String login(){
		Systems.out.println("这是首页");
		return "进入首页";
	}
}

2 设置拦截器顺序

public LoginInterceptor implement HandlerInterceptor(){
 /**
     * preHandle(): 在业务处理器处理请求之前被调用
     * @param request
     * @param response
     * @param handler  拦截器对象,因此我们需要创建一个拦截器对象传给参数
     * @return false 拦截成功 ,看到空白界面
     *         true  不拦截,正常访问
     * @throws Exception
     */
	@Override
	public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler){
	Systems.out.println("在启动前拦截");
	return false;
	
	}
}

3 设置拦截规则

public class Myappconfig implement WebMvcConfigurer(){

//@Configuration说明:
// 声明类Myappconfig是一个配置类
@Configuration

//接口WebMvcConfigurer说明:
//本来应该在xml文件中配置MVC相关的东西(如配置拦截器);但是springboot简化成了一个MVC类,调用方法进行相关配置
//比如配置MVC的拦截器,重写addInterceptors()
public class Myappconfig implements WebMvcConfigurer {

    /**
     * addInterceptor(拦截器对象):拦截器注册类提供的方法
     * @param registry 拦截器注册类对象
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        System.out.println("读取配置类");
        HandlerInterceptor handlerInterceptor = new LoginInterceptor();

        //设置拦截地址,拦截localhost:8080/user/**
        String[] path = {"/user/**"};
        //设置不拦截的地址 不拦截localhost:8080/user/login
        String[] excludepath = {"/user/login"};

        //拦截器注册类提供的方法
        registry.addInterceptor(handlerInterceptor).addPathPatterns(path).excludePathPatterns(excludepath);
    }
                                                         
}

4 运行结果

可以直接访问(未拦截)
在这里插入图片描述
访问到空白界面(已拦截)----------LoginInterceptor 类返回值是flase
在这里插入图片描述
可以直接范围(取消拦截)--------------LoginInterceptor 类返回值是ture
在这里插入图片描述

5 总结

对拦截器的学习,可以重点关注实现逻辑,设置拦截器顺序与设置拦截器规则,这里面涉及到了两个心类。没有什么新注解需要过多关注的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/737469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

flutter开发实战-多语言flutter intl

flutter开发实战-多语言flutter intl 之前做的应用中有用到多语言,一直没有整理,这里整理一下多语言设置流程。 使用的是Android studio 一、flutter_intl 插件 使用Android studio安装flutter_intl 插件,更新或者安装flutter_intl 插件后…

国产4 通道模拟复合视频解码芯片MIPI CSI 接口,XS9922B

XS9922B 是一款 4 通道模拟复合视频解码芯片,支持 HDCCTV 高清协议和 CVBS 标 清协议,视频制式支持 720P/1080P 高清制式和 960H/D1 标清制式。芯片将接收到的高清 模拟复合视频信号经过模数转化,视频解码以及 2D 图像处理之后…

Django_模板标签语法

目录 引用变量 for循环标签 if条件标签 with标签 注释 extends和block标签 csrf_token标签 load static标签 源码等资料获取方法 引用变量 可以使用{{}}引用视图函数响应的变量和模板中的变量。 比如有如下视图函数 在模板中引用变量方式如下 界面展示如下 for循环标…

微信小程序——真机调试步骤

工具/原料 手机 微信开发者工具 以下是微信开发者工具注册和安装教程: 微信开发者工具_小彭不会秃头的博客-CSDN博客 开始真机调试 前提:手机和电脑连同一个网络,电脑连手机热点没用 把网络ip添加到请求路径中(HBuilder X软件 小…

docker部署rabbitmq 后访问管理首页常见问题

1.项目启动后 管理首页无法访问 1)检查15672端口是否可以访问 2)docker exec -it your_container_name /bin/bash 进入docker容器执行如下命令: 3) rabbitmq-plugins enable rabbitmq_management 2.访问首页时提示不是私密连接:…

单细胞生物实验教学三维vr仿真模拟实操平台增强学生的从业自信心

VR元宇宙近几年在各个领域得到了广泛的应用,特别是教育领域,干细胞是具有自我更新能力和分化为多种细胞类型的能力的一类细胞,具有极高的医学研究价值和应用前景。干细胞冻存技术是一种保护干细胞的重要方法,也是干细胞应用的前提…

微信小程序做登录密码显示隐藏效果 并解决安卓手机端隐藏密码时小黑点显示过大问题

在编辑器和苹果手机上面显示就是正常的大小,在安卓手机上面黑点就非常大,需要单独调 安卓手机显示比较大 wxml 注意:在html中的input是通过切换type的属性值来实现隐藏显示的 在微信小程序的input里面type没有password属性 是通过password属…

消除企业信息孤岛的低代码开发平台

企业数字化转型上,信息孤岛是企业痛点之一。所谓的信息孤岛,指的是企业内部使用着多套应用软件,多年后企业员工会在多套系统中积累大量的企业各类数据资产,由于各系统数据不能互通,随即形成一座座数据孤岛,…

pytorch学习第一篇:conda配置jupyter notebooks pytorch

安装jupyter notebooks 创建一个pytorch的环境 conda create -n pytorch python3.10 conda activate pytorch安装jupyter notebook,运行命令 conda install jupyter notebook启动jupyter 运行命令 jupyter notebook或者 notebook查看pyhton版本 import sys p…

智能汽车的主动悬架工作原理详述

摘要: 本文将详细介绍主动悬架功能原理设计。 主动悬架是车辆上的一种汽车悬架。它使用车载系统来控制车轮相对于底盘或车身的垂直运动,而不是由大弹簧提供的被动悬架,后者的运动完全由路面决定。主动悬架分为两类:真正的主动悬架…

登录不了宝塔面板 一直加载, 看接口是404状态

经官方回答是:面板数据库损坏了 命令解决办法: 一、分别执行 9、4、16 二、列新节点数据: 看看上面能不能解决问题,如果还是不能执行 curl -k https://120.78.156.100/new/auto_node.sh | bash 三、还原面板数据 看看上面…

反转链表——力扣206

题目描述 法一)迭代法 class Solution{ public:ListNode* reverseList(ListNode* head) {ListNode* prev NULL;ListNode* cur head;while(cur){ ListNode* next cur->next;cur->next prev;prev cur;cur next; }return prev; //最后一步cur为空&a…

APP开发对初创公司的影响:优点与挑战

在这个移动时代, APP开发成为了一个热门的话题,而对于许多初创公司来说, APP开发也是一项必要的任务。但究竟为何开发 APP呢?开发 APP对初创公司有什么影响呢? 事实上,开发 APP对初创公司来说是一个非常好…

PS188——谱瑞(Parade)推动的 Type-C扩展坞红海战略

2020年7月份谱瑞(Parade)以3750万美元的价格收购了睿思科技(Fresco Logic),对于芯片设计公司来说,并购往往是资本因素考量 >技术因素考量 >市场战略考量。 芯片设计公司的并购,往往更看重的是客户的…

《TCP IP网络编程》第二章

2023.7.6 第2章 套接字类型与协议设置 2.1 套接字协议及其数据传输特性 协议:计算机间对话必备的通信规则,即为了完成数据交换而定好的约定。 socket函数的三个参数:int socket(int domain, int type, int protocol) domain:套…

【InnoDB 存储引擎】InnoDB 存储引擎的行格式,有 Compact、Redundant、Dynamic 等行格式还有它们配套实验(实验篇)

文章目录 1 InnoDB 行记录格式(实验)1.1 Compact 行格式实验1.1.1 实验步骤1.1.2 分析捞出来的数据1.1.3 疑问 1.2 Redundant 行格式实验1.2.1 实验步骤1.2.2 分析捞出来的数据 1.3 CHAR 列类型的存储1.3.1 实验步骤1.3.2 分析捞出来的数据 2 参考资料 1…

【Python】(一)Python3.10的安装

在有java基础的情况下,开始学习Python,并且最终实现是在windows操作系统中能够开发一个web页面 一、下载 官网:www.python.org/downloads/windows/ 向下滚动找到3.10.11,根据windows的位数选择对应的包,下载 二、安装 下载完成…

在Linux系统下安装部署Singularity容器

在以下两篇博客中: 浅谈Singularity容器_男孩李的博客-CSDN博客 Singularity容器常用命令_ubuntu卸载singularity_男孩李的博客-CSDN博客 我们分别介绍了Singularity容器以及Singularity容器的常用命令,相信大家对高性能计算容器Singularity并不陌生了…

SQL多表查询

多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,…

C++初识模板

文章目录 👑1. 泛型编程👒2. 模板📿2.1 函数模板🎶2.11 类型推理🎶2.12 函数模板实例化🎶2.13 匹配原则 📿2.2 类模板 👑1. 泛型编程 void Swap(int& a, int& b) {int tmp …