javaweb学习week6

javaweb学习

九.登录认证

5.登录后下发令牌

生成令牌:引入JWT令牌操作工具类,登录完成后,调用工具类生成JWT令牌,并返回
代码实例:
请添加图片描述

6.Filter入门

概念:Filter过滤器,是Javaweb三大组件之一(Servlet、FIlter、Listener)
过滤器可以把资源的请求拦截下来,从而实现一些特殊的功能
过滤器一般完成一些通用的操作
定义Filter:定义一个类,实现Filter接口,并重写所有方法
配置FIlter:Filter类上加上@WebFilter注解,配置拦截资源的路径。引导类上加上@ServletComponentScan开启Servlet组件支持
代码实例:
请添加图片描述

7.Filter详解

(1)执行流程
图片消失了
(2)拦截路径

Filter可以根据需求,配置不同的拦截资源路径:
请添加图片描述

(3)过滤器链

介绍:一个web应用中,可以配置多个过滤器,这多个过滤器形成了一个过滤器链
请添加图片描述

顺序:过滤器的执行顺序是按照过滤器类名的自然排序

(4)登录校验过滤器

实现思路:获取请求路径,判断是否是登录请求,如果否则获取请求头token,判断是否有token,如果不存在则返回未登录的错误结果,如果有则解析token

7.拦截器Interceptor

(1)入门

概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行
作用:拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码
实现步骤:

  1. 定义拦截器,实现HandlerInterceptor接口,并重写其所有方法
  2. 注册拦截器

代码实例:
请添加图片描述

图片消失了
(2)详解

拦截器可以根据需求,配置不同的拦截路径:
请添加图片描述

常见拦截路径:
请添加图片描述

执行流程:
请添加图片描述

Filter和Interceptor的不同:

  1. 接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HandlerInterceptor接口
  2. 拦截范围不同:过滤器Filter会拦截所有的资源,而Interceptor只会拦截Spring环境中的资源

十.异常处理

1.异常处理

出现异常的处理方法:

  1. 在Controller的方法中进行try…catch处理
  2. 全局处异常理器

全局异常处理器代码实例:
请添加图片描述

@RestControllerAdvice=@ControllerAdvice+@ResponseBody

十一.事务管理

1.事务回顾

概念:事务是一组操作的集合,她是一个不可分割的工作单位,这些操作要么同时成功,要么同时失败
操作:
请添加图片描述

2.Spring事务管理

注解:@Transactional
位置:业务层(service)层的方法上、类上、接口上
作用:将当前方法交给Spring进行事务管理,方法执行前,开启事务;成功执行完毕, 提交事务;出现异常->事务回滚
application中的配置:
请添加图片描述

3.事务进阶

(1)rollbackFor属性

rollbackFor:默认情况下,只有出现RuntimeException才回滚异常。rollbackFor属性用于控制出现何种异常类型,回滚事务
请添加图片描述

(2)propagation

事务传播行为:指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制
常见的传播行为:
请添加图片描述

场景:
REQUIRED:大部分情况下都是用该传播行为即可
REQUIRES_NEW:当我们不希望事务之间相互影响时,可以使用该传播行为,比如:下订单前需要记录日志,不论订单保存成功与否,都需要记入日志

十二.AOP基础

1.概述

AOP:面向切面编程,其实就是面向特定方法编程
场景:案例部分功能运行较慢,定位执行耗时较长的业务方法,此时需要统计每一个业务方法的执行耗时
实现:动态代理是面向切面编程最主流的实现。而SpringAOP是Spring框架的高级技术,旨在管理bean对象的过程中,主要通过底层的动态代理机制,对特定的方法进行编程

2.快速入门

①在pom.xml中导入依赖:
请添加图片描述

②编写AOP程序:针对特定方法根据业务进行编程:
请添加图片描述

3.核心概念

连接点:JoinPoint,可以被AOP控制的方法(暗含方法执行时的相关信息):
请添加图片描述

通知:Advice,指哪些重复的逻辑,也就是共性功能(最终体现为一个方法)
切入点:PointCut,匹配连接点的条件,通知仅会在切入点方法执行时被应用
切面:Aspect,描述通知与切入点的对应关系(通知+切入点)
请添加图片描述

目标对象:Target,通知所应用的对象:
请添加图片描述

十三.AOP进阶

1.通知类型

通知类型:
请添加图片描述

注意:

  1. @Around环绕通知需要自己调用ProceedingJoinPoint.proceed()来让原始方法执行,其它通知不需要考虑目标方法执行
  2. @Around环绕通知方法的返回值,必须指定为Object,来接收原始方法的返回值

