Web后端开发的学习

news2024/11/27 8:39:23

REST风格

  • GET:查询用户
  • POST:新增用户
  • POT:修改用户
  • DELETE:删除用户

前后端交互统一的响应结果

记录日志

  • @SLf4j

注解:

  • @PathVariable:获取路径的参数
  • @ResponseBody :方法的返回值直接作为 HTTP 响应的正文返回,将响应的实体类转为json发送给前端
  • @RequestBody :将request的json转化为实体类给后端
  • @RequestParam :请求参数,可设置默认值
  • DateTimeFormat(patten = " ")指定传入进来的时间格式

页面的分页查询

  • 1.接受分页参数 page pageSize
  • 1.获取查询的数据
  • 2.数据的总数
  • 返回总记录数以及当前页数据列表
  • mapper:
  • service:

xml:

  • 同包同名
  • namespace与mapper全类名保存一致

分页条件查询

  • 配置xml

  • 标签 :根据里面条件判断是否自动生产where子句 自动去除第一个条件多余的and /or

  • 分页插件:PageHelper

    • 引入依赖
    • Mapper
    • service

接受文件

  • MultipartFile image//此变量名需与前端一致
  • 需存储文件
  • 使用uuid区分文件的不同
    • uuid:通用唯一识别
  • MultipartFile常见方法

批量删除

  • collection :要遍历的集合
  • item :遍历出来的每一个元素
  • separator :分隔符
  • open:遍历之前拼接什么
  • close:遍历之后拼接什么

存文件到云服务

  • 映入SDK依赖
  • 安装OSS Java SDK_对象存储(OSS)-阿里云帮助中心

