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

  • 29
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb学习系统是一个用于学习和实践JavaWeb开发技术的在线教育平台。该系统通过提供丰富的学习资料、在线编程实践环境和互动交流平台,帮助学习者系统地学习并应用JavaWeb开发技术。 首先,JavaWeb学习系统提供了全面且结构化的学习资料。学习者可以在系统中浏览各种教程、文档和案例,深入学习JavaWeb的相关知识。这些学习资料从基础知识开始,逐步深入,帮助学习者建立起完整的知识体系。 其次,该系统还提供了一个方便的在线编程实践环境。学习者可以在系统中编写JavaWeb代码,并立即运行、调试和查看结果。这样的实践环境可以让学习者在实际操作中加深对知识的理解和掌握,并帮助他们在实践中掌握解决问题的能力。 另外,JavaWeb学习系统也注重互动交流。学习者可以在系统中与其他学习者进行互动,共同解决问题、分享经验。此外,系统也提供了在线讨论区和答疑板块,学习者可以向专业人员提问,并得到及时的解答和指导。这种互动交流的方式有助于学习者更好地理解和应用JavaWeb开发技术。 总的来说,JavaWeb学习系统通过提供全面的学习资料、便捷的编程实践环境和互动交流平台,帮助学习者系统地学习和应用JavaWeb开发技术。通过该系统,学习者可以获取知识、实践技能,并和其他学习者一起成长。这样的学习系统对于提高学习效果和培养实际能力非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值