Java SpringBoot-控制器和请求映射始终返回404
我正在尝试该示例的简化版本。该项目是在VSCode中使用Springboot扩展附带的初始值设定项设置的Java SpringBoot-控制器和请求映射始终返回404,java,spring,rest,maven,spring-boot,Java,Spring,Rest,Maven,Spring Boot,我正在尝试该示例的简化版本。该项目是在VSCode中使用Springboot扩展附带的初始值设定项设置的 DemoApplication.java package com.sample.demo; 导入org.springframework.boot.SpringApplication; 导入org.springframework.boot.autoconfigure.springboot应用程序; @SpringBoot应用程序 公共类演示应用程序{ 公共静态void main(字符串[]ar
DemoApplication.java
package com.sample.demo;
导入org.springframework.boot.SpringApplication;
导入org.springframework.boot.autoconfigure.springboot应用程序;
@SpringBoot应用程序
公共类演示应用程序{
公共静态void main(字符串[]args){
run(DemoApplication.class,args);
}
}
CalculatorController.java
package com.sample.demo;
导入org.springframework.stereotype.Controller;
导入org.springframework.web.bind.annotation.RequestMapping;
@控制器
公共类计算器控制器{
@请求映射(“/”)
公共字符串索引(){
返回“索引”;
}
}
我正在从VSCode运行应用程序,并以:http://localhost:8080/
。我一直收到一个404
错误。当我将@Controller
注释更改为@RestController
注释时,它会工作。此外,还有resources\templates\index.html
我遗漏了什么?上下文是对spring的高度概述MVC是使用前端控制器设计模式设计的,其中Dispatcher servlet将接收所有请求并调用相应的处理程序,以便调用您的控制器方法,而您的控制器类则用 @Controller annoation dispatcher servlet考虑了该返回值,并尝试在MVC中定位视图,以便您需要配置ViewResolver的任何一种实现。在您的情况下,您需要配置InternalResourceViewResolver和具有相应视图位置的Themelaf 如果您的控制器带有@RestController注释,则处理程序的返回值将被视为Http响应分派器,servlet不会查看任何视图(它将返回值视为Http响应体)
您可以通过@Controller注释本身实现同样的效果,只需在处理程序方法中添加此注释@ResponseBody(返回值被视为http响应)。Spring MVC中的@RestController注释只是@Controller和@ResponseBody注释的组合。它被添加到Spring4.0中,以使在SpringFramework中开发RESTfulWeb服务更加容易 @Controller的工作是创建模型对象的映射并查找视图,但@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;
}
@SuppressWarnings({})
@RestController
公共类测试控制器{
@后映射(“/test/1”)
公共对象Test1(@RequestBody HashMap obj)抛出ParseException,IOException{
返回null;
}
阅读更多信息:@RestController是@Controller和@ResponseBody的组合。因此请求处理方法将对象作为Json或XML返回到HttpResponse中,因此不需要@ResponseBody
@RestController
public class UserRestController { }
@Controller
@ResponseBody
public class UserController { }
@ResponseBody是一个Spring注释,它将返回值的方法绑定到web响应体。它告诉控制器返回的对象被自动序列化为JSON并传递回HttpResponse对象。您的pom.xml是什么?项目的布局是什么?您如何简化示例?
pom.xm中没有任何更改l
;它与VSCode设置的内容相同。项目的布局是在VSCode中初始化设置的。简化方法是只为/
编写一个映射。当您使用mvn spring boot:run
运行应用程序时会发生什么情况。请问,您可以发布pom.xml并发布项目的布局吗?说您将其设置为uVSCode中的p没有告诉我们它是什么。好的。pom与示例中的pom不同。您缺少依赖项。包含thymeleaf
后,它现在可以工作了!请添加您的注释作为答案,以便我可以接受它。