首页 > 服务器 > Win服务器 > 正文

使用 Translator 模式构建更好的网站(2)

2024-09-10 00:02:34
字体:
来源:转载
供稿:网友
最后,servlet 专用于处理导航流和业务对象的持久性。当 servlet 接收到提交表单时,它将获得 Translator 对象的一个实例,并使用 processForm() 方法将对表单的分析委派给 Translator 对象。在表单的分析完成以后,servlet 就会让 Translator 对象使用 syncModelToGui() 方法将业务对象的值同步为表单中所提交的值。在成功转换所提交的值并将它们设置到业务对象上之后,servlet 将对业务对象执行持久化,并向网页访问者显示确认页。

  2. 给我显微镜

  下面我们仔细查看 Translator 模式的三个部分:JSP 文件、servlet 和 Translator 对象。(本文的示例遵循的是 Servlet 2.1 规范和 JSP 1.0 规范。这些示例是在 WebSphere 3.02 和 WebSphere 3.5 环境下构建和测试的。)

  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 文件,所以输入域的值可以是动态的。这一点很重要,因为我们网站的访问者是实实在在的人,他们会犯输入错误。比让网站通知您它不接受您的输入更糟糕的唯一一件事情是,让它通知您它不接受您在某个域中输入的内容,并要求您重新键入其他 20 个域,因为某个程序员正忙于检查股市报价,没有时间来提高输入表单的用户友好性。在 Translator 模式中,输入表单的每个输入域的值都是动态设置的,因此如果因存在输入错误而需要向网站访问者重新显示输入页,他们就会看到突出显示的错误,但其他输入项仍然保留。

  请记住,JSP 文件是由对 Java 代码知之甚少或一无所知的网站设计者编写和维护的。鉴于这个原因,我们希望 JSP 文件包含尽可能少的 Java 代码。但我们在上一段的说明听起来好像需要编写大量的 Java 代码。该 JSP 文件示例只有少量 Java 代码,但它们主要位于表达式 (<%= x %>) 中。它们能够使用这些众多的功能,因为 JSP 文件从它的超类 com.ibm.igs.ispkcm.translator.JspBase 中继承了这些代码,并将大量代码放在 Translator 对象中。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表