首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

HTML 中嵌入 Java 代碼片段?JSP/模板引擎/SSI 區別與現代最佳實踐

     編輯:程式設計綜合問答

現象澄清

HTML 文件 (`.html`) **無法直接執行 Java 代碼**。瀏覽器只解析 HTML/CSS/JS。若在 `.html` 中看到類似 `<% ... %>` 或 `${...}`,通常是:

  1. JSP (JavaServer Pages):副檔名 `.jsp`,由 Servlet 容器 (Tomcat/Jetty) 編譯為 Servlet 執行。
  2. 模板引擎輸出:Thymeleaf/FreeMarker/Velocity 在服務端渲染生成純 HTML 後再發送給瀏覽器。
  3. SSI (Server Side Includes):老舊技術,``,需服務器開啟支援。
  4. 前端框架模板:Vue/React/Angular 模板語法 (`{{ }}`, `v-if`),經構建工具編譯為 JS 渲染函數。

技術對比

技術副檔名執行端語法示例現代推薦度
JSP.jspServer (Servlet)`<% out.print(user.getName()); %>`⭐ (維護模式,不建議新專案)
Thymeleaf.htmlServer (Spring MVC)``⭐⭐⭐⭐⭐ (Spring Boot 官方推薦)
FreeMarker.ftlServer`${user.name}`⭐⭐⭐ (成熟、功能強)
Velocity.vmServer`$user.name`⭐⭐ (Apache 退休,維護模式)
Vue/React (SSR).vue/.jsxServer + Client`{{ user.name }}`⭐⭐⭐⭐⭐ (現代全棧首選)
SSI.shtml/.htmlServer (Nginx/Apache)``⭐ (極簡片段複用)

現代最佳實踐:Thymeleaf + Spring Boot





用戶頁面

    

用戶名

管理員面板
商品 價格

控制器:


@GetMapping("/user")
public String userPage(Model model) {
    model.addAttribute("user", userService.getCurrentUser());
    model.addAttribute("items", itemService.findAll());
    return "user"; // 解析為 templates/user.html
}

為何不建議 JSP?

  • 混合 Java 代碼與 HTML,違反關注點分離,難以維護。
  • 無法在瀏覽器直接預覽 (需啟動容器)。
  • Spring Boot 2.0+ 默認不再包含 JSP 支援,需額外配置。
  • Thymeleaf 模板**原生是合法 HTML**,設計師可直接在瀏覽器預覽、編輯。

靜態 HTML 片段複用 (無後端)

若純前端專案需複用導航欄/頁腳:

  1. 構建時注入:Webpack/Vite `html-loader` + `html-webpack-plugin` 組合 partials。
  2. 運行時 JS 載入:`fetch('nav.html').then(r=>r.text()).then(html=>document.getElementById('nav').innerHTML=html)`。
  3. Web Components:`` 自定義元素封裝 Shadow DOM。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved