黑马大事件学习后端总结

 1.环境搭建

1.1准备

1.执行资料中的event.sql脚本,准备数据库表

(没有资料去黑马微信小程序自提)

复制完执行一下会多出bigevent文件

2.创建springboot工程,引入对应的依赖(web,mybatis,mysql驱动)

1.2新建一个项目

1.21新建

然后在resources底下创建yml文件\

1.2.2配置

(pom文件结构:项目坐标 (GAV) 项目的“身份证”,唯一标识。
依赖管理 声明项目运行和编译需要哪些外部库。
构建配置 自定义如何编译、测试、打包项目。
继承与聚合 管理多模块项目,实现配置复用和统一构建。
属性 统一管理配置值,便于维护。)

注:视频中为3.1.3但是我输入3.1.3会报错

然后记得刷新

3.配置文件application.yml中引入mybatis的配置信息

4.创建包结构,准备实体类

创建包结构

准备实体类

将app改名

@SpringBootApplication 是一个组合注解,它实际上包含了三个最重要的注解功能,合三为一:1.@SpringBootConfiguration 它本身是 @Configuration 的变体。标记这个类是一个配置类。这意味着你可以在这个类里使用 @Bean 注解来定义 Spring 容器要管理的对象。2. @EnableAutoConfiguration - 这是 Spring Boot 的“魔法”核心 它开启自动配置。这个功能会根据你引入的依赖(比如在 pom.xml 里添加了 spring-boot-starter-web),自动为你配置 Spring 应用程序所需的大部分组件。3. @ComponentScan 它自动扫描当前包及其子包下的所有组件。这些组件包括:@Component, @Service,@Repository, @Controller 等扫描到之后,会自动将这些类注册为 Spring 的 Bean,无需手动在配置文件中一个个声明。

2.用户

2.1用户注册

lambok在编译阶段,为实体自动生成setter getter tostring pom文件中引入依赖,在实体类上添加注解

三个文件都写上data

文件准备

@RestController 就是告诉 Spring Boot:“我这个类是专门用来接收网络请求,然后直接返回数据的,不用搞网页界面!”
@RequestMapping 就是给你的方法或类贴上一个地址标签,告诉 Spring:“当有人访问这个网址时,就来找我处理!”

@Autowired 就是告诉 Spring:“我这里需要个东西,你帮我找一下然后塞过来,我就不自己 new 了!”
@GetMapping 获取数据 SELECT(查)

@PostMapping 创建数据 INSERT(增)

@PutMapping 更新数据 UPDATE(改)

@DeleteMapping 删除数据 DELETE(删)

@Service告诉spring这是服务层

@Override 就是告诉编译器:“我是故意要重写父类方法的,你帮我检查一下我写对了没有!”

2.1.1查询

2.1.2为用户密码加密

完整代码

测试 (可以用postman)

2.1.3参数校验

简便参数校验

引入spring validation起步依赖

在参数前面添加@pattern注解

@pattern就是给你的数据设一个格式模板,告诉系统:"这个字段必须符合我定的格式,否则就不让通过!"

2.1.4正则函数

在controller类上添加@validated注解

@Validated 和 @Valid 就是告诉 Spring:"帮我检查一下这个对象的数据对不对,不对就别往下走了!

常见条件:

@NotBlank 字符串不能为空 @NotBlank(message = "姓名必填")

@NotNull 对象不能为null @NotNull(message = "ID必填")

@Size 长度限制 @Size(min=2, max=10, message="长度2-10")

@Pattern 正则校验 @Pattern(regexp="1\\d{10}")

@Email 邮箱格式 @Email(message="邮箱格式错误")

@Min / @Max 数值范围 @Min(18) @Max(100)

@Positive 必须为正数 @Positive(message="必须为正数")

全局异常处理器

2.2用户登录

登录主逻辑UserController:

登录认证引入

2.2.1配置web登录中最常用的jwt令牌

json字符串

第一部分:头   加密算法,JWT

第二部分:有效载荷   用户数据(Base64编码,公开非加密)

第三部分:签名   数字签名(加密)

pom文件:

test:

jwt验证

2.2.2登录验证

生成token   UserController

验证token   ArticleController

为所有页面定义一个拦截器

