HTTP与Tmocat服务器与SpringMVC

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终止程序

http://localhost:9999

我们端口为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中的核心组件




相关推荐
MateCloud微服务27 分钟前
懂你所需,利爪随行:MateClaw 正式开源,补齐 Java 生态的 AI Agent 拼图
spring boot·aigc·javaagent·aiagent·openclaw·mateclaw·javaclaw
emmjng36928 分钟前
使用飞算JavaAI实现在线图书借阅平台
java
CoderYanger31 分钟前
14届蓝桥杯省赛Java A 组Q1~Q3
java·开发语言·线性代数·算法·职场和发展·蓝桥杯
钮钴禄·爱因斯晨32 分钟前
他到底喜欢我吗?赛博塔罗Java+前端实现,一键解答!
java·开发语言·前端·javascript·css·html
词元Max34 分钟前
Java 转 AI Agent 开发学习路线(2026年3月最新版)
java·人工智能·学习
亚历克斯神34 分钟前
Java 云原生开发最佳实践:构建现代化应用
java·spring·微服务
布说在见34 分钟前
企业级 Java 登录注册系统构建指南(附核心代码与配置)
java·开发语言
是宇写的啊34 分钟前
SpringBoot配置文件
java·spring boot·spring
草莓熊Lotso35 分钟前
一文读懂 Java 主流编译器:特性、场景与选择指南
java·开发语言·经验分享
Y001112361 小时前
Maven
java·maven