javaweb学习week6

news2024/11/28 0:34:43

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的父类型
请添加图片描述

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

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

相关文章

构建本地大语言模型知识库问答系统

MaxKB 2024 年 4 月 12 日,1Panel 开源项目组正式对外介绍了其官方出品的开源子项目 ——MaxKB(github.com/1Panel-dev/MaxKB)。MaxKB 是一款基于 LLM(Large Language Model)大语言模型的知识库问答系统。MaxKB 的产品…

【生活日常】听歌识曲失败后,寻找一首曲子的心路历程……

Have a nice day :) 0x00 事情经过 叶子现在心情很是激动!是这样的…… 昨天下午呢,去了家不错的咖啡厅,点了杯冰美式,很不错! 而且店里的 Marshall 音箱也很带劲! 然后我听到了种类似 "合成器节奏…

SpringMVC进阶(过滤器解决中文乱码,处理json以及文件上传下载)

文章目录 1.中文乱码处理1.引出问题1.恢复原来取消掉的属性绑定2.启动服务器,引出问题 2.自定义中文乱码过滤器1.MyCharacterFilter.java2.web.xml配置过滤器(这个解决乱码的过滤器放到最前面)3.结果展示 3.使用Spring过滤器处理(…

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

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

解决Pytorch的cuDNN error: CUDNN_STATUS_NOT_INITIALIZED

目录 1. 问题报错2. 可能原因2.1 GPU内存不足2.2 缓存问题2.3 CUDA和Pytorch版本不兼容2.4 CUDA和cuDNN版本不兼容 3. 验证CUDA是否可用4. 参考 1. 问题报错 在使用GPU加速模型训练的过程中经常会遇到这样的错误: RuntimeError: cuDNN error: CUDNN_STATUS_NOT_IN…

8_手眼标定总结_auboi5机械臂与海康平面相机

经过不断地学习与调试,不断地学习网络上其他同志分享的资料,opencv手眼标定迎来了阶段性结束。实际测试结果在机械臂坐标系中X方向差5mm左右。 代码参考《https://blog.csdn.net/wanggao_1990/article/details/81435660》 注意事项: ①标定…

开源相机管理库Aravis例程学习(五)——camera-api

开源相机管理库Aravis例程学习(五)——camera-api 简介例程代码函数说明arv_camera_get_regionarv_camera_get_pixel_format_as_stringarv_camera_get_pixel_formatARV_PIXEL_FORMAT_BIT_PER_PIXEL 简介 本文针对官方例程中的:03-camera-api…

Kafka(十二)Streams

目录 Streams1 什么式是流式处理2 流式处理的相关概念2.1 拓扑2.2 时间2.2.1 输入时间2.2.2 输出时间 2.3 状态2.4 流和表2.5 时间窗口2.5.1 测试时间窗口 2.6 处理保证 3 流式处理设计模式3.1 单事件处理3.2 使用本地状态3.3 多阶段处理和重分区3.4 使用外部查找:流…

HTML5(1)

目录 一.HTML5(超文本&#xff08;链接&#xff09;标记&#xff08;标签<>&#xff09;语言) 1.开发环境&#xff08;写代码&#xff0c;看效果&#xff09; 2.vscode 使用 3.谷歌浏览器使用 4.标签语法 5.HTML基本骨架&#xff08;网页模板&#xff09; 6.标签的…

【多维动态规划】Leetcode 64. 最小路径和【中等】

最小路径和 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例 1&#xff1a; 输入&#xff1a;grid [[1,3,1],[1,5,1],[4,2,1]] 输出…

Stable Diffusion 模型分享:Inkpunk Diffusion(动漫、墨水朋克)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 在 Dreambooth 上训练的微调稳定扩散模型。隐约受…

现代神经网络总结(AlexNet VGG GoogleNet ResNet的区别与改进)

VGG NIN GoogleNet 1.VGG&#xff0c;NIN&#xff0c;GoogleNet的块结构图对比(注意:无AlexNet) 这些块带来的区别与细节 AlexNet未使用块,主要对各个层进行了解: 卷积:捕捉特征 relu:增强非线性 池化层:减少计算量 norm:规范数据分布 全连接层:分类VGG块的改善(对比AlexNe…

将要上市的自动驾驶新书《自动驾驶系统开发》中摘录片段

全书共分15章&#xff1a;第1章是自动驾驶系统的概述&#xff08;场景分类、开发路径和数据闭环等&#xff09;&#xff0c;第2章简介自动驾驶的基础理论&#xff0c;即计算机视觉和深度学习等&#xff0c;第3&#xff5e;4章是自动驾驶的软硬件平台分析&#xff0c;包括传感器…

使用STM32CubeMX对STM32F4的CAN1/2/3配置及接收中断开启

目录 1. CAN配置1.1引脚&#xff08;STM32F413VGT6-LQFP100&#xff09;1.2 时钟1.3 RCC配置1.4 CAN1配置1.5 CAN2配置1.6 CAN3配置1.7 输出设置 2. CAN代码2.1 CAN初始化2.2 CAN滤波器设置2.3 CAN使能2.4 激活中断2.5 CAN发送函数2.6 CAN回调函数2.7 main之后的代码 1. CAN配置…

20232831 袁思承2023-2024-2 《网络攻防实践》第8次作业

目录 20232831 袁思承2023-2024-2 《网络攻防实践》第8次作业1.实验内容2.实验过程一、动手实践任务一二、动手实践任务二&#xff1a;分析Crackme程序①crackme1.exe②crackme2.exe 三、分析实践任务一四、分析实践任务二 3.学习中遇到的问题及解决4.学习感悟、思考等参考资料…

你不需要总是在 React 中使用 useState

在我审查的一个拉取请求中&#xff0c;我注意到在许多拉取请求中看到的一种模式。React 组件具有多个 UI 状态&#xff0c;例如 loading、error 和 success。 作者使用了多个 useState 钩子来管理这些状态&#xff0c;这导致代码难以阅读且容易出错&#xff0c;例如&#xff1a…

ArcGIS Pro3.0软件破解版安装教程

软件名称&#xff1a;ArcGIS Pro 3.0 安装环境&#xff1a;Windows 软件大小&#xff1a;7.3GB 硬件要求&#xff1a;CPU2GHz&#xff0c;内存4G(或更高) 百度云下载链接 &#xff1a; https://pan.baidu.com/s/1CXy1MSwdQXdVnJoV2X422A 提 取 码 &#xff1a;r0w1 教学内…

uniapp 对接facebook第三方登录

1.登录facebook开发者中心&#xff0c;打开我的应用页面在这里插入图片描述 2.创建应用 3.选择类型 4.填写信息 5.添加登录 6.添加平台 安卓密钥生成【需要 Java 环境!!! 和 openssl库】 Google Code Archive 的 Windows 版 openssl-for-windows OpenSSL 库 将openssl下载到…

word 表格 文字 上下居中

问题 word 表格 文字 上下居中 详细问题 笔者进行word 文档编辑&#xff0c;对于表格中的文本内容&#xff0c;如何进行上下居中&#xff1f; 解决方案 步骤1、选中需要进行操作的单元格 步骤2、右键 → \rightarrow →点击表格属性 步骤3、依次点击单元格 → \rightar…

ASP.NET前后端分离,WebApi。Vue3+ElementPlus+Axios+Pinia全流程教程

文章目录 前言1、.net core 执行过程2、中间件的执行过程3、AOP切面编程 Swagger添加Swagger注释 JWT1、解析2、配置JWT 配置SqlSugar0、引入SqlSugarCore包1、编写Context类2、配置实体类3、创建Service服务类进行数据库的CRUD4、配置Controller进行路由 依赖注入与IOCIOC依赖…