动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   服务器 → 阅读文章

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

作者来源:天极网 
阅读 数 354 人次 , 2006-2-15 18:09:00 

在此 JSP 文件中,要注意的第一点是它有一个 page 指令标记。这是因为它需要继承一个超类,并需要导入两个类。JSP 文件继承了超类 com.ibm.igs.ispkcm.translator.JspBase,因为 JspBase 包括一些很好的实用函数,它使得 JSP 文件可包含更少的代码。该 JSP 文件所用的主要实用函数是 displayErrors() 和 highLightErrors()。该 page 指令导入 LoanTranslator 和 Hashtable,因为 JSP 文件中引用了这两个类,导入这两个类是为了以后在此 JSP 代码中引用这两个类时不必使用它们完全限定的类名。以下代码显示了 import 语句的一个示例:

<%@ page extends="com.ibm.igs.ispkcm.translator.JspBase"
import="com.ibm.developerworks.translatorpattern.LoanTranslator,
Java.util.Hashtable"%>

  JSP 文件中第一行真正的 Java 代码获取 Translator 对象的一个实例,然后获取一个 Hashtable,其中存储着属于 Translator 对象的那个实例的错误。因为 JSP 文件(在编译后)是一个 servlet,所以它是一个无状态的服务对象。Translator 对象将在特定 JSP 文件或 servlet 的不同往返之间维护必要的状态信息。状态信息应仅限于网站访问者输入的值和要向网站访问者显示的任何处理错误。因为 Translator 对象的每个实例都与一个特定的网站访问者相关联,所以 JSP 文件调用 Translator 对象的 getInstance(HttpServletRequest) 方法。由于为该方法传递的是一个 HttpServletRequest 对象,所以该方法将能够检索与该网站访问者的 HttpSession 相关的 Translator 实例。

<%
LoanTranslator ltLoan = LoanTranslator.getInstance(request);
Hashtable htErrors = ltLoan.getErrors();
%>

  在此 JSP 文件示例中,网站访问者将在表单的顶部看到所有处理错误。用来显示这些错误消息的 HTML 是使用 <%= displayErrors(htErrors) %> 表达式输出的。displayErrors() 方法是从 JSP 文件的超类 JspBase 中继承而来的。有了 displayErrors(),用于显示错误消息的所有逻辑都被集中在一起,从而简化了维护工作。

  下面这段代码模板适用于表单上的每个输入域:

<%= hightLightErrors(ltLoan.BORROWER_LAST_NAME, htErrors) %>Borrower Last Name:
<INPUT name="<%= ltLoan.BORROWER_LAST_NAME %>"
value="<%= ltLoan.getBorrowerLastName() %>">

  highLightErrors() 是从 JSP 文件的超类 JspBase 中继承而来的。如果某个输入域有错误,该方法将突出显示该输入域的标签。该方法接收两个参数:String 和Hashtable。该 Hashtable 是其中存储着从 Translator 的实例检索而来的错误的 Translator。String 是正在检查其是否有错误的输入域的名称。如果存在与该域相关的错误,highLightErrors() 就会返回突出显示此输入域的标签的 HTML。

  在此代码模板中,须注意的重要一点是:INPUT 标记的 name 属性是由一个表达式设置的,该表达式使用 LoanTranslator 对象的 BORROWER_LAST_NAME 常量。因为在 JSP 文件中引用此域名时使用了一个常量,所以 Translator 对象和 servlet 的调试变得更加容易。使用常量更为容易,因为无论何时开发人员更改此域的名称,他们都会获得一个编译错误,而非运行时错误。查找编译错误要容易得多,因为编译器会立即指出错误,而运行时错误到调试和测试期间才能被发现。   
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:使用 Translator 模式构建更好的网站(2)
· 下一篇:使用 Translator 模式构建更好的网站(4)
· 如何实现Linux操作系统的自动登录
· Apache服务器的用户认证(1)
· 七个维护服务器安全的技巧
· 国人自己的专业FTP服务器软件(上)
· Linux内核源代码的阅读及相关工具介绍


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077