解析J2EE与XML组合技术(4)

  让 XML 看得见
 
  将 XML Web 系统的用户界面进行集成显然是一种有益的尝试。绝大多数的界面程序,无论是基于还是不基于 Web ,都是将数据进行转换,然后用易读的格式展现给用户。用诸如 XML 这种 易消化 的格式存放数据将简化上述工作,同时它还大大提高了内容的可管理性,接下来我们就可看到这一点。不过首先要大书一笔的是, XML Web 界面层的应用得益于 JSP 技术的发展。
 
  一直以来大家都希望能清晰地区分 Web 应用程序的表示层与底层对象模型, JSP 框架诞生于这些努力之中(包括早期 JHTML 尝试)。 JSP 框架允许将 Java 代码嵌入到 HTML 内容中,这样既可以实现动态内容,又不必经常修改 Java Servlets 的代码。在页面中包含 Java 技术的途径是通过 JSP 标记( JSP Tags ),这些标记以 XML 风格出现。在 JSP 中, Java 程序以代码片段、服务器端 JavaBeans 组件、在服务器端触发特定操作的不透明标记(标准的或自定义的)等形式存在。当某个用户通过浏览器请求 JSP 页面时,一个 Java 应用服务器解析该 JSP 页面,将其编译成一个 Java Servlet ,然后执行该 Servlet 以产生答复页面。
 
  一种直接将 XML 数据源集成到 JSP 的界面中去的方法是,将 XML 加载到 JavaBeans 组件中(如同我们在 MediaAsset 例子中所做的),然后在 JSP 中直接引用这些 JavaBeans 组件。
 
  下面是一个嵌入 Java 代码片断的例子:
 
   14 讲的媒体资源
 
  !-- 引入我们的类 -- >
 
   <%@
 
  !-- 定义一个资源对象,以便用于显示 -- >
 
  !-- 从一个先前定义的位置装载资源 -- >
 
   <% MediaParser parser new MediaParser ();
 
   Collection assets parser loadAssets "http //javaschool org
 
   /jaf/E162/lecture14 assets xml" );
 
   Iterator iter assets iterator ();
 
   %>
 
  其中粗体部分为 JSP 代码片断和标记,其余部分是标准的 HTML 文本。
 
  上述程序还有一种更简洁的写法,那就是使用自定义 JSP 页面标记。这样我们就可以从 JSP 页面中剔出代码段,只使用 JavaBeans 组件和自定义的 JSP 标记即可。比如说,为了去掉创建解析器、加载资源数据到集合中的那段代码,我们可创建一个自己的标记,由它在幕后完成这些工作。以下是例子:
 
  .
 
   < !-- 引入我们的类 -- >
 
   <%@
 
  !-- 加载我们自定义的标记库 -- >
 
   <%@
 
   < !-- 从一个先前定义的位置装载资源 -- >
 
  使用自定义标记的最大好处是使我们的程序代码集中在一个地方(对 Java 技术而言,一般是指在 中),易于管理。这样可以将程序中对象层同界面层的集成关系定义得很清晰,修改代码所造成的影响是可以预测和管理的。
 
  直接将 XML 数据转换成 Web 显示内容的另一种方法是使用 XSL XSLT 。在这种方案中,将 XML 数据映射成 HTML (或 WML 等)的逻辑由 XSL 样式表( XSL StyleSheet )来定义。样式表描述了每个特定 XML 数据实体应该怎样转换成界面数据实体(如 HTML 表格、内联标记等)。在 JSP 架构中, XSL 转换只能应用于特定的 XML 数据源,最理想的是采用一套自定义的 JSP 标记并引用某个 XSLT 处理程序。这方面的典型示例请参考 java sun com 中关于 XML JSP 构架集成的白皮书。
 
  同前面那个 JSP 自定义标记加 XML 解析器组件的方案相比, XSLT 方案的伸缩性要好一些,而且具有更好的可管理性。在这种情形下,我们的转换逻辑是编写在一个 XSL 样式表中,而不是在 Java 代码中。这意味着当需要修改界面时,大多数情况下只是编辑样式表或者 HTML ,代码不受影响。不过在决定选用何种方案之前,还是要根据实际状况仔细权衡。如果选用 XSLT 方案,那么就得有人负责维护这些 XSL 样式表(要么是负责界面的人,要么是编写程序的人)。 XSLT 既像内容,又像程序,因此双方都不能把责任推给对方,结果大家可能都被这不伦不类的 XSLT 弄得矛盾百出。从这点上考虑,采用自定义标记并由界面开发者将其嵌入表示层的方法似乎更有吸引力,因为这样软件工程师只考虑 Java 代码,而内容工程师也只操心内容标记。(软件设计师)
 
   Java servlet 过滤器是 J2EE 1 3 版在其 Web 层最新发布的一种 Web 组件。当 Sevelet 将请求写入某个资源或者从某个资源中读取回答信息时,过滤器可以非常方便地转换其中的头信息和内容信息。这里所说的资源可以是一个 Java servlet 、一个 JSP 页面,甚至一个静态 Web 页。过滤器的确很 ,因为它允许开发人员从转换内容的代码中分离出生成内容的那部分代码,并加以重用。当需要通过 XSLT 方式将 XML 数据转换到不同的 XML 应用目标时, Java servlet 过滤器尤其有用。(软件设计师)
 
  在 J2EE 应用程序中使用 Java servlet 过滤器转换其输出,以便兼容任何类型客户端的前景呼之欲出。 servlet 过滤器能够侦测到来自使用 WAP 协议(无线应用协议)的移动客户端的呼叫,并且将答复内容转换成 WML (无线标记语言)格式。 servlet 过滤器也能检测到来自 iMode 无线客户的呼叫,并将其转变成 cHTML (紧凑 HTML )格式。当然, servlet 过滤器也能够分辨出传统的 HTML 浏览器客户的请求,并用正确的格式进行回复。
 
  结束语
 
  在 J2EE 1 2 1 规范中, XML“ 集成 仅指组件或应用程序的 XML 格式的部署描述。在 J2EE 1 3 规范中,对 XML 的支持被扩展为要求具备 SAX 2 DOM 2 解析器,以及在兼容 J2EE 的服务器平台上提供 XSLT 转换处理程序。您可以毋庸置疑地相信,将来在 J2EE 架构中还会集成进更多的 XML 特性,因为 J2EE 规范的定义者们会认真倾听开发者社区中对在企业级应用中使用更多 XML 的渴求呼声。例如, JSR Java 定义请求)处理小组中与 JAXM 规范相关的部分( JSR 000067 )承诺在 J2EE 后续规范中集成进 JAXM 。可以预见,在 JSP 架构、 EJB JDBC 规范中均会有类似的变化。 J2EE 平台中上述组件的变革,将使 Java 技术开发者目前用的 XML 更为规范化(以及标准化),发挥出更大的威力。
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值