欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

使用 Translator 模式構(gòu)建更好的網(wǎng)站(6)_Windows教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
servlet 執(zhí)行的第一個(gè)操作就是從 HttpServletRequest 中獲取 Translator 對(duì)象的一個(gè)實(shí)例。

  隨后 servlet 使用 processForm() 方法將對(duì)所提交的 HTML 表單的處理委派給 Translator。
 
  在 Translator 分析表單之后,servlet 將確定是否需要從第二存儲(chǔ)中創(chuàng)建或檢索業(yè)務(wù)對(duì)象(示例中的 Loan)。

  在 servlet 擁有業(yè)務(wù)對(duì)象的一個(gè)實(shí)例之后,servlet 就會(huì)調(diào)用 Translator 對(duì)象的 syncModelToGui()。syncModelToGui() 隨后將網(wǎng)站訪問(wèn)者提交的全部值轉(zhuǎn)換為業(yè)務(wù)對(duì)象可識(shí)別的值。

  在 Translator 完成值的同步之后,servlet 將檢查當(dāng)試圖轉(zhuǎn)換網(wǎng)站訪問(wèn)者輸入的值時(shí),Translator 是否記錄了任何錯(cuò)誤。

  如果沒(méi)有記錄任何錯(cuò)誤,servlet 就會(huì)將網(wǎng)站訪問(wèn)者重定向到確認(rèn)頁(yè)(通常是另一個(gè) JSP 文件,它同樣能顯示來(lái)自 Translator 的值)。

  如果記錄了錯(cuò)誤,servlet 就將網(wǎng)站訪問(wèn)者重定向到輸入表單,這樣他就可以修正錯(cuò)誤。

  3. Translator 對(duì)象

  因?yàn)?Translator 對(duì)象是 JSP 文件、servlet 和業(yè)務(wù)對(duì)象之間的聯(lián)系紐帶,所以要求它是有狀態(tài)的,并且要求它在 HTTP 請(qǐng)求(或線程)之間維護(hù)狀態(tài)。為了符合這個(gè)標(biāo)準(zhǔn),Translator 對(duì)象需要起到類(lèi)似偽孤子 (pseudo singleton) 那樣的作用。Translator 類(lèi)有五個(gè)主要部分,另外還有一個(gè)前面未曾提及的 Object Translator 類(lèi)庫(kù)。

getInstance()
syncGuiToModel()
若干 getter 方法
processForm()
syncModelToGui()
Object Translators 庫(kù)

  為了調(diào)用 Translator 對(duì)象的一個(gè)實(shí)例,調(diào)用程序必須調(diào)用靜態(tài)方法 getInstance(HttpServletRequest)。getInstance() 方法將確定是否應(yīng)返回 Translator 的一個(gè)新實(shí)例,或者是否應(yīng)從 HttpSession 中重用某個(gè)實(shí)例。該方法通過(guò)查看定制參數(shù) action 來(lái)實(shí)現(xiàn)這一點(diǎn)。此參數(shù)是隨 HTTP 請(qǐng)求(例如,http://localhost/registerLoan.jsp?action=new)一起傳遞的。下面的樣例代碼段顯示了 getInstance() 的內(nèi)容:

public static LoanRegistrationTranslator getInstance(HttpServletRequest request)
{
// 聲明返回值變量。
LoanRegistrationTranslator lrtRV = null;

// HttpSession 是必需的,因此在此處將它提取出來(lái)。
HttpSession session = request.getSession();

// 從 request 對(duì)象中檢索 action 參數(shù)。
String sAction = parseString(request, ACTION);

// 確定我們要返回哪種 Translator。
if (ACTION_PROCESS.equals(sAction) == true)
{
// 因?yàn)?action 參數(shù)被設(shè)置為 process,這表示我們正在處理一個(gè)現(xiàn)有的
// Translator,所以從 HttpSession 中將這個(gè) translator 提取出來(lái)。
lrtRV = (LoanRegistrationTranslator)
session.getValue(HttpSessionValueKeys.LOAN_REGISTRATION_TRANSLATOR);
}
else if (sAction == null || "".equals(sAction) == true ||
ACTION_NEW.equals(sAction) == true)
{
// 由于未設(shè)置或根本未傳遞 action,所以缺省操作是創(chuàng)建一個(gè)新的 translator。
// 另一種可能是 action 為 "new"
lrtRV = new LoanRegistrationTranslator();
session.putValue(HttpSessionValueKeys.LOAN_REGISTRATION_TRANSLATOR, lrtRV);
}
else
{
// 由于 action 不滿足前面的任何檢查,即 action 值是位于輔助存儲(chǔ)器中的
// 一個(gè)現(xiàn)有 Loan 的 ID,所以這次創(chuàng)建一個(gè) LoanRegistrationTranslator,
// 其值被預(yù)設(shè)為已保存的 loan 中的值。
lrtRV = new LoanRegistrationTranslator(sAction);
session.putValue(HttpSessionValueKeys.LOAN_REGISTRATION_TRANSLATOR, lrtRV);
}

// 返回 Translator 對(duì)象的一個(gè)實(shí)例。
return lrtRV;
}

來(lái)源:網(wǎng)絡(luò)搜集//所屬分類(lèi):Windows教程/更新時(shí)間:2013-04-15
相關(guān)Windows教程