java - SpringBoot - Controller 和 RequestMapping 总是返回 404
问题描述
我在这里尝试示例的简化版本。该项目是在 VSCode 中使用 Springboot 扩展附带的初始化程序设置的。
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 注释调度程序 servlet 考虑该返回值并尝试在您的 MVC 中找到 View ,以便您需要配置 ViewResolver 的任何一种实现,在您需要配置具有相应视图位置的 InternalResourceViewResolver 和 Themeleaf 的情况下。
如果您的控制器使用 @RestController 注释,则处理程序的返回值将被视为 Http 响应 Dispatcher servlet 不会查看任何视图(它会将返回值视为 http 响应正文)
您可以使用 @Controller 注释本身来实现相同的目的,只需在处理程序方法中添加此注释 @ResponseBody(返回值被视为 http 响应)。
推荐阅读
- excel - Excel VBA ListBox (userform) - fmMultiSelectSingle 的多选问题
- javascript - 在对象中创建对象
- c++ - 我可以在源代码之外使用 Clang 库吗?
- jquery - 与 document.forms["id"]["name"].value 等效的 JQuery 是什么?
- java - CardView 和带有 TextView 子项的 LinearLayout 根本不显示
- python - 在 Python 中导入多个包宏
- python - Python/pandas:如何根据字符串条件递增每一行
- python - 最佳实践将数据框转换为字典?
- python - 努力创建数据框,ParserError:错误标记数据。C 错误:预计第 15 行中有 12 个字段,看到 16
- javascript - 使用 GatsbyJS 插件 gatsby-plugin-preload-fonts 的 Netlify 混合内容错误