You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Spring MVC标准高效布局方案:替代Thymeleaf及传统引入方式

嘿,我完全懂你对比ASP.NET MVC那种省心布局后的感受——Spring生态里确实有更优雅且符合标准的布局方案,不用纠结老旧的JSP include或者觉得Thymeleaf太复杂,下面给你梳理几个最优且高效的选项:

1. 优先选择Thymeleaf布局方言(其实没你想的复杂)

这是Spring官方推荐的视图层布局方案,逻辑和ASP.NET MVC的布局机制高度相似,上手成本很低,完全能替代老旧的JSP引入方式。

第一步:定义全局布局模板

创建一个通用的布局文件(比如src/main/resources/templates/layout.html),用layout:fragment标记需要替换的区块,就像ASP.NET MVC里的RenderBody()

<!DOCTYPE html>
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
  <!-- 动态替换页面标题 -->
  <title layout:title-pattern="$LAYOUT_TITLE - $CONTENT_TITLE">我的网站</title>
  <link rel="stylesheet" href="/css/common.css">
</head>
<body>
  <!-- 公共Header -->
  <header class="header">
    <h1>网站头部</h1>
  </header>

  <!-- 页面内容插入区,对应ASP.NET的RenderBody() -->
  <main class="content" layout:fragment="content">
    默认内容(可选)
  </main>

  <!-- 公共Footer -->
  <footer class="footer">
    <p>网站底部 ©2024</p>
  </footer>
</body>
</html>

第二步:在业务页面中引用布局

业务页面只需要专注于自身内容,用layout:decorate指定要继承的布局,并用layout:fragment填充对应区块:

<!DOCTYPE html>
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" 
      layout:decorate="~{layout}"> <!-- 指定继承的布局模板 -->
<head>
  <title>用户列表页</title> <!-- 会替换布局中的标题 -->
</head>
<body>
  <!-- 填充布局中的content区块 -->
  <section layout:fragment="content">
    <h2>用户列表</h2>
    <table>
      <tr><td>用户ID</td><td>用户名</td></tr>
      <!-- 动态渲染数据 -->
      <tr th:each="user : ${users}">
        <td th:text="${user.id}"></td>
        <td th:text="${user.name}"></td>
      </tr>
    </table>
  </section>
</body>
</html>

配置说明

只需要在你的依赖管理文件中添加Thymeleaf布局方言的依赖(Maven示例):

<dependency>
  <groupId>nz.net.ultraq.thymeleaf</groupId>
  <artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>

Spring Boot会自动配置好视图解析器,不需要额外的复杂配置。

2. 若坚持使用JSP:用Apache Tiles替代原生include

如果你暂时不想切换到Thymeleaf,Apache Tiles是Spring MVC官方支持的布局框架,比原生的<%@ include %>更灵活,支持模板继承、区块替换:

  • 定义tiles配置文件tiles.xml,指定布局和页面的对应关系
  • 在JSP中用tiles标签引用布局区块
    不过这个方案的配置比Thymeleaf繁琐一些,更适合已有大量JSP代码的项目。
总结

从符合Spring标准、高效性和未来扩展性来看,Thymeleaf布局方言是最优选择——它的逻辑和你熟悉的ASP.NET MVC布局几乎一致,语法直观,还能支持动态数据渲染、条件布局等高级功能,完全解决了传统JSP引入方式的老旧问题。

内容的提问来源于stack exchange,提问作者Arnold Zahrneinder

火山引擎 最新活动