gpt4 book ai didi

java - SpringBoot - Controller 和RequestMapping总是返回404

转载 作者:行者123 更新时间:2023-12-01 23:16:05 25 4
gpt4 key购买 nike

我正在尝试示例的简化版本 here 。该项目是使用 Springboot 扩展附带的初始化程序在 VSCode 中设置的。

DemoApplication.java

package com.sample.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}

}

CalculatorController.java

package com.sample.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class CalculatorController {

@RequestMapping("/")
public String index() {
return "index";
}
}

我正在从 VSCode 运行应用程序并通过以下方式访问它:http://localhost:8080/。我不断收到 404 错误。当我将 @Controller 注释更改为 @RestController 注释时,它起作用了。此外,还存在 resources\templates\index.html

我错过了什么?

最佳答案

上下文是 Spring MVC 的一个非常高的概述,它是使用 Front Controller 设计模式设计的,其中 Dispatcher servlet 将接收所有请求并调用相应的处理程序,以便调用您的 Controller 方法,并且您的 Controller 类注释为@Controller注释调度程序servlet考虑了该返回值并尝试在MVC中定位View,因此您需要配置ViewResolver的任何一种实现,在您需要配置InternalResourceViewResolver和Themeleaf以及相应 View 位置的情况下。

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

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

关于java - SpringBoot - Controller 和RequestMapping总是返回404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58352031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com