我正在尝试示例here的简化版本。该项目是通过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方法。@Controller注释调度程序servlet考虑到该返回值,并尝试在MVC中定位View,以便在需要使用相应视图位置配置InternalResourceViewResolver和Themeleaf的情况下,需要配置ViewResolver的任何一种实现。
如果您的控制器带有@RestController注释,则处理程序的返回值将被视为Http响应Dispatcher servlet不会显示任何视图(它将返回值视为http响应主体)
您可以使用@Controller注释本身实现相同的功能,只需在处理程序方法中添加此注释@ResponseBody(返回值视为http响应)。