一、Maven
1.maven概述
Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。
根据提供的插件实现很多功能
maven的作用
管理和构建java项目的工具
依赖管理:可以直接在pom.xml文件中修改描述信息就可以得到相应Jar包
统一项目管理:让不同IDE的格式都一样可以在不同软件上打开
项目构建:可以一键实现很多操作
2.依赖
①依赖配置
https://mvnrepository.com/
②依赖传递
③依赖范围
④生命周期
每个生命周期有不同阶段,但只需要关注5个阶段就可以
同一套生命周期阶段是有顺序的
二、Web入门
1.SpringBoot入门
从SpringBoot开始,贯穿始终
2.HTTP协议
请求数据的格式,返回数据的格式
①请求数据格式:
常见请求头:
请求体是POST请求独有的,会将请求的参数放入请求体中,而Get直接放在请求行,格式是会请求行那写的格式(请求行体现就是网址那地方,请求体要打开F12开发者工具才能看到)
②响应格式
常见响应码:
③协议解析
步骤:监听指定端口,若响应就开启线程执行处理请求,使用IO流读取HTTP请求并发送数据,根据请求行请求头输出前端响应的数据。
3.Tomcat
简介:
如何部署:把文件夹直接放到Tomcatwebapps目录下
三、请求响应
Tomcat会将HTTP协议请求中的信息封装到HttpServleRequest这个对象中去
TomcatHttp会用ServleReques对象来响应数据
我们需要关注的是Countroller中的程序,获取请求参数,设置响应数据
1.请求
①简单参数
要保证参数名和形参变量名相同,如果不同:
注意使用这个注解后,,required默认为true,就必须传这个参数,不传就报错
②实体参数
当传递的简单参数过多,就得使用实体参数,实体中成员变量名必须一致。
复杂实体,传递中包含实体,就得按照层次一一对应
③数组集合参数
传递的一个值有多个就直接请求多个用&连接。
如果使用数组接收,数组名只要与变量名一致就行。
如果使用集合接受,名字一致还需有@RequestParam注解
④日期参数
⑤JSON参数
JSON需要使用POST的请求方式,把数据放进请求体中,并且设置为JSON,JSON中所有的KEY要用双引号
需要加注解,RequestBody会将JSON中的数据封装到实体对象中去
⑥路径参数
请求方式:
这里的id是路径参数,需要注解PathVariable就会将路径参数绑定给方法形参id
多个路径参数请求与接收方式:
2.响应
若返回的是一个对象是一个集合,会将其转为JSON格式再转出去,并放在响应体中
由于响应数据各式各样,所以为了统一使用Result实体对象
这个类包含有参无参构造器,以及静态方法sucess和defeat,这两个方法直接返回的是result对象,便于直接构造result对象。
剩余两个类似
案例:
用户请求
四、分层解耦
1.三层架构
controller层接收请求响应数据,调用了service对进行逻辑处理,获取数据时调用了dao层查询数据,再返回给service,service处理后返回给controller数据,contoller再响应数据。
2.分层解耦
高内聚:例如与员工相关的就只在与员工处理中执行
低耦合:就是模块间尽量少的调用
耦合的意思是,我service更改了一个,在controller中也要进行相应修改
解耦合:将对象交给容器,程序需要调用的时候就从容器中去寻找
3.IOC&DI入门
对于第一步,需要被调用的类交给容器,就只需要在service和dao类前加@Component注解成为了容器中的bean,对于要调用类的地方要加上@Autowired注解,程序在运行时会提供该类型的bean对象,并赋值给该变量
要切换对象的时候就将被切换的对象上的注解注释掉,再对要切换的对象加上注释就行。
4.IOC详解
Component一般不使用除非时不属于这三个层
对于controller层不需要注释,因为原本的RestController就包含了Controller注释和ResponseBody
Bean组件扫描
SpringBoot启动类中的注解就包含了组件扫描注解,但是只扫描所在包和子包
5.DI详解
如果有多同类型的类都注解了component,存在多个同类型的bean就会出现错误
我觉得primary好,不用修改controller程序