为了账号安全,请及时绑定邮箱和手机立即绑定

SpringBoot - 控制器和RequestMapping总是返回404

SpringBoot - 控制器和RequestMapping总是返回404

Qyouu 2023-10-13 16:33:06
我正在尝试这里示例的简化版本。该项目是使用 Springboot 扩展附带的初始化程序在 VSCode 中设置的。DemoApplication.javapackage com.sample.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DemoApplication {    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);    }}CalculatorController.javapackage com.sample.demo;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class CalculatorController {    @RequestMapping("/")    public String index() {        return "index";    }}我正在从 VSCode 运行该应用程序并以以下方式访问它:http://localhost:8080/。我不断收到404错误消息。当我将@Controller注释更改为@RestController注释时,它就起作用了。另外,还存在resources\templates\index.html.我缺少什么?
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

Spring MVC 中的 @RestController 注解只不过是 @Controller 和 @ResponseBody 注解的组合。它被添加到 Spring 4.0 中,使 Spring 框架中的 RESTful Web Services 开发变得更加容易。


@Controller 的工作是创建模型对象的 Map 并查找视图,但 @RestController 只是返回对象,并且对象数据直接以 JSON 或 XML 形式写入 HTTP 响应。


@SuppressWarnings({})

@RestController

public class TestController {

    @PostMapping("/test/1")

    public Object Test1(@RequestBody HashMap<String, String> obj) throws ParseException, IOException {

        return null;

    }

阅读更多:https ://javarevisited.blogspot.com/2017/08/difference- Between-restcontroller-and-controller-annotations-spring-mvc-rest.html#ixzz62Jw1WOs3


查看完整回答
反对 回复 2023-10-13
?
智慧大石

TA贡献1946条经验 获得超3个赞

上下文是 Spring MVC 的一个非常高的概述,它是采用 Front Controller 设计模式设计的,其中 Dispatcher servlet 将接收所有请求并调用相应的处理程序,以便调用您的控制器方法,并且您的控制器类使用 @Controller 注释进行注释。返回值并尝试在 MVC 中找到 View,以便您需要配置 ViewResolver 的任何一种实现(如果您需要使用相应的视图位置配置 InternalResourceViewResolver 和 Themeleaf)。

如果您的控制器使用 @RestController 进行注释,则处理程序的返回值将被视为 Http 响应 Dispatcher servlet 将不会查看任何视图(它将认为返回值是 http 响应正文)

您可以使用 @Controller 注释本身实现相同的效果,只需在处理程序方法中添加此注释 @ResponseBody (返回值被视为 http 响应)。


查看完整回答
反对 回复 2023-10-13
?
www说

TA贡献1775条经验 获得超8个赞

@RestController是@Controller和@ResponseBody的组合。因此请求处理方法将对象作为Json或XML返回到HttpResponse中,因此不需要@ResponseBody。


@RestController

public class UserRestController { }


@Controller

@ResponseBody

public class UserController { }

@ResponseBody 是一个 Spring 注释,它绑定一个返回值到 Web 响应主体的方法。它告诉控制器返回的对象自动序列化为 JSON 并传递回 HttpResponse 对象。


查看完整回答
反对 回复 2023-10-13
  • 3 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信