版本说明
(版本都比较新哈)spring boot的版本为3.4.3,Java21,Maven3,使用Java语言写控制器,关于部署Spring Boot项目,可以参考我的两篇博客:方法一和方法二,本文中不再赘述
前期准备
为了与前面的知识串联起来,我这里使用方法二创建好的项目开始本文中的实验
1.需要把之前的“五子棋.html”变成“wuziqi.html”,避免后续中文解码的麻烦
2.在启动类(OneApplication)的文件夹(org.example)下专门创建一个软件包controller,专门用来放置控制器
控制器的理论介绍
在此引用一下大佬博客总结的话:
在Spring Boot中,控制器(Controller)是处理HTTP请求和返回响应的组件,提供了两种注解来表示此类负责接受和处理 HTTP 请求:@Controller和@RestController。
如果请求的是页面和数据,使用@Controller;如果只是请求数据,则可以使用@RestController。
默认情况下,@RestController注解会将返回的对象数据转换为JSON格式。
1.@Controller
`@Controller`是Spring框架中的一个注解,用于标识一个类作为控制器,该类可以处理HTTP请求并将请求映射到相应的处理方法上,通常与视图解析器结合使用以返回视图页面。
我们现在在软件包controller中创建第1个控制器HelloController
在HelloController中写入以下内容
package org.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("game")
public String home(Model model) {
return "redirect:/wuziqi.html"; // 返回视图名称
}
}
之后点击运行启动类OneApplication
我们访问http://localhost:8080/game就可以访问到静态资源
2.@RestController
使用@Controller可以返回你需要的一个视图名称(通常是HTML页面)
如果你希望直接返回JSON或其他格式的数据而不是一个视图,可以使用@RestController。它简化了创建RESTful Web服务的过程,因为每个方法都隐式地返回一个响应体而不是一个视图名。
我们现在在软件包controller中创建控制器HelloRestController
在控制器HelloRestController中输入以下内容:
package org.example.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloRestController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, Spring Boot!";
}
}
当我们访问http://localhost:8080/hello将会直接返回字符串"
Hello, Spring Boot!"
作为HTTP响应体