@PointCut:该注解的作用是将公共的切点表达式抽取出来,需要时引用该切点表达式即可
请添加图片描述

2.通知顺序

不同切面类中,默认按照切面类的类字母排序,字母排名靠前的先执行
用@Order(数字)加在切面类上来控制顺序,数字小的先执行

3.切入点表达式

切入点表达式:描述切入点方法的一种表达式
作用:主要用来决定项目中的哪些方法需要加入通知
常见形式:

  1. execution(…):根据方法的签名来匹配
  2. @annotation(…):根据注解匹配
图片消失了
(1)execution

主要根据方法的返回值、包名、类名、方法名参数等信息来匹配,语法为:
请添加图片描述

其中带?的表示可以省略的部分:
访问修饰符:可省略
包名.类名:可省略
throws异常:可省略(注意是方法上声明抛出的异常,不是实际抛出的异常)
请添加图片描述

可以用通配符描述切入点:

  1. *:单个独立的任意符号,可以通配任意返回值、包名、类名、方法名、任意类型的一个参数,也可以通配包、类、方法名的一部分
  2. …:多个连续的任意符号,可以通配任意层级的包,或任意类型、任意个数的参数

注意:根据业务需要,可以使用(&&)、(||)、(!)来组合比较复杂的切入点表达式
如:
请添加图片描述

书写建议:
请添加图片描述

(2)@annotation

@annotation切入点表达式,用于匹配标识有特定注解的方法
请添加图片描述

4.连接点

在Spring中用JointPoint抽象了连接点,用它可以获得方法执行时的相关信息,如目标类名、方法名、方法参数等
对于@Around通知,获取连接点信息只能使用ProceedingJoinPoint
请添加图片描述

对于其它四种通知,获取连接点只能用JoinPoint,它是ProceedingJoinPoint的父类型
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在STM32上实现无线传感器网络节点

引言 无线传感器网络(WSN)是物联网(IoT)技术的关键组成部分,广泛应用于环境监测、智能建筑、精密农业等领域。 本教程将介绍如何在STM32微控制器上设计和实现一个无线传感器网络节点,包括硬件选择、网络协…

企业计算机服务器中了helper勒索病毒怎么办?Helper勒索病毒解密处理流程

网络技术的不断发展与成熟,为企业的生产运营提供了极大便利,让企业的发展速度大大提升,但网络毕竟是虚拟服务系统,虽然可以为企业提供便利,但也会给企业数据安全带来严重威胁。近日,云天数据恢复中心接到山…

visionPro链接相机

搜索Cognex GigE Vision Configura… 修改子网掩码为255.255.255.0 配置驱动程序 更新驱动(如果能够选择9014Bytes,跳过此步骤) 更新更改 相机ip配置 打开visionPro 选择照相机 查看实时画面 运行保存图像

【论文】关于网页上能打开的文章下载PDF“显示无效或损坏的 PDF 文件”的解决办法

1. 遇到的问题 今天我在 dl.acm.org/doi 下载论文时发现下载后的pdf打开出现“显示无效或损坏的 PDF 文件” 可是在原网址是可以打开并显示的 2. 解决方案 这里我用到了和之前【论文】去除PDF论文行号的完美解决方案 的相似的解决办法 就是下载的时候不直接下载&#xf…

【java9】java9新特性之接口的私有方法

在Java 9中,接口可以包含私有方法(包括静态私有方法和实例私有方法)。这允许接口的设计者创建一些辅助方法,这些方法只能被接口中的其他方法所使用,而不能被实现该接口的类直接访问。 Java7 Java7及之前 &#xff0c…

文件缓冲区

为什么要有文件缓冲区的存在? 假设甲在云南,甲的朋友乙在北京,甲想给乙送个东西就需要跑到北京去:这时候有菜鸟驿站了,甲就不用跑了,直接把包裹交给菜鸟驿站就可以了。缓冲区就类似于菜鸟驿站,…

【vscode环境配置系列】vscode远程debug配置

VSCODE debug环境配置 插件安装配置文件debug 插件安装 安装C/C, C/C Runner 配置文件 在项目下建立.vscode文件夹,然后分别建立c_cpp_properties.json, launch.json,tasks.json,内容如下: c_cpp_properties.json:…

Dockerfile实战(SSH、Systemctl、Nginx、Tomcat)

目录 一、构建SSH镜像 1.1 dockerfile文件内容 1.2 生成镜像 1.3 启动容器并修改root密码 二、构建Systemctl镜像 2.1 编辑dockerfile文件 ​编辑2.2 生成镜像 2.3 启动容器,并挂载宿主机目录挂载到容器中,然后进行初始化 2.4 进入容器验证 三、…

