如何在弹簧启动中从宁静的控制器返回html页面?

2022-09-01 00:44:25

我想从控制器返回一个简单的html页面,但我只得到文件的名称,而不是它的内容。为什么?

这是我的控制器代码:

@RestController
public class HomeController {

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

这是我的项目结构:

[enter image description here


答案 1

当像这样使用时:@RestController

@RestController
public class HomeController {

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

这与您在普通控制器中执行的操作相同:

@Controller
public class HomeController {

    @RequestMapping("/")
    @ResponseBody
    public String welcome() {
        return "login";
    }
}

将返回值用作 String 对象。您返回的任何对象都将作为 JSON 在 HTTP 正文中附加。@ResponseBodyreturn "login";payload

这就是为什么你只是在回应中得到。login


答案 2

请按照以下步骤操作:

  1. 必须将 html 文件放在资源/模板中/

  2. 将 替换为@RestController@Controller

  3. 如果正在使用任何视图解析程序,请将其删除。

  4. 控制器方法应返回不带扩展名的视图文件名,如return "index"

  5. 包括以下依赖项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>`