很多Web開發人員都經常抱怨說 Java™ EE 太複雜、構建新的 Web 元件太難、定製現有的組件沒有預想的那樣簡單,並且即便是很小的更改都需要重新啟動應用程式。本系列給出了針對這些問題的解決方案,即採用代碼產生器、約定、指令碼語言和先進的 JavaServer Pages ™ (JSP) 特性。在本文中,您將瞭解如何基於 JSP 標記檔案構建可重用的 Ajax 和 Java 組件,而這些 JSP 標記檔案很容易開發和部署。更改之後,JSP 標記檔案會由 Java EE 伺服器自動重編譯,而無須重啟應用程式。此外,您還能完全控制所產生的程式碼,並能輕鬆地定製這些輕量級組件,因為它們使用的是 JSP 文法。
本系列含 4 部分,展示了一種基於 JSP 的技術,用以產生 JavaScript 代碼、顯著減少需要手動編寫的代碼量,本文是第 1 部分。本文的應用程式範例展示了如何產生 JavaScript 函數來發送 Ajax 請求和處理 Ajax 響應。如果想要輕鬆地更改 Ajax 代碼,可以將這裡討論的簡單技巧應用到實際的應用程式中。本文更寬泛的目標是展示如何使用 JSP 標記檔案針對具體需求產生 JavaScript 代碼,而非只是 Ajax 常式。
使用架構和代碼產生器
如果您很幸運地找到了一種能滿足您需要的組件或架構,那麼就請使用它吧。如果沒有找到也沒關係,因為您總是可以開發自己的解決方案,也可以定製現有的一段代碼。不管是哪種情況,一種很好的做法是 “參數化” 代碼並將其放入一個可重用的庫,而非將參數寫入程式碼到您的代碼裡。不過有時候,實現泛型並不實際,因為它會使開發變得複雜,而非簡化。在將泛型代碼放入可重用組件或架構時,可以考慮使用代碼產生器來更有效地產生特定的代碼。
在開發的過程中避免複製 & 粘貼
假設,您需要應用程式使用 Ajax 請求網站上的某些資訊,最快的(當然不是最好的)方法是找到一些如清單 1 這樣的免費代碼、更改 URL 並將這些代碼粘貼到 Web 頁面。很多開發人員都會這麼做,但這種做法會導致巨大的維護問題。如果應用程式具有數百個頁面,最後的結果將是出現大量像清單 1 中的 getInfo() 這樣的函數。不好的一面是每次需要進行添加或更改(比如實現 Ajax 請求的錯誤處理)時,您都必須要手動修改所有頁面並重新測試它們。好的一面是您可以通過使用庫、架構和代碼產生器,很容易地避免這個維護問題。
清單 1. Ajax 函數
function getInfo(country, city) {
var request = null;
if (window.ActiveXObject)
request = new ActiveXObject("Microsoft.XMLHTTP");
else if (window.XMLHttpRequest)
request = new XMLHttpRequest();
else
return;
var url = "CityInfo.jsp?country=" + escape(country)
+ "&city=" + escape(city);
request.open("GET", url, true);
function processResponse() {
if (request.readyState == 4) {
if (request.status == 200) {
// ...
}
}
}
request.onreadystatechange = processResponse;
request.send(null);
}