进程的概念(2)

进程优先级 1.什么的优先级 概念:指定进程获取某种资源(CPU)的先后顺序 本质:优先级的本质是优先级数字的大小,Linux中优先级数字越小,优先级越高 task_struct 进程控制快-> struct -> 内部字段 -&g…

《从Paxos到Zookeeper》——第四、七章:基本概念及原理

目录 第四章 Zookeeper与Paxos 4.1 Zk是什么 4.1.1 Zk特性 4.1.2 Zk基本概念 4.1.2.1 集群角色(Follower, Leader, Observer) 4.1.2.2 数据模型 4.1.2.3 ZNode(数据节点) 4.1.2.4 Session(会话) 4.1.2.5 ACL(Access Control Lists) 4.1.2.6 Watcher(事件…

测试开发 | 相比 Selenium,Web 自动化测试框架 Playwright 有哪些强大的优势?

Playwright 是由微软的研发团队所开发的一款 Web 自动化测试框架,这个框架具有多平台、跨语言的特点。除了基本的自动化测试能力之外,同时它还具备非常强大的录制功能、追踪功能。以下是 Playwright 与 Selenium 的对比。 ​ 由此可见,Play…

HTML5(2)

目录 一.列表、表格、表单 1.列表标签 2.表格 4.无语义的布局标签 5.字符实体 6.综合案例--1 7.综合案例--表单 一.列表、表格、表单 1.列表标签 1.1 无序列表 1.2 有序列表 1.3 定义列表 定义列表一般用于网页底部的帮助中心 2.表格 2.1 2.2 表格结构标签 shiftaltf 格…

chrome 安装devtools

chrome 安装devtools 下载安装 链接:https://github.com/vuejs/devtools 选择对应版本: 安装yarn 下载 npm install -g yarn --registryhttps://registry.npmmirror.com进入下载的目录安装依赖 yarn install --registryhttps://registry.npmmirror.…

简单的图像处理算法

本笔记参考crazy_Bingo 基础: 图像处理都是用卷积矩阵对图像卷积计算,如3X3 的矩阵对640 X 480分辨率的图像卷积,最终会得到638 X 478 的图像。卷积过程是这样的: 一、中值滤波 : 找出矩阵中的最中间值作为像素点 中…

动态增删表格

期望目标&#xff1a;实现一个能通过按钮来动态增加表格栏&#xff0c;每次能添加一行&#xff0c;每行末尾有一个删减按钮。 <el-button type"text" class"primary"click"addMember()">添加</el-button> <el-table:data"m…

数据库常考理论

1 笛卡尔积X与自然连接∞的区别 2 求候选键 3 无损连接及函数依赖 4 范式判断 笛卡尔积&#xff1a;S1*S2,产生的结果包括S1和S2的所有属性列&#xff0c;并且S1中每条记录依次和S2中所有记录 组合成一条记录&#xff0c;最终属性列为S1S2属性列&#xff0c;记录数为S1*S2记…

mamba 和conda 安装R包

**1. 下载miniconda3 ** wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh这个命令是在linux终端中输入的,miniconda3管理起来更方便。 2. 安装miniconda3 sh Miniconda3-latest-Linux-x86_64.sh接下来会有一些回车(ente…

「C++ 内存管理篇 1」C++动态内存分配

目录 〇、C语言的动态内存分配方式 一、C的动态内存分配方式 1. 什么是C的动态内存分配&#xff1f; 2. 为什么需要C的动态内存分配&#xff1f; a. new的优势 b. new的不足 c. delete的优势 d. 总结 3. 怎么使用new和delete? a. 对于内置类型 b. 对于自定义类型 c. 为什么ne…

牛客NC242 单词搜索【中等 递归DFS C++/Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/987f2981769048abaf6180ed63266bb2 思路 递归&#xff1a;以word第一个字符为起点&#xff0c;在矩阵中 递归搜索&#xff0c;检查是否存在完整的word路径&#xff0c; 注意恢复现场&#xff0c;又叫回溯&#…

物联网通信网关的主要功能体现在哪些方面?-天拓四方

在信息化、智能化的时代&#xff0c;物联网技术的广泛应用正在逐渐改变我们的生活方式。物联网通过各种传感器和设备&#xff0c;将现实世界与数字世界紧密相连&#xff0c;从而实现智能化、自动化的生活和工作方式。作为物联网生态系统中的重要组成部分&#xff0c;物联网通信…