URL(统一资源定位符):
简述http协议?
HTTP(HyperText Transfer Protocol)超文本传输协议,用于浏览器和服务器之间请求应答通信协议
浏览器发送给服务器的数据会被封装成请求报文:
请求报文包含:
请求行:请求方式(method) 请求路径
(requestUrl) http/1.1
请求头: Content-type:application/json
空行:分割请求头和请求体
请求体:post携带数据会携带在请求体中
服务器响应给浏览器数据会被封装成响应报文:
响应报文包含:
响应行:响应状态码 状态码描述 http/1.1
响应头:Content-type:application/json text/html
响应体:服务器响应给浏览器数据
{
data:[],
status:200,
message:'success',
timestamp:13位时间戳
}
简述get请求和post请求区别?
1.get请求携带数据拼接在url地址栏上
2.post请求携带数据携带在请求体中
3.get请求携带数据大小有长度限制 (2048-8192字符)
4.post请求携带数据大小理论上没有长度限制 5.get请求可以被收藏为书签,资源也可以被浏览器缓存
6.post请求不可以被收藏为书签,资源不可以被浏览器缓存

状态码
*200 OK 客户端请求成功,即处理成功,这是我们最想看到的状态码
302 Found指示所请求的资源已移动到由 Location 响应头给定的 URL,浏览器会自动重新访问到这个页面
304 Not Modified告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
*(客户端未授权)403 Forbidden服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
*404 Not Found请求资源不存在,一般是URL输入有误,或者网站资源被删除了
405 Method Not Allowed请求方式有误,比如应该用GET请求方式的资源,用了POST
428 PreconditionRequired服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429 Too Many Requests指示用户在给定时间内发送了太多请求("限速"),配合 Retry-After(多长时间后可以请求)响应头一起使用
431 Request Header Fields Too Large请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
*(服务器内部错误)500 Internal Server Error服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503 Service Unavailable 服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好状态码
200 403(认证失败)
404(资源错误)
500 (服务器内部错误)
Tomcat服务器是web的服务器

注意:服务器只是一台设备,必须安装服务器软件才能提供相应的服务。
使用java开发web项目必需得有web容器---Tomcat


下载Tomcat
Tomcat官网
选择Tomcat10 64位的解压到一个可以找到的文件夹中即可




启动:打开bin目录中的startup.bat启动Tomcat
关闭Tomcat使用ctrl+c或者打开shutdown.bat文件进行关闭

在conf下的server.xml中修改端口号,我们修改为9999
然后启动startup.bat文件,看到有乱码

解决办法:

乱码已解决,启动Tomcat中的startup.bat文件

ctrl+c终止程序

我们端口为9999

在pom.xml的文件中有一些起步依赖,是spring-boot打头是springboot特有的起步依赖




mybatis不属于spring旗下的已经迁移到Github
所以前面会有mybatis
内嵌Tomcat
web项目内嵌了Tomcat,在依赖中能够找到,从右侧的m展开可以看到
问题:为什么我们之前书写的SpringBoot入门案例,并没有部署到Tomcat的webapps目录下,也可以运行呢?原因是在SpringBoot项目中,引入的web运行环境中,其内部已经集成了内置的Tomcat服务器。

在pst项目中的配置文件中进行修改

在pts下新建一个web包,在web下面新建一个controller包,然后再新建一个HelloController类

@RestController注解:只能添加到类上,由Controller和ResponseBody注解组成
Controller:
在程序启动时会直接将HelloController交给springboot容器管理将对象的控制权交由容器管理(IOC思想)
这个hello方法是由mvc中对象调用的,我们自己没调用
我们现在可以访问这个地址了
这段代码没有指定请求method,所以get和post请求都可以访问
下图是get请求,如果想看post请求和其他请求在apifox中调试即可

这里我们就实现了开发SpringBoot-Web入门程序,实现了资源访问的功能
SpringMVC框架对请求的处理

指定了get方法只能接收get请求其他请求不会生效

简化上面的GET请求写法

GetMapping只能存放get请求,我们可以点开GetMapping进行查看并验证

在HelloController中写
1.?拼参


如果是多个参数就使用&在地址栏进行拼接
注解中的name是前端路径中的参数名称 会传给string name

2.请求路径映射 路径拼参
占位符:/ {},先给name占好位置
路径参数的映射需要使用@PathVariabale注解实现



3.请求体传参(用于隐私信息)

拿到User对象,访问User类中的属性

选择请求体传入参数,使用JSON格式

简单参数(常见类型)

请求体传参JSON格式

一个对象嵌套另一个Address类成员对象
新增Address类

要在User对象中使用address属性,就要new一个


集合类型
创建user对象

改正一个错误
ArrayList改成List

原始请求对象
Tomcat接收到HTTP请求时,会把请求的相关信息封装到HttpServletRequest request对象中

拿到HttpServletRequest对象获取以下信息

回车换行符\r \n

我们也可以不在request传入原始请求对象HttpServletRequest request,在HelloController类下面直接注入,最终在浏览器展示的效果是一样的

IOC思想:mvc已经将HttpServletRequest对象交给容器管理,如果想拿到对象,就使用自动注入这样的注解就能从IOC容器中拿到
平时用对象就得new一个太麻烦
DI:依赖注入 有address就有user,有子就有父





数组
前端传递多个参数


日期类型参数


有400的错误,我们使用日期相关的注解


还可以展示日期+时间


JSON类型参数:
下载Apifox工具
调试body类型的接口
创建空白项目
项目名称:智慧养殖溯源管理系统
接口选择HTTP


返回视图
控制器方法返回视图名称,SpringMVC将其解析为具体的视图模板,并进行渲染后返回给客户端
通过视图控制器将html页面渲染到浏览器页面
1.在resource下面新建一个static静态资源包
2.再建一个html页面

@Controller:类注解
位置:SpringMVC控制器类定义上方
作用:用于标识一个类为控制(Controller),负责接收和处理HTTP请求,并返回相应的响应。控制器类通常包含多个处理HTTP请求的方法,这些方法被称为处理器方法(HandlerMethod),用于处理不同的URL请求。
在controller下新建一个视图类ViewController

通过网址在浏览器页面打开

写一个getList方法,通过role和user调用这个相同的方法,本质上mvc会报错,不允许这样使用同一个方法名,所以我们要用到注解



MVC模式


底层原理

SpringMVC中的核心组件




