一.项目目录
SpringBoot项目创建之后会生成很多目录
删除不需要的这四个文件/目录
目录
二.Spring MVC 和 MVC
Spring MVC(Spring Web MVC)
Spring Web MVC 是⼀个 Web 框架
MVC : Model View Controller
它是一种思想 , 它把一个项目分成了三个部分.
View视图层 | 界面显示 , 人机交互 |
Controller 控制器 | 选择处理模型 ,选择视图 |
Model模型层 | 处理业务逻辑 , 处理数据 . |
总结:
MVC是一种思想, 而Spring实现了这种思想, 称为Spring MVC.
请求会直接到Controller.
SpringBoot是创建SpringMVC项目的一种方式 . 还有其他方式.
现状:
由于现在的项目都实现了前后端分离,后端开发人员不必编写前端页面,所以也就没有了view视图层.
因此,view又有了新的解释,之前返回的是试图,现在返回的是视图所需要的数据.
三.Spring MVC
学习Spring MVC,主要学习这几个方面 .
1.建立连接 (客户端和服务器)
2.请求
3.响应
@RequestMapping 路由映射
1.可以修饰方法
方法名和注解value没有关系,建议一致.
浏览器127.0.0.1:8080/sayhi访问
2.也可以修饰类
访问路径:类的路径+方法路径
浏览器 127.0.0.1:8080/hello/sayhi 访问
开发中建议加上类路径 : 避免重复/方便查找代码
注意:
- 注解里的斜杠可以写多层(第一个斜杠可以省略,但是不建议 )
- 注解不写属性名,默认是value
- 默认情况下 get 和 post 请求都是支持的 ; 也可以用method属性限制请求方式
参数的传递
1.传递单个参数
发送请求:
要求参数的名字一致
底层逻辑:从请求的参数中获取参数名为name的值,并给name赋值
2.传递多个参数
发送请求:
3.传递对象
开发中,接口的参数通常定义为对象
4.后端参数重命名
如果进行了重命名,必须使用重命名之后的名字name的传递传参 .
- 使用了重命名注解之后,就是一个必传的参数,否则会报错. 但是也可以设置required为false来设置该参数为非必传.
5.传递数组
传递数组有两种方式.
- 用同一个参数名
当请求中同一个参数有多个时,浏览器就会帮我们把这个参数封装成一个数组 .
- 使用逗号,分割传递
6.传递集合
需要添加注解我为非必传
7.传递JSON
JavaScript Object Notation (JS对象说明) , 是一种轻量级的数据交互格式 , 本质是一个对象字符串.
@RequestBody
添加注解@RequestBody将请求中的JSON转化为Person对象
(JSON数据在body中添加)
通过Fiddler抓包,查看发送的请求的确是jason数据.
8.获取URL中的参数
@PathVariable
添加@PathVariable注解
9.上传文件
@RequestPart
注意:
- 传参时参数的名字需要一致.
- 如果使用基本数据类型,必须要传值,否则会报错.
- 如果使用包装类,如果未传参,会使用默认值null
- 5开头的错误通常是服务端错误 --- 查看日志
4开头的错误通常是客户端错误
- 状态码
http状态码 | 不是后端定义的. | 2xx:成功 3xx:重定向 4xx:客户端错误 5xx服务端错误 |
业务状态吗 | http响应成功的情况下,业务的响应分为不同的状态. |
四.Cookie 和 Session
两者是会话机制.
cookie是客户端机制 | 问题:可以伪造 |
session是服务端机制 | 问题:分布式(部署在多个机器上) |
4.1获取cookie
1.servlet方式
参数是请求里的内置对象.每个请求都有内置对象,如果需要就可以写,不需要就可以不写 .
2.注解方式 @CookieValue
4.2获取session
1.servlet原始方式
2.注解@SessionAttribute
该注解为必传参数,如果此时没有session,就会直接报错.
3.HttpSession 作为参数
红框部分等同于HttpSession session = request.getSession( false ) ;
4.3.获取header
1.servlet原始
2.注解 @RequestHeader