SpringBoot 如何 返回页面

2024-01-07 17:44:42

背景

@RestController = @ResponseBody + @Controller
@Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

@Mapping + @ResponseBody 也会出现同样的问题。

解决办法

①去除@ResponseBody 或 将含有Rest的注解换成对应的原始注解;
②不通过String返回,通过ModelAndView对象返回,上述例子可将return语句换成return new ModelAndView("index")

在这里插入图片描述

前提

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
你好!初学者,我是SpringBoot的简单启动页面!
</body>
</html>

在这里插入图片描述

@Controller
public class HelloController {
    @RequestMapping("/map1")
    public String index() {
        return "index.html";
    }

    @RequestMapping("/map2")
    public String map2() {
        return "index2.html";
    }
}

在这里插入图片描述

不使用 模板引擎

访问的页面放在resources/static/,就可直接访问这个页面

http://localhost:8080/index.html  成功返回

http://localhost:8080/map1        成功返回

访问的页面放在resources/templates/,禁止访问这个页面

http://localhost:8080/index2.html  404返回

http://localhost:8080/map1         404返回

[Ref] SpringBoot如何返回页面

在这里插入图片描述

使用 模板引擎

使用 springmvc 配置

如果使用spring-boot-starter-parent,就无需引入依赖

spring:
  mvc:
    view:
      suffix: .html
    static-path-pattern: /**
  web:
    resources:
      static-locations: classpath:/templates/,classpath:/static/

在这里插入图片描述

http://localhost:8080/index.html    成功返回
http://localhost:8080/index.htm2    成功返回

http://localhost:8080/map1    报404
http://localhost:8080/map2    报404
调用接口需要 redirect
@Controller
public class HelloController {
    @RequestMapping("/map1")
    public String index() {
        return "redirect:index.html";
    }

    @RequestMapping("/map2")
    public String map2() {
        return "redirect:index2.html";
    }
}
http://localhost:8080/index.html    成功返回
http://localhost:8080/index.htm2    成功返回

http://localhost:8080/map1  成功返回
http://localhost:8080/map2  成功返回

使用Thymeleaf模板引擎

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>2.1.6.RELEASE</version>
</dependency>
http://localhost:8080/index.html   成功返回
http://localhost:8080/index2.html  404返回
spring:
  thymeleaf:
    prefix: classpath:/static/
    suffix: .html
    cache: false #关闭缓存
但是缺点是智能配置一个,配置谁谁好用

配置 prefix: classpath:/static/
http://localhost:8080/map1  成功返回
http://localhost:8080/map2  404返回

配置 prefix: classpath:/templates/
http://localhost:8080/map1  404返回
http://localhost:8080/map2  成功返回

返回效果演示

成功返回

在这里插入图片描述

404返回

在这里插入图片描述

参考

SpringBoot如何返回页面

文章来源:https://blog.csdn.net/weixin_37646636/article/details/135423931
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。