JSP与XML的结合

分类: Jsp   出处:iocblog整理  更新时间:2008-12-06   添加到收藏  

  综述:可扩展标注语言(extensible markup language,xml)正被迅速的运用于业界,它已作为与平台、语言和协议无关的格式描述和交换数据的广泛应用标准。xml和它的辅助规范可用于描述数据的文档表现,描述xml文档类型的限制,描述xml文档和资源之间的链接,描述xml文档的自动转换和格式化。

  如何开发自定义标签库?

  我使用jsp和asp编程已经有一段颇长的时间了,在两种服务器端的编程方式中,我越来越觉得jsp的功能要强大得多。不提别的,其中jsp的标签库就是我选择jsp作为首选服务器端web应用开发工具的原因。为什么?因为:维护和开发的速度。在一个单一的服务器页面中,你可以混合使用各种不同的脚本方法和对象。就?quot;混凝土"一样,这种混合可令服务器端的脚本变得强大,并且让服务器端的编程者设计出非常灵活和动态的web页面。不过这种自由的混合也有其缺点,那就是维护起来非常麻烦,特别是当项目逐渐变大时。由于最终的产品是经由一个传统的web设计者来维护的,因此会带来问题。更糟糕的是,随着代码的复杂性增加,开发的速度就会变慢,不利于开发中等和大型的web应用,一旦开发完,站点还要找合格的编程者来维护这些颇为复杂的代码。
幸好,jsp提供了一个很好解决的办法。标签库提供了一个简单的方法来建立一个可重用的代码块。一旦标签库设计好,它就可以在许多项目中再次使用。更方便的是,与com和j2ee不同,你无需学习任何其它的技巧就可以建立一个标签库!只要你懂得写jsp,你就可以建立一个标签库。标签库还可以改善web应用的维护。这个是得益于jsp页面自定义标签的简单xml接口。这样,web设计者甚至可以做到无需知道任何jsp的知识,就可以建立jsp的web应用。这个开放式的web开发对于团队运作是非常有效的。jsp编程者可以建立自定义的标签和后台的代码模块,而web设计者可以使用自定义的标签来建立web应用,并且将精力集中在web设计上。

  1. 标签库的定义
  jsp标签库(也称自定义库)可看成是一套产生基于xml脚本的方法,它经由javabeans来支持。在概念上说,标签库是非常简单和可以重用的代码构造。
  执行xml/xsl转换的标签范例和html页面

<%@ taglib uri="http://www.jspinsider.com/jspkit/jaxp" prefix="jaxp"%>
c:/xml/example.xml
c:/xml/example.xsl

  在这个例子中,通过使用简单的标签来访问后台更为强大的代码,一个xml被装载,并且通过一个xsl文件来产生一个结果,并发送给客户端,全部通过使用一个简单的标签调用就做到了。
  自定义标签为在jsp项目中创建易于重用的代码打开了一扇大门。你所需要的只是标签库和它的文档说明。

  2. 标签的组件
  虽然标签库非常易于使用,不过要建立一个内里的设计来支持标签库是颇复杂的,起码要比建立一个简单的javabean复杂。这个复杂是来自于标签库是由几部分构成的。不过,你只需要知道java和jsp的知识就够了。
一个简单的标签由下面的元素构成:
  ⑴ javabeans:为了得到java与生具来的面向对象的好处,可重用的代码应该放到一个独立的代码容器中。这些javabeans并不是标签库的一部分。不过它是你的代码库用来执行相关任务的基本代码块。
  ⑵ 标签处理:这是标签库的真正核心。一个标签处理器将引用它需要的任何资源(你的javabeans)和访问你的jsp页面的全部信息(pagecontext对象)。jsp页面也会将所有已经被设置的标签属性和jsp页面上的标签体中的内容传送给标签处理器。在标签处理器处理完毕后,它将发回输出到你的jsp页面进行处理。
  ⑶ 标签库的描述(tld文件):这是一个简单的xml文件,它记录着标签处理器的属性、信息和位置。jsp容器通过这个文件来得知从哪里及如何调用一个标签库。
  ⑷ 网站的web.xml文件:这是你网站的初始化文件,在这个文件中,你定义了网站中用到的自定义标签,以及哪个tld文件用来描述每个自定义的标签。
  ⑸ 分发文件(一个war或者jar文件):如果你想重用自定义标签的话,你需要一个方法来将它由一个项目转移到另一个项目中。将标签库打包为一个jar文件是一个简单而且有效的方式。
  ⑹ 在你的jsp文件中作标签库声明:很简单,如果要用到该标签的话,只要在页面声明一下就可以,其后,你就可以在该jsp页面的任何地方使用它。
  看来要做的工作很多,不过其实并不是很难。它的要点并不在于编码,而是在于如何将各部分正确地组织起来。不过,这样的分层是很重要的,它可令标签的使用灵活和更容易转移。更重要的是,这些层的存在可让处理建立标签的工程通过一个jsp ide(jsp的集成开发环境)自动完成。期望将来的jsp ide可自动完成创建一个自定义标签的大部分工作,这样你只需要写代码和标签处理就可以了。
  注意:一个标签处理仅定义一个自定义标签;一个标签库是几个处理相同任务的标签处理器的集合。

  3. 建立自己的标签
  以下将一步一步地教你如何建立自定义的标签,具体的例子是扩展jsp,令它拥有自己的html编码功能。这个功能将所有的<和>字符用html代码来代替。它可以很容易地扩展为做其它的编码处理。为了简化,这个例子只解释了建立自定义标签的基本要素。
  ⑴ 创建一个javabean
  你代码中任何可重新使用的部分都应该放到一个javabean中。这个很重要,因为你要经常在项目的其它地方用到这些代码。放在标签处理器中的任何代码在标签外都是不可以重新使用的,因此将可重用的代码部分独立开来是很重要的。在这个例子总,为html编码的逻辑是常用的,因此放到javabean中。
  ⑵ html编码javabean

/* html_format.java */
public class html_format extends object implements java.io.serializable {
/** 创建新的html_format */
public html_format() {}
/** 将一个字符串中所有的所有 < 和 > 字符用响应的html编码代替 */
public string html_encode(string as_data)
{
int li_len = as_data.length();
/*string buffer的长度要比原来的字符串长*/
stringbuffer lsb_encode = new stringbuffer(li_len + (li_len/10));
/* 循环替换全部的< 和 > 字符 */
for( int li_count = 0 ; li_count < li_len ; li_count++)
{ string ls_next = string.valueof(as_data.charat(li_count));
if (ls_next.equals("<")) ls_next = "<";
if (ls_next.equals(">")) ls_next = ">";
lsb_encode.append( ls_next );
}
return( lsb_encode.tostring() );
}
}

[1] [2] [3] [4] [5] 下一页



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。