如果我从 pom.xml spring-boot-starter-thymeleaf 中删除,那么我的 @GetMapping 无法返回 html 页面。 [在此处输入图像描述](https://i.sstatic.net/NJvOn.png)
我尝试过:
- 添加@ResponseBody - 不起作用(他在网站中返回字符串,而不是 html 页面)
因为浏览器会读取你的响应头“Content-Type”来决定如何显示内容。所以需要指定内容类型为html。
@GetMapping("/")
public void indexPage(HttpServletResponse response) throws IOException {
response.setHeader("Content-Type", "text/html;charset=utf-8"); //specify the content is html
PrintWriter out = response.getWriter();
out.write("<form action='#' method='post'>");
out.write("username:");
out.write("<input type='text' name='username'><br/>");
out.write("password:");
out.write("<input type='password' name='password'><br/>");
out.write("<input type='submit' value='login'>");
out.write("</form>");
}
另一种无需 Thymeleaf 即可响应 HTML 页面的方法
@GetMapping("/home")
public String loadHomePage() {
Resource resource = new ClassPathResource("templates/html/home.html");
try {
InputStream inputStream = resource.getInputStream();
byte[] byteData = FileCopyUtils.copyToByteArray(inputStream);
String content = new String(byteData, StandardCharsets.UTF_8);
LOGGER.info(content);
return content;
} catch (IOException e) {
LOGGER.error("IOException", e);
}
return null;
}
只需使用这个:
@GetMapping("/home")
public String getHome() {
return "redirect:/home.html";
}
注意:home.html 文件应位于 src/main/resources/static/