编写你的第一个“Hello World”控制器

QcrTiMo 发布于 9 天前 13 次阅读


目前我们已经成功启动并看到了Spring Boot应用的初始画面(Spring Boot在之后都称为“应用”),但是这不是我们想要的东西,我们的目的是写一个完美的Java后端应用!

我们现在来创建一个简单的Web控制器(Controller),让它在浏览器访问特定 URL 时返回 "Hello World!"。

什么是控制器 (Controller)?

  • 在 MVC (Model-View-Controller) 架构模式中(Spring MVC 也遵循这个模式):
    • Controller 负责接收和处理来自用户的请求(比如浏览器发起的 HTTP 请求)。
    • 它会根据请求的类型和参数,决定调用哪些业务逻辑 (Service 层,我们稍后会讲到)。
    • 最后,它会准备好要返回给用户的数据 (Model),并选择一个视图 (View) 来展示这些数据。
    • 对于 RESTful API,Controller 通常直接返回数据 (如 JSON 或 XML),而不是一个完整的 HTML 页面。

在你的项目中创建 HelloController 类

  • 在 IntelliJ IDEA 的项目视图中,找到你的主 Java 包 (例如 src/main/java/com/NZI/web)。
  • 右键点击这个包 --> 新建 --> 软件包。
  • 给这个软件包命名Controller。
  • 点击 "OK" 或回车。
  • 右键点击Controller软件包--> 新建 --> Java 类。
  • 给这个类起名HelloController。

现在你就创建了一个空的 HelloController.java 文件。

目前结构是这样:

编写 HelloController 代码

打开 HelloController.java 文件,并修改其内容如下:

package com.NZI.web; // 这是你的包名
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController // 1. 标记这是一个 RESTful Web 服务的控制器
public class HelloController {
    @GetMapping("/hello") // 2. 映射 HTTP GET 请求到 /hello 路径
    public String sayHello() {
        return "Hello World!"; // 3. 返回的字符串将直接作为 HTTP 响应体
    }
}

我们来看这份代码:

  • package com.NZI.web;: 声明这个类所在的包。
  • import org.springframework.web.bind.annotation.GetMapping;: 导入 GetMapping 注解。
  • import org.springframework.web.bind.annotation.RestController;: 导入 RestController 注解。
  • @RestController:
    • 这是一个方便的组合注解,它本身包含了 @Controller 和 @ResponseBody
    • @Controller: 标记这个类是一个 Spring MVC 控制器,可以处理传入的 Web 请求。
    • @ResponseBody: 告诉 Spring MVC,这个控制器中所有方法的返回值都应该直接作为 HTTP 响应的正文内容(Body)返回给客户端,而不是试图解析成一个视图名称(比如 HTML 模板)。这对于创建 RESTful API 非常有用,因为它们通常返回 JSON 或纯文本。
  • public class HelloController { ... }: 定义我们的控制器类。
  • @GetMapping("/hello"):
    • 这是一个请求映射注解,专门用于处理 HTTP GET 请求。
    • "/hello": 指定当用户通过 GET 方法访问你应用的 /hello 路径时 (例如 http://localhost:8080/hello),sayHello() 这个方法就会被调用。
    • 类似的还有 @PostMapping@PutMapping@DeleteMapping@RequestMapping (更通用的映射)。
  • public String sayHello() { ... }:
    • 这是一个普通的 Java 方法。
    • public String: 表示这个方法返回一个字符串。
    • return "Hello World!";: 这个方法返回字符串 "Hello World!"。因为我们使用了 @RestController (或者具体来说是其包含的 @ResponseBody),Spring Boot 会将这个字符串直接作为 HTTP 响应的内容发送回浏览器。

在导入这块,IDEA很方便,你可以不需要自己写import,你只需要在代码中加入类似@RestController这样的注释器,IDEA会自动为你添加import语句。

重启运行

刷新你的IDEA,Spring Boot DevTools 这个开发依赖会自动帮你重启应用。

打开浏览器,输入http://localhost:8081/hello,回车。

不出意外,你能看到Hello World被打印在页面上。

回顾

  • 我们创建了一个 Java 类 HelloController。
  • 使用 @RestController 将其标记为一个能处理 Web 请求并直接返回数据的控制器。
  • 使用 @GetMapping("/hello") 将 sayHello() 方法映射到 /hello 这个 URL 路径的 GET 请求。
  • 当访问 http://localhost:8081/hello 时,sayHello() 方法被执行,其返回的字符串被 Spring Boot 作为响应发送给了浏览器。

接下来的任务

下一篇文档我将通过实战项目教你们了解更多关于 Spring Bean 和依赖注入的概念。

斯哈斯哈斯哈,佳代子啊啊啊啊啊啊ᕕ(◠ڼ◠)ᕗᕕ(◠ڼ◠)ᕗᕕ(◠ڼ◠)ᕗᕕ(◠ڼ◠)ᕗᕕ(◠ڼ◠)ᕗ
最后更新于 2025-05-19