@Component 就是告诉 Spring:“把我这个类当成一个零件,放到你的零件箱里,需要的时候随时拿来用!”

2.3注册拦截器

将ArticleController代码注释掉

2.4获取用户详细信息

UserController

防止返回password

@Data 就是告诉 Lombok:“帮我自动生成这个类的所有Getter、Setter、toString、equals、hashCode方法,我不想写这些重复代码!”


使createTime与updateTime能正常返回值

2.5thread local优化

作用:提供现成的局部变量

注释代码

loginInterceptor

UserController

完成之后在loginInterceptor上移除数据

2.6获取用户详细信息

UserController

防止返回password

使createTime与updateTime能正常返回值

2.7thread local优化

作用:提供现成的局部变量

注释代码

loginInterceptor

UserController

完成之后在loginInterceptor上移除数据

2.8更新用户的基本信息

UserController更新

UserService

UserServicImpl

UserMapper



2.8.1参数校验

user

UserController

2.9更新用户头像

UserController

@PatchMapping 就是告诉 Spring:"当有人用 PATCH 方式给我发部分数据时,我就只更新这部分字段,其他的不动!"

Userservice

UserserviceImpl

UserMapper

UserserviceImpl

获取updatetime

对头像进行参数校验

2.10更新用户密码

UserController

Userservice

UserserviceImpl

记得配置数据库,我到现在才发现没有配置

UserMapper

 

3.文章分类

3.1新增文章分类

创建类

完善代码

方法校验

categoryController

3.2文章分类列表

CategoryController

CategoryService

CategoryServiceImpl

CategoryMapper

指定日期格式

Category

3.3获得文章分类详情

CategoryController

CategoryService

CategoryServiceImpl

CategoryMapper

3.4更新文章分类

CategoryControlle

Category

CategoryService

CategoryServiceImpl

CategoryMapper

3.5删除文章分类(自己敲的)

CategoryControlle

CategoryService

CategoryServiceImpl

CategoryMapper

3.6分组校验

把校验进行归类分组,在完成不同功能的时候,校验指定组中的校验项

1.定义分组

Category

2.定义校验项时指定归属的分组

Category

3.校验时指定要校验的分组

CategoryController

4.文章管理

4.1新增文章

创建文件

4.2参数校验

ArticleController

已有注解不能满足所有的校验需求,特殊的情况需要自定义校验

1.自定义注解State

2.自定义校验数据的类StaValidator实现ConstraintValidator

state

3.在需要校验的地方使用自定义注解

article

4.3文章列表(条件分页)

ArticleController

ArticleService

pom

ArticleServiceImpl

创建

ArticleMapper

 声明:本站代码由自己独立完成,请广大网友批评指正

4.4更新文章

ArticleController

Articleservice

ArticleserviceImpl

ArticleMapper

4.5获取文章详情

ArticleController

Articleservice

ArticleserviceImpl

ArticleMapper

4.6删除对应文章

ArticleController

Articleservice

ArticleserviceImpl

ArticleMapper

 4.7文件上传

5.上传云端

5.1第三方服务通用思路

1.准备工作

2.参考官方SDK编写入门程序

3.集成使用

详细注册步骤请看文档

编写入门程序

 

 

 6.登录优化

6.1令牌主动失效机制

登陆成功后,给浏览器响应令牌的同时,把该令牌储存到redis中

LoginInterceptor拦截器中,需要验证浏览器携带的令牌,并同时需要获取到redis中储存的与之相同的令牌

当用户修改密码成功后,删除redis中储存的旧令牌

6.2SpringBoot集成redis

导入spring-boot-starter-data-redis起步依赖

在yml配置文件中,配置redis连接信息

调用API完成字符串的存取操作

6.3令牌主动失效机制

登陆成功后,给浏览器响应令牌的同时,把该令牌存储到redis中

usercontroller

LoginInterceptor拦截器中,需要验证浏览器中携带的令牌,并同时需要获取到redis中存储的与之相同的令牌

LoginInterceptor

当用户修改密码成功后,删除redis中存储的旧令牌

usercontroller

6.4springboot部署

修改端口

6.5springboot多环境开发pofles

开发环境

测试环境

生产环境

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值