把黑马最近一个比较新Java基础的课程看完了:黑马程序员2023新版JavaWeb开发教程,实现javaweb企业开发全流程(涵盖Spring+MyBatis+SpringMVC+SpringBoot等)_哔哩哔哩_bilibili
Day001:是简单的html
Day02:JS+vue
Day03:axios+vue前端工程化项目的创建+基础的路由+Element-ul的简单使用
Day04:Maven+http协议+tomcat
Day05:postman的基础使用和分层解耦,IOC+DI
Day06+Day07:Mysql使用
Day08+Day09:Mybatis
Day10:项目中比较基础的,增删改查分页查询的操作
Day11:文件上传主要是aliyunOSS存储(本地也有)还有springboot的配置文件application.yml的配置格式
Day12:主要是登录的校验。用JWT令牌来判断,用Filter过滤器或者Interceptor拦截器去校验。
Day13:AOP面向切面编程
Day14:springboot的IOC容器如何把bean对象装进去拿出来的,主要是springboot的自动配置。
Day15:项目的分模块的开发,pom.xml的继承,依赖版本的管理,方便后面打包的项目的聚合。
讲一下我自己的理解,错误之处还请大佬斧正:
学习后面超级简单的分一下模块(有个样子.0)主要结构大概就下面的样子
大致是照着老师的样子做了个游戏,星穹铁道的前后端。
流程呢就是先写pojo实体类,然后去写Mapper接口增删改查简单的sql,接着是Service和ServiceImpl的书写,在这里面实现简单的功能。最后再写和前端交互的controller。
比如游戏里面的各种光锥(就是武器)的数据展示在前端:跟着项目写3个,一个是最基本的查询所有:select * from guangzhui。一个是分页查询,一样的sql语句返回类型为List。不过在Service里面分页查询功能的返回类型为:PageBean。PageBean类,里面一个int属性total,表示总记录数。一个List属性的rows,表示查询得到的数据。
在Service里面,分页查询需要带两个参数,一个是currentPage,表示当前是第几个页面。还有pageSize表示一个页面展示多少个数据。这都是从前端获取的。方法的实现很简单,pageHelpr先star页面传入参数,然后直接调用Mapper方法查询,结果转化为Page对象,有参构造方法得到pagebean,return。最后写一下controller
条件分页查询大致过程一样,sql语句写成动态,Service的方法就要多传入一个光锥的对象
删除方法,删除多个和单个删除:
新增和修改便是大同小异了:
项目运行的大致流程:前端axios
发送请求到后端的controller,controller调用Service逻辑处理,Service调用底层Mapper和数据库进行交互。得到数据后返回给前端,前端vue进行页面的渲染展示页面。
比起这些后端的代码,我感觉还是要注意一下前端的逻辑
比方说分页条件查询,前端需要给后端三个数据,一个是currentPage,一个pageSize,一个查询条件的对象
删除和修改操作时候:
Element-ui插槽的使用就显得尤其重要了:
然后是图片上传(文件也一样)
前端代码:后端代码:
上面的算是工具类的一种,现在写在了一个模块中,后面分模块开发的话,直接导入工具类的依赖坐标,应该会更方便一点
登录功能应该算是一个重点了。这里使用的验证方式是JWT令牌。
首先进入登录的页面:我们后端拦截请求
1.进行判断是否为登录的操作(防止直接输url)跳转页面,刚登录自然没有令牌,放行,如果不是那就接着判断。
2.得请求头的令牌,然后判断令牌是否存在,不存在就返回,错误信息
3.解析令牌出错的话就返回,错误信息
4.over了,放行。
大致流程
前端输入信息登录,后端得到请求,信息正确,会生成一个jwt令牌,返回给前端(登陆者的信息也返回给前端), 前端拿到这些数据之后呢,把信息存储在本地。接下来,前端任意一个操作,都会在请求头上加上jwt令牌的信息,后端拦截器会拦截前端请求,对令牌进行如上的1,2,3,4的校验,正确就放行。关于AOP
AOP面向切面编程,我的理解是,对方法进行编程。视频中举两个例子,一个是用AOP在日志上输出每个操作方法的用时。一个是自定义注解,获取特定操作的各种信息,返回给数据库中。