XML在B/S架构开发中的应用

传统上, 我们利用JSP+Bean来开发用户界面, 这里介绍一种利用XML+XSLT的方法来替代JSP

  动机:

  1. JSP构造页面太痛苦. 代码嵌入页面导致页面臃肿, 逻辑复杂, 不易编辑.

  2. 程序员和美工的接口必须精确定义. 复杂的嵌套输出必须构造复杂的显示类作为接口.

  3. 调试JSP必须等到前端程序结束才能看到效果.

  3. 调试JSP效率极低, 一点点小的修改都会引起jsp的重新编译.

  新的XML的解决方案:

  1. 一个servlet做统一管理. 接受url请求, 映射到对应的程序bean.

  2. 程序bean只产生XML, 由servlet统一用对应的XSL转换为html.

  好处:

  1. JDK1.4已经自带XML API和XSLT, 并且支持XSLT 1.0标准. IE6也支持同样标准.

  2. 开发前先制作接口用的demo XML, 程序员的输出必须符合此格式. 美工根据此格式制作XSL. 接口可视化, 明确定义.

  3. 只要定义好接口XML, 两边几乎不需要再联合调试. 美工利用接口XML和IE6就可以直接看到效果.

  4. 程序员只要保证输出的XML的是否符合接口, 直观的做文字性对比.

  5. 大量页面可重用的部分能方便的抽象出来, 在XSL文件中include/import进来. 高度重用, 标准化.

  6. 写XSL可大量采用template, 结构清晰, 修改方便, 写页面变成搭积木, 不再有jsp的层层嵌套.

  7. 对于不同的终端设备, 可以定制不同的XSL, 很方便的就能够支持手机, pda

  8. 在程序中利用支持XML的工具, 比如sql2000, 可以直接生成XML结果, 无需复杂编程.

  坏处:

  1. 因为要进行XSLT转换, 服务器工作量稍微增大.

  以下是几个关键环节的简单示例:

  ◆servlet中的XML转换

  /**

  * XML是String

  * XSL从文件中读取

 * 直接写入response

  */

  

      //import javax.xml.transform.*;

  //import javax.xml.transform.stream.*;

  StreamSource xml = new StreamSource(new StringReader(xmlSource));

  StreamSource xsl = new StreamSource(xslFileName);

  response.setContentType("text/html; charset=UTF-8");

  StreamResult result = new StreamResult(response.getWriter());

  Transformer trans = TransformerFactory.newInstance().newTransformer(xsl);

  trans.setOutputProperty("encoding","UTF-8");

  trans.transform(xml, result);

  ◆接口XML文件样本

  

      < ?xml version="1.0" encoding="UTF-8"?>

  < ?xml:stylesheet type="text/xsl" href="xxx.xsl"?>

  < page>

  < output>

  < info>推广UNICODE, 解决多语言问题.< /info>

  < /output>

  < /page>

  ◆XSL文件样本

  

      < ?xml version="1.0" encoding="UTF-8"?>

  < xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  < xsl:template match="/">

  < html>

  < head>

  < meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

  < /head>

  < body>

  < p align="center">

  < xsl:value-of select="page/output/info"/>

  < /p>

  < /body>

  < /html>

  < /xsl:template>

  < /xsl:stylesheet>

  考虑:

  1. 可以把XSLT转换放在IE进行, IE6以下版本要安装MSXML3, 对客户端限制太多.

  2. 在客户端的XSLT转换必须完全读入XML+XSL, 在网速不高或者内容很多的时候反应相当迟钝.

  3. 手机, pda等设备不能进行XSLT转换, 所以XSLT转换还是放在服务器上比较合适.

  4. 因为一般提交内容都比较简单, 所以没有采用XML处理, 在程序中也尽量少用XML, 避免影响速度.

  5. 可以在servlet判断特定参数, 比如发现有xml-view参数时, 不做XSLT转换, 直接输出XML到浏览器, 供程序调试用.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值