【Spring Boot】控制器Controller方法

Controller

在 Spring Boot 的Web应用中,Controller是处理HTTP请求的入口。

核心职责

  • 接受客户端发送的HTTP请求
  • 调用 Service 层完成业务逻辑
  • 将处理结果封装后返回给客户端

MVC (Model-View-Controller)中的"C"

如何定义Controller

在 Spring Boot 中,使用注解来声明一个类是 Controller。
示例代码

java 复制代码
@RestController
@RequestMapper("/api/members")
public class MemberController{
	// 方法
}

注解说明

@RestController 告诉Spring,这是一个用于RESTful API 的控制器,所有方法的返回值都会自动转为 JSON。

@RequestMapping 定义该控制器的公共请求前缀

Controller 方法

每个 Controller 方法,对应一个具体的HTTP接口。
基本结构

java 复制代码
@HTTP_METHOD_MAPPING("路径")
public 返回类型 方法名(参数){
	// 1. 接收参数
	// 2. 调用 Service
	// 3. 返回结果
}

HTTP_METHOD_MAPPING

这些是 @RequestMapping(method = ...)的简写

路径

路径中可以用 {变量名}表示动态部分

复制代码
@GetMapping("/projects/{projectId}/members")

参数的接收方式

Spring Boot 提供多种注释,自动将 HTTP 请求中的数据绑定到方法参数。

示例

复制代码
@GetMapping("/list/{projectId}")
public Result<List<MemberVO>> list(@PathVariable Long projectId) {
    // 从 URL 路径中提取 projectId
}

@PostMapping("/create")
public Result<MemberVO> create(@RequestBody CreateMemberDTO dto) {
    // 从 JSON 请求体中解析出 dto 对象
}

@GetMapping("/search")
public Result<List<MemberVO>> search(
    @RequestParam String keyword,
    @RequestParam(defaultValue = "1") Integer page
) {
    // 从 ?keyword=xxx&page=2 中获取参数
}

返回值

在 @RestController中,任何返回值都会被自动转为 JSON 。

可以使用统一返回格式 ,如 Result<T>,这样前端收到的总是结构统一的JSON,便于处理。

执行流程

当发送一个HTTP请求时,Spring Boot 内部的请求为:

  1. 前端控制器接收所有请求;
  2. 根据 URL 和 HTTP 方法,查找匹配的 Controller 方法(通过 @GetMapping等注释);
  3. 解析参数;
  4. 调用方法;
  5. 返回值序列化为 JSON,写入 HTTP 响应;
  6. 返回给客户端。
相关推荐
胡写代码3 分钟前
雪花 ID 传到前端就变了个数?我用全局 Long 转 String 一次收口
前端·后端
BBmmo3 分钟前
我的 Java 学习笔记 · 第 11 篇:Condition.await 为什么必须放在 while 里
java
SimonKing5 分钟前
一只离线鼠鼠,干翻了一堆在线格式转换网站
java·后端·程序员
程序员-Benothing6 分钟前
Linux文本排序统计命令:sort、uniq、wc、cut、tr实战
java·开发语言·算法
clz13145217 分钟前
双重检查锁 DCL 终极优化:懒加载 + 线程安全 + 高性能
java
CRMEB7 分钟前
前后端技术栈全面换代!CRMEB 多商户(Java)v3.0更新预告
java·开发语言
武子康7 分钟前
两台 A6000,LingBot 应该先验哪条路径?
人工智能·后端·agent
开发者联盟league8 分钟前
c++11 使用chrono库转换时间点和字符串,计算时间点间隔
java·c++·算法
我最爱吃鱼香茄子12 分钟前
【毕业设计优选】人力资源管理系统|Java|SpringBoot|Vue|前后端分离|带详细文档+部署教学视频
java·vue·毕业设计·springboot
Thneonl13 分钟前
值班第一年:最先要学的不是排障,是叫人
后端·程序员