使用 Translator 模式構建更好的網站(6)_Windows教程
隨后 servlet 使用 processForm() 方法將對所提交的 HTML 表單的處理委派給 Translator。
在 Translator 分析表單之后,servlet 將確定是否需要從第二存儲中創建或檢索業務對象(示例中的 Loan)。
在 servlet 擁有業務對象的一個實例之后,servlet 就會調用 Translator 對象的 syncModelToGui()。syncModelToGui() 隨后將網站訪問者提交的全部值轉換為業務對象可識別的值。
在 Translator 完成值的同步之后,servlet 將檢查當試圖轉換網站訪問者輸入的值時,Translator 是否記錄了任何錯誤。
如果沒有記錄任何錯誤,servlet 就會將網站訪問者重定向到確認頁(通常是另一個 JSP 文件,它同樣能顯示來自 Translator 的值)。
如果記錄了錯誤,servlet 就將網站訪問者重定向到輸入表單,這樣他就可以修正錯誤。
3. Translator 對象
因為 Translator 對象是 JSP 文件、servlet 和業務對象之間的聯系紐帶,所以要求它是有狀態的,并且要求它在 HTTP 請求(或線程)之間維護狀態。為了符合這個標準,Translator 對象需要起到類似偽孤子 (pseudo singleton) 那樣的作用。Translator 類有五個主要部分,另外還有一個前面未曾提及的 Object Translator 類庫。
getInstance() syncGuiToModel() 若干 getter 方法 processForm() syncModelToGui() Object Translators 庫 |
為了調用 Translator 對象的一個實例,調用程序必須調用靜態方法 getInstance(HttpServletRequest)。getInstance() 方法將確定是否應返回 Translator 的一個新實例,或者是否應從 HttpSession 中重用某個實例。該方法通過查看定制參數 action 來實現這一點。此參數是隨 HTTP 請求(例如,http://localhost/registerLoan.jsp?action=new)一起傳遞的。下面的樣例代碼段顯示了 getInstance() 的內容:
public static LoanRegistrationTranslator getInstance(HttpServletRequest request) // HttpSession 是必需的,因此在此處將它提取出來。 // 從 request 對象中檢索 action 參數。 // 確定我們要返回哪種 Translator。 // 返回 Translator 對象的一個實例。 |
- 相關鏈接:
- 教程說明:
Windows教程-使用 Translator 模式構建更好的網站(6)。