Java开发网 |
注册 |
登录 |
帮助 |
搜索 |
排行榜 |
发帖统计
|
您没有登录 |
» Java开发网 » Architecture & Framework
打印话题 寄给朋友 订阅主题 |
话题被移动 | ||||
该话题已被移动 - wishmaster , 2002-12-27 03:13 如果您尚不清楚该话题被移动的原因,请参考论坛规则以及本版公告或者联系本版版主。 |
作者 | 《转》XML在B/S架构开发中的应用 |
daviszw
发贴: 11 积分: 20 |
于 2002-12-26 14:48
传统上, 我们利用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到浏览器, 供程序调试用. 说明: 1. 这里只是利用XSLT的功能来解决网站建设中最头痛的界面和逻辑分开问题, 不是基于XML的内容处理. 2. 如果你想赶时髦, 用XML来全副武装, 可以参考cocoon2, http://xml.apache.org/cocoon/. 但是请记住, cocoon 还不完善, 你将碰到乱码, 速度, 文档不足的问题, 但是它的思想的确值得学习. 3. 在tomcat, resin中有用filter实现的xslt转换,可参考。 我有一点感想和初学者们同享(原创) |
话题树型展开 |
人气 | 标题 | 作者 | 字数 | 发贴时间 |
15426 | 《转》XML在B/S架构开发中的应用 | daviszw | 2487 | 2002-12-26 14:48 |
12384 | Re:《转》XML在B/S架构开发中的应用 | floater | 137 | 2002-12-26 23:17 |
已读帖子 新的帖子 被删除的帖子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |