使用 Translator 模式構(gòu)建更好的網(wǎng)站(2)_Windows教程
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
最后,servlet 專用于處理導(dǎo)航流和業(yè)務(wù)對(duì)象的持久性。當(dāng) servlet 接收到提交表單時(shí),它將獲得 Translator 對(duì)象的一個(gè)實(shí)例,并使用 processForm() 方法將對(duì)表單的分析委派給 Translator 對(duì)象。在表單的分析完成以后,servlet 就會(huì)讓 Translator 對(duì)象使用 syncModelToGui() 方法將業(yè)務(wù)對(duì)象的值同步為表單中所提交的值。在成功轉(zhuǎn)換所提交的值并將它們?cè)O(shè)置到業(yè)務(wù)對(duì)象上之后,servlet 將對(duì)業(yè)務(wù)對(duì)象執(zhí)行持久化,并向網(wǎng)頁(yè)訪問(wèn)者顯示確認(rèn)頁(yè)。
2. 給我顯微鏡
下面我們仔細(xì)查看 Translator 模式的三個(gè)部分:JSP 文件、servlet 和 Translator 對(duì)象。(本文的示例遵循的是 Servlet 2.1 規(guī)范和 JSP 1.0 規(guī)范。這些示例是在 WebSphere 3.02 和 WebSphere 3.5 環(huán)境下構(gòu)建和測(cè)試的。)
JSP 文件
使用 Translator 模式的典型 JSP 輸入表單如下所示:
在 Translator 模式中,所有表單都是 JSP 文件,而非 HTML 文件,所以輸入域的值可以是動(dòng)態(tài)的。這一點(diǎn)很重要,因?yàn)槲覀兙W(wǎng)站的訪問(wèn)者是實(shí)實(shí)在在的人,他們會(huì)犯輸入錯(cuò)誤。比讓網(wǎng)站通知您它不接受您的輸入更糟糕的唯一一件事情是,讓它通知您它不接受您在某個(gè)域中輸入的內(nèi)容,并要求您重新鍵入其他 20 個(gè)域,因?yàn)槟硞(gè)程序員正忙于檢查股市報(bào)價(jià),沒有時(shí)間來(lái)提高輸入表單的用戶友好性。在 Translator 模式中,輸入表單的每個(gè)輸入域的值都是動(dòng)態(tài)設(shè)置的,因此如果因存在輸入錯(cuò)誤而需要向網(wǎng)站訪問(wèn)者重新顯示輸入頁(yè),他們就會(huì)看到突出顯示的錯(cuò)誤,但其他輸入項(xiàng)仍然保留。
請(qǐng)記住,JSP 文件是由對(duì) Java 代碼知之甚少或一無(wú)所知的網(wǎng)站設(shè)計(jì)者編寫和維護(hù)的。鑒于這個(gè)原因,我們希望 JSP 文件包含盡可能少的 Java 代碼。但我們?cè)谏弦欢蔚恼f(shuō)明聽起來(lái)好像需要編寫大量的 Java 代碼。該 JSP 文件示例只有少量 Java 代碼,但它們主要位于表達(dá)式 (<%= x %>) 中。它們能夠使用這些眾多的功能,因?yàn)?JSP 文件從它的超類 com.ibm.igs.ispkcm.translator.JspBase 中繼承了這些代碼,并將大量代碼放在 Translator 對(duì)象中。
2. 給我顯微鏡
下面我們仔細(xì)查看 Translator 模式的三個(gè)部分:JSP 文件、servlet 和 Translator 對(duì)象。(本文的示例遵循的是 Servlet 2.1 規(guī)范和 JSP 1.0 規(guī)范。這些示例是在 WebSphere 3.02 和 WebSphere 3.5 環(huán)境下構(gòu)建和測(cè)試的。)
JSP 文件
使用 Translator 模式的典型 JSP 輸入表單如下所示:
| <%@ page extends="com.ibm.igs.ispkcm.translator.JspBase" import="com.ibm.developerworks.translatorpattern.LoanTranslator, Java.util.Hashtable"%> <HTML> <% LoanTranslator ltLoan = LoanTranslator.getInstance(request); Hashtable htErrors = ltLoan.getErrors(); %> <HEAD> </HEAD> <BODY> <%= displayErrors(htErrors) %> <action="/servlet/com.ibm.developerworks.translatorpattern.LoanRegistrationServlet"> <%= hightLightErrors(ltLoan.BORROWER_LAST_NAME, htErrors) %>Borrower Last Name: <INPUT name="<%= ltLoan.BORROWER_LAST_NAME %>" value="<%= ltLoan.getBorrowerLastName() %>"> </FORM> </BODY> </HTML> |
在 Translator 模式中,所有表單都是 JSP 文件,而非 HTML 文件,所以輸入域的值可以是動(dòng)態(tài)的。這一點(diǎn)很重要,因?yàn)槲覀兙W(wǎng)站的訪問(wèn)者是實(shí)實(shí)在在的人,他們會(huì)犯輸入錯(cuò)誤。比讓網(wǎng)站通知您它不接受您的輸入更糟糕的唯一一件事情是,讓它通知您它不接受您在某個(gè)域中輸入的內(nèi)容,并要求您重新鍵入其他 20 個(gè)域,因?yàn)槟硞(gè)程序員正忙于檢查股市報(bào)價(jià),沒有時(shí)間來(lái)提高輸入表單的用戶友好性。在 Translator 模式中,輸入表單的每個(gè)輸入域的值都是動(dòng)態(tài)設(shè)置的,因此如果因存在輸入錯(cuò)誤而需要向網(wǎng)站訪問(wèn)者重新顯示輸入頁(yè),他們就會(huì)看到突出顯示的錯(cuò)誤,但其他輸入項(xiàng)仍然保留。
請(qǐng)記住,JSP 文件是由對(duì) Java 代碼知之甚少或一無(wú)所知的網(wǎng)站設(shè)計(jì)者編寫和維護(hù)的。鑒于這個(gè)原因,我們希望 JSP 文件包含盡可能少的 Java 代碼。但我們?cè)谏弦欢蔚恼f(shuō)明聽起來(lái)好像需要編寫大量的 Java 代碼。該 JSP 文件示例只有少量 Java 代碼,但它們主要位于表達(dá)式 (<%= x %>) 中。它們能夠使用這些眾多的功能,因?yàn)?JSP 文件從它的超類 com.ibm.igs.ispkcm.translator.JspBase 中繼承了這些代碼,并將大量代碼放在 Translator 對(duì)象中。
相關(guān)Windows教程:
- 相關(guān)鏈接:
- 教程說(shuō)明:
Windows教程-使用 Translator 模式構(gòu)建更好的網(wǎng)站(2)
。