初學者常問:「HTML 可呼叫 Servlet,登入後顯示歡迎用戶名,用 HTML+Servlet 不就夠了?JSP 存在的意義何在?」
| 維度 | HTML + Servlet | JSP + Servlet (MVC) |
|---|---|---|
| 視圖邏輯 | 寫在 Servlet 的 out.println(" 中 | 寫在 .jsp 檔,混合 HTML 與 ${expr}/<c:if> |
| 維護性 | 前端修改需改 Java 代碼、重編譯、重部署 | 前端獨立維護,僅修改 JSP,無需動 Java |
| 分工協作 | 後端工程師兼任前端,效率低 | 前端工程師專注 JSP/CSS/JS,後端專注 Servlet/Service |
| 可讀性 | 大量字串拼接,難以閱讀 | 接近純 HTML,直觀易懂 |
Model 1 (早期) : JSP 獨大,Java 代碼嵌入 JSP (Scriptlet) -> 混亂難維護
Model 2 (MVC) : Servlet (Controller) + JSP (View) + JavaBean (Model) -> 標準分層
現代框架 : Spring MVC / Spring Boot,View 可換 Thymeleaf, FreeMarker, React 等
JSP 的核心價值在於**將「如何顯示」從「業務邏輯」中剝離**,讓大型專案的前後端能平行開發、獨立演進。對於「登入後顯示用戶名」這類簡單場景,用 request.setAttribute("name", name); request.getRequestDispatcher("/welcome.jsp").forward(...) 即可體驗 MVC 分層優勢。