許多初學者盲目追捧 Struts2、Spring、Hibernate「SSH 三大框架」,以為會用框架就等於精通 J2EE。面試時問「為什麼要用這些框架?本質是什麼?」鮮少有人答得上來。本文以「登入功能」為例,回顧 Web 開發演進歷程,揭示框架誕生的真正動力:解決具體問題。
<% String name = request.getParameter("name");
UserHandler uh = new UserHandler();
if (uh.authenticate(name, pwd)) { %>
<p>登入成功</p>
<% } else { %>
<p>登入失敗</p>
<% } %>
弊端:程式碼與 HTML 混雜、可讀性差、難以維護、邏輯重用難、事務/日誌無統一支援。
// LoginServlet.doPost()
String name = req.getParameter("name");
UserHandler uh = new UserHandler();
String msg = uh.authenticate(name, pwd) ? "成功" : "失敗";
req.setAttribute("msg", msg);
req.getRequestDispatcher("/result.jsp").forward(req, resp);
web.xml 需為每個 Servlet 配置 URL 映射。代碼只是從 JSP 搬到 Servlet,結構稍清晰,但配置爆炸、重用仍靠手工。
Struts 以 Action 統一處理請求、表單驗證、視圖轉發,實現職責分離。但許多開發者只會「配置套用」,不懂框架解決了什麼問題。
無論時代如何變遷,Web 應用永遠需要:
框架不重要,概念才是王道。 深刻理解 MVC,框架只是一個 JAR 包。
Controller 還需處理:Facade 門面、多視圖適配、國際化、權限攔截...
框架是為了解決一個又一個 Web 開發問題而誕生的。不要為了學習框架而學習框架,而要為了解決問題而學習框架。
回歸本質,以問題為導向,框架自然成為得心應手的工具。