首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JavaWeb从入门到进阶(HTTP协议的请求与响应)

JavaWeb从入门到进阶(HTTP协议的请求与响应)

作者头像
北极的代码
发布2026-04-22 19:23:31
发布2026-04-22 19:23:31
980
举报

前言:我们前面学习了HTTP协议,这里我们接着学习HTTP协议的请求与响应。首先我们要明确最本质也是初学者最容易搞不懂的点,我们学的HTTP协议到底是什么,跟我们java程序员有什么关系,数据请求到哪里等等知识。

这里我们首先解释一下HTTP与java程序员的关系,HTTP是浏览器访问者(或者是APP使用者)发送的数据,通过HTTP的传输数据,把数据发送到Java后端,为什么要发送到Java后端呢,因为java后端主要是我们实现业务逻辑的地方,我们通过接收这些数据,我们就能进行相关的业务逻辑,我们为什么要封装这些数据呢,因为这些数据需要被处理,存储(保存到数据库),转发。

简单的理解:

请求的工具:postman/APipost

请求

(HttpServletRequest):获取请求数据响应

找到对应的安装包下载即可

请求的参数:
简单参数:

注意:如果方法形参名称与请求参数名称不匹配,可以使用@RequestParam完成映射。@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。如果该参数是可选的,可以将required属性设置为false。

请求注解:HTTP请求相关的@注解是Spring框架的核心魔法,它们让HTTP请求的处理变得声明式、简洁、强大 1.声明式编程:告诉Spring"做什么",而不是"怎么做" 2.简化代码:自动完成繁琐的HTTP处理 3.类型安全:编译时检查,减少运行时错误 4.灵活配置:丰富的属性满足各种需求 5.统一管理:集中管理路由和参数处理 核心价值:让程序员专注于业务逻辑,而不是HTTP协议的细节处理!

请求映射注解:告诉Spring:哪个URL调用哪个方法

参数绑定注解:告诉Spring:请求数据放在哪

请求体注解:

实体参数:

简单实体对象:请求参数名与形参对象属性名相同,定义POjO接收即可

复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数。

需要手动创建JavaBean

数组集合参数

数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

集合:请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系

日期参数

日期参数:使用@DateTimeFormat注解完成日期参数格式转换

JSON 参数

JSON参数:JSON数据键名与形参对象属性名相同,定义POJ0类型形参即可接收参数,需要使用@RequestBody标识

路径参数

路径参数:通过请求URL直接传递参数,使用{...)来标识该路径参数,需要使用@PathVariable获取路径参数

顾客(客户端) → 服务员(Controller) → 后厨(Service) → 菜品(响应)

1. 顾客点餐(HTTP请求) 2. 服务员接收订单(Controller接收请求) 3. 服务员安排后厨做菜(Controller调用Service) 4. 服务员上菜(Controller返回响应)

顾客(客户端) → 服务员(Controller) → 后厨(Service) → 菜品(响应)

1. 顾客点餐(HTTP请求) 2. 服务员接收订单(Controller接收请求) 3. 服务员安排后厨做菜(Controller调用Service) 4. 服务员上菜(Controller返回响应)

总结:Controller 的作用

Controller 是 Spring MVC 的交通警察

  1. 路由分发:把不同的HTTP请求分发给不同的处理方法
  2. 数据转换:把HTTP请求数据转换成Java对象
  3. 业务协调:组织Service层完成业务逻辑
  4. 响应封装:把处理结果转换成HTTP响应
  5. 异常处理:统一处理请求过程中的异常

没有 Controller:HTTP请求直接进入业务代码,代码混乱、难以维护、重复劳动。

有 Controller:清晰的层次结构、易于维护、代码复用、团队协作友好。

简单来说:Controller 就是连接外部世界(HTTP)和你内部业务逻辑的桥梁

响应数据

@ResponseBody 类型:方法注解、类注解 位置:Controller方法上/类上 作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为jSON格式响应说明:@RestController=@Controller +@ResponseBody;

分层解耦

内聚:软件中各个功能模块内部的功能联系。 耦合:衡量软件中各个层/模块之间的依赖、关联的程度。 软件设计原则:高内聚低耦合。

控制反转:InversionOfControl,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。 依赖注入:Dependency Injection,简称Dl。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。 Bean对象:IOC容器中创建、管理的对象,称之为bean。

注意事项 声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。 使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller.

Bean组件扫描 前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。 @Componentscan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描的范围是启动类所在包及其子包。

依赖注入的注解

@Autowired:默认按照类型自动装配。 如果同类型的bean存在多个: @Primary @Autowired +@Qualifier("bean的名称") @Resource(name="bean的名称")

@Resource 与 @Autowired区别 @Autowired 是spring框架提供的注解,而@Resource是JDK提供的注解。 @Autowired 默认是按照类型注入,而@Resource默认是按照名称注入。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 请求
    • 请求的参数:
      • 简单参数:
      • 实体参数:
      • 数组集合参数
      • 日期参数
      • JSON 参数
      • 路径参数
  • 总结:Controller 的作用
  • 响应数据
  • 分层解耦
  • 依赖注入的注解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档