IntelliJ+Springboot+动态网页+静态资源

上一篇讲了使用IntelliJ开发基于Springboot的WebAPI服务。那如果要开发一个完整的MVC架构的网站呢?这里讲一下View部分的开发。
首先,项目结构:

  1. static:存放js, css, images等静态资源。当然也可以存放html,不过这里的html是静态的,无法接受后台数据进行动态显示。
  2. templates:存放动态网页html,这里的html可以接受后台数据进行动态显示。怎么显示,之后会详细讲解。
    在这里插入图片描述
    这里我们以动态网页为例。(静态网页就不用加载下面的package,页面放在static中,其他是一样的)
  • 在pow.xml中加入thymeleaf模块。
<!--thymeleaf 网页模版-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
  • 在controller中直接返回html文件的名称,字符串形式。
@Controller
@RequestMapping("/stage")
public class StageController {
    @RequestMapping(value = "/index", method = {RequestMethod.GET})
    public String Index(HttpServletRequest request) {
        request.setAttribute("title", "照片幻听片演示");
        return "index";
    }
}

其中给页面变量title后台赋值,那么前端index.html可以使用title在显示后台数据了。
注意,这里必须使用@Controller,而不是@RestController,后者只能返回json字符串,不能返回页面。同时也不能像WebAPI中在function前添加@ResponseData,否则就会直接返回"index"字符串而不会去templates文件夹里找index.html了。

  • 页面文件的写法:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>SpringBoot Template Demo</title>
        <link rel="stylesheet" type="text/css" href="/css/index.css" />
        <script src="/js/jquery-2.1.4.min.js"></script>
        <script src="/js/index.js"></script>
    </head>
    <body>
        <div>
            <span class="templateText" th:text="${title}"></span>
            <img id="imgContainer" class="showImg" src="/images/img0.JPG" />
        </div>
    </body>
</html>

这里要注意的点:
a) 必须在html标签里定义th,并在页面控件中使用th:XXX="${xxx}"这样的格式来访问后台数据。
b) 页面中需要访问的静态资源,路径从static之后开始,前面必须加/。
c) 特别需要注意的是: 静态资源路径中的每个字符都是大小写敏感的。比如img0.JPG,如果写成了img0.jpg,在IntelliJ调试时是可以正常显示的,但是一旦使用artifact打包成了JAR,发布到server运行时就显示404了。因为img0.JPG是被包进了JAR压缩包,访问时不是直接走OS的file server,需要Springboot解包,而解包时大小写是敏感的。file server大小写不敏感,所以IntelliJ调试时直接访问的file server路径,是正常显示的。这个特别坑!花了大半天才搞明白…吐

  • 打包成JAR后发布流程和WebAPI是一样的。其中上述的所有static和templates资源都已经被打包进了JAR了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u2mithrandir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值