StrutsCX与XSLT的联姻
2008-02-23 09:41:47来源:互联网 阅读 ()
StrutsCX允许我们以不同的语言和编码方式保存、输出内容,用StrutsCX可以方便地处理中文、英文、德文、法文、西班牙文以及朝鲜文、阿拉伯文、俄文等各种语言文字。
一、简单回顾Struts
Struts鼓励按照Model 2方式构建应用的体系。Model 2是MVC基本设计模式的一种变体。MVC设计模式的优点是,它使得Model、View和Controller各个部分之间相对独立。Struts在一个中心位置装配ActionServlet、ActionMapping和各种Action类,处理所有传入的HttpServletRequest。ActionServlet把各个传入的HttpServletRequest分发给Action类,而ActionMapping对象可通过Struts-config.xml配置文件控制,它告诉ActionServlet如何分发请求。
图一:Struts各个部分之间的通信过程
图一阐述了Controller的功能:在客户端、View和Model之间起协调、仲裁的作用。只有Controller才会与Model和View联系,在这中间它就象是一个交换机,而Model和View之间不会直接通信,这样,Model、View和Controller就被分隔开来。这是成功运用Struts的关键所在。
说明一下:所有Controller的逻辑应当放入Action类,与应用的其他层的通信可以在这里进行。虽然我们可以把业务逻辑也放入Controller,但一般而言最好不要这么做。应当改用Model部分的组件,因为这些组件才是真正处理数据的地方。把数据保存到数据库也应当是Model的功能之一。
当Controller处理好一个HttpServletRequest,它把请求转发给View。View的唯一任务是表现数据,在Struts中,View一般使用JSP技术。
在Struts中,Controller和View之间的所有通信都通过HttpServletRequest、HttpSession和ServletContext间接完成,对于这些操作来说,首选的技术莫过于Servlet,Struts直接把HttpServletRequest传递给Servlet——或者是JSP,不过Servlet容器会自动把JSP转换成Servlet。
二、Struts和JSP的局限
作为一个开放的框架,Struts允许使用JSP之外的技术构造View。在考虑改进Struts应用中的View技术时,人们首先想到的往往是用其他Servlet技术替代JSP,例如用XSLT或在Servlet管理之下的XSLT。
图二描述了在Struts框架中应用JSP的情况。View由JSP定制标记库和JSP页面共同构造,其中ActionForm类是一种类似JavaBean的ValueObject对象,带有set和get方法,用来保存客户的状态。按照Struts的MVC概念,ActionForm位于View和Controller之间的中间地带。Struts提供了一组完备的专用标记,用来从JSP访问ActionForm里面的数据。
图二:Struts应用体系
JSP有力地推动了Java在Web开发中的应用。在JSP标记库技术的帮助下,JSP为Web和J2EE应用中的表现层开发提供了丰富和强大的工具。但是,JSP也存在一些局限:
·程序员可以把应用逻辑放入JSP。但是,按照MVC的设计思想,JSP的唯一用途是显示出数据,否则,程序结构很容易变得复杂和难于管理。
·JSP对XML的支持不佳。JSP不能保证输出的XML内容100%“格式良好”(Well-Formed)。在这个无数支持XML的Internet访问设备不断涌现的时代,缺乏对XML的支持无疑不是小问题。
·开发过程中每一次修改JSP都会导致Servlet容器重新把JSP转换成Servlet。对于有些Servlet引擎,开发过程中由此引起的延迟带来很多麻烦。
三、XSLT的优势
作为一种W3C的正式标准,XSLT提供了一种把XML数据转换成纯文本、PDF、HTML/XHTML、WML、VoiceXML等任意XML格式的灵活、强大的工具。XSLT处理器,例如Xalan和Saxon,通过XSL样式执行转换,XSL样式本身实际上也是一种XML文档(参见图三)。
XSL样式定义了转换XML数据的规则,XSLT处理器按照这些规则实施转换。在XSL样式中,我们可以利用XPath表达式以一种紧凑而高效的形式选取XML文档的一部分进行处理。
图三:XSLT转换原理
XSLT/XPath的基本理念是分离XML数据内容和它的表现形式,以便把同一份数据方便地以不同的形式(或格式)输出,满足各种不同显示设备的需要。也就是说,在不改动输入的XML文档的条件下,对于每一种不同的输出格式,只需定义相应的XSL样式。对于Struts应用来说,这意味着:
·在单一XML文档中存储(描述)所有的数据。
·在XSL样式的帮助下,把该XML文档转换成任意数据格式。
当然,XML文档可以在内存中生成,不一定要有保存在磁盘上的文件。例如,以Java对象的形式创建XML文档,然后直接用XSLT处理器加以处理,从而极大地提高处理速度。
四、StrutsCX:加上了XSLT的Struts
StrutsCX把Struts和XSLT的优势结合到了一起,它用XSLT来替换生成View的JSP,但原封不动地保留Struts的Controller和Model部分。
图四比较了Struts和StrutsCX的差异。在View中,StrutsCX传递的目标不再是JSP,而是一个Servlet,由Servlet组织、构造XML文档,并利用XSL样式转换XML文档。如果有ActionForm Bean,Action对象把它复制到HttpServletRequest,然后也被加入到XML输出文档。类似于Struts,StrutsCX动作的功能也是协调Web应用或J2EE应用的表现层和其他各个层,例如业务层等。
图四:StrutsCX应用体系
StrutsCX与Struts的不同表现在下面几个方面:
·在View中,StrutsCX使用的是XSLT而不是JSP。
·应用的国际化不再通过Java资源捆绑技术实现,而是通过纯XML技术实现。
·StrutsCX不需要为了输出错误信息而使用任何标记库,它使用XML和XSLT/XPath之类的W3C标准技术。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:JDBC编程基础 第二部分
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash