用這種 servlet 和 jsp 框架治理復雜的大型網站
Malcolm Davis
顧問
2001 年 2 月
簡介
小學生也可以在因特網上發布 Html 網頁。但是,小學生的網頁和專業開發的網站有質的區別。網頁設計人員(或者 HTML 開發人員)必須理解顏色、用戶、生產流程、網頁布局、浏覽器兼容性、圖像創建和 javascript 等等。設計漂亮的網站需要做大量的工作,大多數 Java 開發人員更注重創建美麗的對象接口,而不是用戶界面。JavaServer Pages (JSP) 技術為網頁設計人員和 Java 開發人員提供了一種聯系鈕帶。
假如您開發過大型 Web 應用程序,您就理解變化這個詞的含義。“模型-視圖-控制器”(MVC) 就是用來幫助您控制變化的一種設計模式。MVC 減弱了業務邏輯接口和數據接口之間的耦合。Struts 是一種 MVC 實現,它將 Servlet 2.2 和 JSP 1.1 標記(屬於 J2EE 規范)用作實現的一部分。盡管您可能永遠不會用 Struts 實現一個系統,但了解一下 Struts 或許使您能將其中的一些思想用於您以後的 Servlet 的 JSP 實現中。
在本文中,我將以一個 JSP 文件為起點討論該網頁的優缺點,該文件中使用的元素可能是您所熟悉的。隨後我將討論 Struts,並說明它是如何控制您的 Web 項目中的變化並提高專業化水平的。最後,我將重新開發這個簡單的 JSP 文件,在開發過程中我已顧及到網頁設計人員和變化。
一個 JSP 文件就是一個 Java servlet
JavaServer Page (JSP) 文件只是審閱 servlet 的另一種方式。JSP 文件的概念使我們能夠將 Java servlet 看作一個 HTML 網頁。JSP 消除了 Java 代碼中經常出現的討厭的 print()
語句。JSP 文件首先被預處理為 .java
文件,然後再編譯為 .class
文件。假如您使用的是 Tomcat,則可以在 work
目錄下查看預處理後的 .java
文件。別的容器可能將 .java
和 .class
文件存儲在其他位置;這個位置與容器有關。圖 1 說明了從 JSP 文件到 servlet 的流程。
圖 1. 從 JSP 文件到 servlet 的流程
(這與 Microsoft 的 Active Server Page (ASP) 明顯不同。ASP 被編譯到內存中,而不是編譯到一個單獨的文件中。)
簡單的獨立 JSP 文件
在小型 JSP 應用程序中,經常會看到數據、業務邏輯和用戶界面被組合在一個代碼模塊中。此外,應用程序通常還包含用來控制應用程序流程的邏輯。清單 1 和圖 2 展示了答應用戶加入一個郵件列表的一個簡單 JSP 文件。
清單 1. join.jsp
-- 一個簡單的請求和響應 JSP 文件
<%@ page language="java" %> <%@ page import="business.util.Validation" %> <%@ page import="business.db.MailingList" %> <% String error = ""; String email = request.getParameter("email"); // 是否有電子郵件地址 if( email!=null ) { // 驗證輸入... if( business.util.Validation.isValidEmail(email) ) { // 存儲輸入... try { business.db.MailingList.AddEmail(email); } catch (Exception e) { error = "Error adding email address to system. " + e; } if( error.length()==0 ) { %> // 重定向到歡迎頁... <jsp:forward page="welcome.html"/> <% } } else { // 設置錯誤消息並重新顯示網頁 error = email + " is not a valid email address, please try again."; } } else { email = ""; } %> <html> <head> <title>Join Mailing List</title> </head> <body> <font color=red><%=error%></font><br> <h3>Enter your email to join the group</h3> <form action="join.jsp" name="joinForm"> <input name="email" id="email" value=<%=email%>></input> <input type=submit value="submit"> </form> </body> </html>
圖 2. 在簡單的請求和響應中,JSP 文件設置數據、控制到下一個網頁的流程並創建 HTML