猿问

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

我正在尝试这里示例的简化版本。该项目是使用 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.


我缺少什么?


Qyouu
浏览 93回答 3
3回答

蝴蝶不菲

Spring MVC 中的 @RestController 注解只不过是 @Controller 和 @ResponseBody 注解的组合。它被添加到 Spring 4.0 中,使 Spring 框架中的 RESTful Web Services 开发变得更加容易。@Controller 的工作是创建模型对象的 Map 并查找视图,但 @RestController 只是返回对象,并且对象数据直接以 JSON 或 XML 形式写入 HTTP 响应。@SuppressWarnings({})@RestControllerpublic class TestController {&nbsp; &nbsp; @PostMapping("/test/1")&nbsp; &nbsp; public Object Test1(@RequestBody HashMap<String, String> obj) throws ParseException, IOException {&nbsp; &nbsp; &nbsp; &nbsp; return null;&nbsp; &nbsp; }阅读更多:https ://javarevisited.blogspot.com/2017/08/difference- Between-restcontroller-and-controller-annotations-spring-mvc-rest.html#ixzz62Jw1WOs3

智慧大石

上下文是 Spring MVC 的一个非常高的概述,它是采用 Front Controller 设计模式设计的,其中 Dispatcher servlet 将接收所有请求并调用相应的处理程序,以便调用您的控制器方法,并且您的控制器类使用 @Controller 注释进行注释。返回值并尝试在 MVC 中找到 View,以便您需要配置 ViewResolver 的任何一种实现(如果您需要使用相应的视图位置配置 InternalResourceViewResolver 和 Themeleaf)。如果您的控制器使用 @RestController 进行注释,则处理程序的返回值将被视为 Http 响应 Dispatcher servlet 将不会查看任何视图(它将认为返回值是 http 响应正文)您可以使用 @Controller 注释本身实现相同的效果,只需在处理程序方法中添加此注释 @ResponseBody (返回值被视为 http 响应)。

www说

@RestController是@Controller和@ResponseBody的组合。因此请求处理方法将对象作为Json或XML返回到HttpResponse中,因此不需要@ResponseBody。@RestControllerpublic class UserRestController { }@Controller@ResponseBodypublic class UserController { }@ResponseBody 是一个 Spring 注释,它绑定一个返回值到 Web 响应主体的方法。它告诉控制器返回的对象自动序列化为 JSON 并传递回 HttpResponse 对象。
随时随地看视频慕课网APP

相关分类

Java
我要回答