配置文件

  • @Value注解通常用于外部配置的属性注入,@Value("${配置文件中的key}")
  • yml配置文件
    • 层级结构更清晰,简介,数据为中心
    • 基本语法:
      • 大小写敏感
      • 数值前边必须有空格,作为分隔符
      • 使用缩进表示层级关系,不允许使用tab,只能用空格(idea中自动将tab转化为空格
      • 缩进空格数目不重要,只要相同层级的元素左侧对齐即可
      • '#' 表示注解
    • 常见格式:
    • @ConfigurationProperties
      • 创建类来注入属性
      • 引入依赖 让配置文件的时候有提示

@Value与@ConfigurationProperties的区别:

  • 相同点:都是用来注入外部配置的属性的
  • 不同点:
    • @Value只能一个一个的进行外部属性注入
    • @ConfigurationProperties可以批量的将外部属性配置到bean对象的属性中

登录功能的开发

  • 登录
    • 验证username与password在数据库中的数据即可
  • 登录校验
    • 登录标记:登录成功后,每一次请求,都可以获取到该标记
    • 同一拦截:过滤器Filter 拦截器Interceptor

登录校验

  • 会话技术
    • 会话:用户打开了浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应
    • 会话跟踪:一种维护浏览器的方法,服务器需要识别多次请求是否来自于同一个浏览器,以便在同一次会话的多次请求间共享数据。
    • 会话跟踪方案:
      • 客户端会话跟踪技术:Cookie
      • 服务端会话跟踪技术:Session
      • 令牌技术
  • 优点:HTTP协议中支持的技术
  • 缺点:移动端APP无法使用Cookie
    • 不安全,用户可以自己禁用Cookie
    • Cookie不能跨域
      • 跨域区分三个维度:协议,IP/域名,端口

Session

  • 往cookie中存sessionId,拿到id后去往服务器解析出来用户信息
  • 优点:存储在服务端,安全
  • 缺点:服务器集群环境下无法直接使用Session
    • Cookie的缺点

令牌

  • 优点:支持pc端,移动端
    • 解决集群环境下的认证问题
    • 减轻服务器存储压力
  • 缺点:需要自己实现

JWT

过滤器(Filter)

  • 可以把对资源的请求拦截下来,从而实现一些特殊的功能
  • 过滤器一般完成一些通用的操作,:比如登录校验、同一编码处理、铭感字符处理等
  • 入门:
    • 1.定义Filter:定义一个类,实现Filter接口,并重写所有方法
    • 2.配置filter:Filter加上@WebFilter注解,配置拦截资源的路径。引导类上加@ServletComponentScan开启Servlet组件支持
  • 执行流程
    • 放行访问资源,访问完毕,还会回到Filter中
    • 回到Filter中后,执行放行之后的逻辑
  • 拦截路径:
    • 拦截具体路径: urlPatterns = "/login"
    • 目录拦截: urlPatterns = "/emps/*" 拦截访问/emps下的所有资源
    • 拦截所有:urlPatterns = "/*"
  • 过滤器链:一个web应用可以配置多个过滤器,多个过滤器形成一个过滤器链
    • 多个过滤器会将本次放行到下一个过滤器 (根据类名字母的顺序)
  • 实现:

拦截器(Interceptor)

  • 类似过滤器,spring提供,用来动态拦截控制器方法的执行
  • 作用:拦截请求,在指定方法调用后,根据业务需要执行预先设定的代码
  • 入门:
    • 定义拦截器,实现HandlerInterceptor接口
    • 配置拦截器
  • 拦截路径:
    • 根据需求拦截不同的拦截路径
  • 执行流程:

异常处理

  • 全局异常处理器

事务管理&AOP

  • 事务是操作的集合,是不可分割的单位,要么同时成功,那么同时失败
  • 操作(MySQL中):
    • 开启事务(一组操作开始前,开启事务):start transaction / begin
    • 提交事务(这组操作全部完成后,提交事务) :commit
    • 回滚事务(中间任何一个操作出现异常,回滚事务):rollback
  • 删除部门,同时删除部门下的所有员工
  • springboot中:
    • @Transactional :开启事务
      • 交给servive层的方法,类上,接口上
      • 作用:将当前方法交给spring进行事务管理,方法执行之前开启事务,执行完毕提交事务;出现异常,回滚事务
      • 还可在yml配置文件中开启事务管理日志

@Transactional属性

  • rollbackFor
    • 默认情况下,只有出现RuntimeException才回滚异常。
    • rollback属性用于控制出现何种异常类型,回滚事务
  • propagation 传播行为
    • 事务传播行为:指的是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制

AOP(springAOP)

  • Aspect Oriented Programming (面向切面编程,面向方面编程) :面向特定方法编程

  • 实现:

    • 动态代理是它的最主流的实现。
  • 添加依赖

  • 创建类,加上注解:@Component @Aspect//AOP类

  • 场景:记录操作日志 权限管理 事务管理

  • 优势:代码无侵入 减少重复代码 提高开发效率 维护方便

  • 核心概念:

    • 连接点:JoinPoint,可以被AOP控制的方法(暗含方法执行时的相关信息)
    • 通知:Advice,指哪些重要的逻辑,也就是共性功能(最终体现为一个方法)
    • 切入点:PointCut,匹配连接点的条件,通知仅会在切入点方法执行时被应用
    • 切面:Aspect,描述通知与切入点的对应关系(通知+切入点)
    • 目标对象:Target,通知所应用的对象

通知类型

  • 1.@Around :环绕通知,此注解的通知方法在目标方法前,后都被执行
  • 2.@Before :前置通知,此注解标注通知的方法在目标方法前被执行
  • 3.@After :后置通知,此注解标志的通知方法在目标方法后被执行,无论是否有异常都会被执行
  • 4.@AfterReturning:返回后通知,此注解标注的通知方法在目标方法后被执行,有异常不会执行
  • 5.@AterThrowing :异常后通知,此注解标志的通知方法发生异常后执行
  • 注:环绕通知需要自己调用 ProceedingJoinPoint.proceed()来让原始方法执行,其他通知不需要考虑目标方法执行
    • 返回值必须指定为Object,来接受原始方法的返回值
  • 抽取切入点表达式

通知顺序

  • 当多个切面的切入点都匹配到了目标方法,目标方法运行时,多个通知方法都会被执行。
    • 1.通知顺序和类名顺序一直
    • 2.@Order(数字)加在切面类上控制顺序
      • 目标方法前的通知:数字小的先执行
      • 目标通知后的通知:数字小的后执行

切入点表达式

  • 决定项目中哪些项目需要加入通知
  • 常见形式:
    • 1.execution():根据方法的签名来匹配
    • 2.@annotation():根据注解匹配
  • execution():
    • 包名类名不省略
  • @annotation(),用于匹配标识特定注解的方法
  • 定义注解
  • 在所需要的方法上加注解
  • 指定log的全类名即可

连接点

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

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

相关文章

qml自定义组件

不管是component还是分文件编写的一个自定义组件,遵循如下: a:不管哪一级的子对象 都可以直接调根节点下的方法和属性 b:不管哪一级的子对象 调用非根节点的方法和属性,前面要加上该节点的id,即id.方法()或id.属性的形式 import QtQuick 2.…

《Java2实用教程》 期末考试整理

作用域 当前类 当前包 子类 其他包 public √ √ √ √ protected √ √ √ default √ √ private √ 三、问答题(每小题4分,共8分) 1.类与对象的关系 对象:对象是类的一个实例,有状…

Oracle--数据字典

1.介绍 数据字典是Oracle存储数据库内部信息的地方,描述了数据库内部的运行和管理情况 Oracle数据字典的名称由前缀和后缀组成,使用下划线_连接: dba_:包含数据库实例的所有对象信息v$_:当前实例的动态视图&#xff0…

成龙“参战”暑期档,2024会成为博纳的爆发之年吗?

作为全年最长的档期,暑期档即将迎来观影高峰期,电影市场的竞争已然打响。 根据猫眼数据,目前共有79部影片预计在暑期档上映,且数量仍在持续攀升,这个暑假线下影院势必会非常热闹。 不过电影数量虽多,却依…

RTOS笔记--资源管理

资源管理 资源管理,其实就是前面介绍过的通知方式中的队列信号量互斥量等是如何访问临界资源的,如何做到完全互斥。 在之前举过一个例子:当我们使用全局变量来进行互斥操作时,有可能在改写全局变量时被切换使得不再互斥&#xff0…

一、开发环境安装 Avalonia

1、概述 官网中是这么介绍Avalonia的,Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这…

黄金价格与美元的关系变了?

在一些传统的定价框架中,现货黄金的价格走势取,决于美元的实际利率水平——实际利率越高,黄金价格越低,反之亦然。在大多数的时候,美元的实际利率决定了美元指数的高低所以人们通常认为,现货金价与美元呈反…

装机后操作纪录

刚刚装完机 什么都没有 就像在一片一望无际的草原 要恢复原来笔记本的“秩序” 就像在这个草原建立全新的王国 1、关于显示器电脑屏幕图标巨大且糊的处理方法 用一台可正常使用的电脑,到主板官网下载相关驱动。(铭瑄B760M D4 WIFI驱动下载) 2、关于桌面没有显示“…

电感的本质是什么

什么是电感? 电感器件一般是指螺线圈,由导线圈一圈靠一圈地绕在绝缘管上,绝缘管可以是空心的,也可以包含铁芯或磁粉芯。 为什么把’线’绕成’圈’就是电感? 电感的工作原理非常抽象,为了解释什么是电感…

货代小白快来收藏‼️普货与非普货的区别

普货是指不属于以下类别的普通货物 危险品 冷冻/冷藏品 违禁品 仿牌货 敏感货 危险品 危险品具体分为九类: 爆炸品 压缩气体 易燃液体 易燃固体、易燃物品和遇湿易燃物品 氧化剂和有机氧化物 有毒和感染性物品 放射性 腐蚀性 杂类 冷冻/冷藏品 主要是指以食品为主的…

AzureDataFactory 在不同的订阅间迁移Pipeline

前面的博文中的POC是客户向微软申请的试用环境,POC结束客户也购买了Azure订阅,需要复用试用环境中的Pipeline,此时就需要将Pipeline进行迁移。 目之所及有两种方式,第一种是通过导入导出模版,选择需要迁移的Pipeline&a…

Digital Video Repair3.7.1.0 --一款免费的视频文件修复工具,供大家学习研究参考

下载地址: https://download.csdn.net/download/weixin_43097956/89431959

Vector | Graph:蚂蚁首个开源Graph RAG框架设计解读

作者:范志东 检索增强生成(RAG:Retrieval Augmented Generation)技术旨在把信息检索与大模型结合,以缓解大模型推理“幻觉”的问题。近来关于RAG的研究如火如荼,支持RAG的开源框架也层出不穷,并…

spring:深入理解@EnableAspectJAutoProxy

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

旋转的六边形

【题目描述】 输入一个整数n,绘制出n个不断旋转的六边形,如图1所示。 图1 旋转的六边形图形 【要求】 -绘制速度设为最快,画笔粗细为3。 -六边形每次旋转10度,边长增加10%。 【分析】 这是一个同心正六边,六边形边…

自定义Unity组件——ABManager(AB包管理器)

需求描述 在Unity3D引擎中,AB包作为常用的游戏资源存储格式之一。而对于资源管理我们就不得不谈到集中管理的优势了,通过统一的接口加载和卸载AB包及其中的资源将进一步提升我们的编程效率。本文将围绕这个需求进行尝试。 功能描述 1. AB包的加载包括同…

从 Solana 课程顺利毕业获得高潜岗位,他的 Web3 开发探险之旅

在 TinTinLand 的学习,给了我入门 Web3 行业的 Entry Ticket,我认为这张 Ticket 是非常宝贵和重要的。 Alex,一位从某家知名研究所毅然辞职,踏入Web3世界的年轻开发者,凭借在 TinTinLand 推出的「Solana 黑客松先锋训练…

上海交通大学、中科大 开源镜像站停止 Docker Hub 仓库镜像支持后的可用替代源

上海交通大学 Linux 用户组发布公告: 即时起中止对 Docker Hub 仓库的镜像。Docker 相关工具默认会自动处理失效镜像的回退,如果对官方源有访问困难问题,建议尝试使用其他仍在服务的镜像源。 源加速地址 有网友表示百度的 Docker Hub 加速器…

我在高职教STM32——GPIO入门之蜂鸣器

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正因如此,才有了借助 CSDN 平台寻求认同感和成就…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 字符串筛选排序(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 &#x1f…