Java+XML+MVC框架StrutsCX简介[转]

StrutsCX是一个以Struts为基础的XML解决方案的框架,和Struts不同,它使用XML(确切的说是XSLT)作为表现层,而不是像Struts那样是以JSP作为表现层。

目前它的最新版本是0.9.5,这个也就意味着它还没有完全稳定和成熟,但是目前它所具备的一些功能已经足以满足我们大部分的需要了。

根据其官方网站的说明,它具备如下的特性:
可以运行于任何Servlet引擎或者J2EE应用服务器的轻量框架。
实现简单快速。
支持国际化。
使用纯粹的XML和XSLT解决方案替换Struts的JSP和Message资源特性。
输出100%符合XML, XHTML, XSL-FO, WML或者其他的格式标准。
错误验证简单。
内部使用JDOM。
包括FOP,支持PDF, SVG和ASCII输出。
包括Struts Validator。
支持多种转换。
支持客户端XSLT。
包含范例应用(单个的WAR包)。

从其结构而言,它和Struts的不同之处在于Action执行完毕以后的回应,Struts在Action执行完毕之后转向的是JSP,而StrutsCX转向到的是它的核心类:StrutsCXServlet,该类会根据配置文件查找得到XSL文件,并且自动生成带有XSL绑定的XML文件(内部是结合StrutsCXDocumentBuilder和StrutsCXTransformer),对于一些较新的支持XML的浏览器(包括IE5以上,Mozilla 1.4以上)就可以显示结果了。

以下两个图片可以让我们对比一下Struts和StrutsCX的结构:

299589.gif

Struts

299591.gif

StrutsCX


至于其安装和配置,其网站(http://it.cappuccinonet.com/strutscx/install.php?target=install)有其全面的说明。

简单说明如下:

拷贝所需的jar包(该项目依赖很多很受欢迎的开源项目的结晶,例如avolon,Castor XML,dom4j,FOP,Jakarta Commons ,Jakarta ORO ,JDOM ,Log4j ,Struts ,Xerces)

配置web.xml声明使用StrutsCXServlet:

<!-- StrutsCXServlet -->
<servlet><servlet-name>StrutsCXServlet</servlet-name><servlet-class>com.cappuccinonet.strutscx.xslt.StrutsCXServlet</servlet-class><init-param><param-name>debug</param-name><param-value>false</param-value></init-param><load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>StrutsCXServlet</servlet-name><url-pattern>/StrutsCXServlet</url-pattern>
</servlet-mapping>


配置struts-config.xml使用StrutsCXPlugIn:

<plug-in className="com.cappuccinonet.strutscx.util.StrutsCXPlugIn"><set-property property="config" value="/WEB-INF/strutscx-config.xml" />
</plug-in>


编写Action,和Struts不同,我们需要在Action里面设置要绑定的XSL文件的路径:

// pointer to the strutscx-definitions
String xslFile = "simple.xsl";
// set it to the HttpServletRequest
request.setAttribute(StrutsCXConstants.XSL_KEY, xslFile);


以上只是一个非常简单的介绍,由于笔者正在做的一个项目是一个重写的项目,要求使用最新的技术,未来有可能支持WML,因此采取的解决方案就是使用XML代替JSP,而目前可以找到的就是这个框架了。

根据目前我们使用的经验,主要问题可能还是国际化支持上的问题,因为其给出的国际化支持的方案和我们现在常用的基于JAVA的properties或者Resources方案不同,需要采用它定义的XML格式,因此使用不是很方便。

至于开发方面,这里需要介绍的就是我们的开发经验,其实也没有什么,由于刚刚开始的时候我们对其生成的XML文件的内容不是很熟悉,因此我们采用的开发步骤如下:

配置strutscx-config.xml文件,编写Action和FormBean,以调试模式观看其生成的XML文件的内容,依据XML内容编写XSL,最后测试XSL文件是否正确。

需要注意的是我们要在strutscx-config.xml中将debugxml设置为on,然后我们在调用Action的时候在URL中增加debugxml=true让其向浏览器输出XML(例如http://localhost:8080/sample/hello.do?debugxml=true)

由于这个框架还非常的新,目前介绍这个框架的内容还不是很多,使用的人也可能不是很多,但是笔者相信在XML的大旗下这个框架应该是会很广泛的应用的。

下载地址:
http://sourceforge.net/project/showfiles.php?group_id=67148&package_id=65546&release_id=201686

转载于:https://www.cnblogs.com/laoxingxuzhou/archive/2004/12/09/5172979.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle高资源消耗sql,Oracle中定位重要(消耗资源多)的SQL

在分析SQL性能的时候&#xff0c;经常需要确定资源消耗多的SQL&#xff0c;总结如下&#xff1a; 1 查看值得怀疑的SQLselect substr(to_char(s.pct,在分析SQL性能的时候&#xff0c;经常需要确定资源消耗多的SQL&#xff0c;&#xff0c;总结如下&#xff1a;1 查看值得怀疑的…

@PostContruct注解的使用

PostConstruct是Java自己的注解. PostConstruct该注解被用来修饰一个非静态的void()方法. PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次. PostConstruct在构造函数之后执行,init()方法之前执行. 如果我们知道servlet的生命周期&#xff…

《Vim实用技巧》阅读笔记 --- 移动及跳转

1、在对实际行的操作之前加上g&#xff0c;即可对屏幕行进行操作&#xff0c;例如&#xff1a;gj表示向下移动一个屏幕行&#xff0c;g^表示移动到屏幕行的第一个非空白字符等等 2、Vim有两组面向单词正向及反向移动的命令&#xff1a; w 正向移动到下一个单词的开头b 反向移动…

oracle财务软件凭证打印,金算盘财务软件后台数据库为Oracle

金算盘财务软件后台数据库为Oracle&#xff0c;OA系统中虽然提供了金算盘财务软件的接口&#xff0c;但由于版本较低&#xff0c;无法直接采集金算盘财务软件的备份数据。我们发现&#xff0c;在已试验的金算盘财务软件的凭证表中&#xff0c;科目字段中既有科目编码也有科目名…

Unity GeometryShader(从一个线框渲染的例子开始)

GeometryShader这个概念&#xff0c;已经出现很久了&#xff0c;但由于性能不佳&#xff0c;所以使用的并不多。甚至移动平台根本就不支持。移动平台的硬件更新速度也是越来越快&#xff0c;GS的应用普及应该不会太远。就现阶段而言&#xff0c;GS来做一些辅助效果也是有一定用…

为什么SimpleDateFormat不是线程安全的?以及解决方法说明

一&#xff1a;概述 SimpleDateFormat 类主要负责日期的转换与格式化等操作&#xff0c;在多线程的环境中&#xff0c;使用此类容易造成数据转换及处理的不正确&#xff0c;因为 SimpleDateFormat 类并不是线程安全的&#xff0c;但在单线程环境下是没有问题的。 SimpleDateF…

《Effective C#》读书笔记-1.C# 语言习惯-2.使用运行时常量(readonly)而不是编译时常量(const)...

概念 编译时编译时顾名思义就是正在编译的时候。那啥叫编译呢&#xff1f;就是编译器帮你把源代码翻译成机器能识别的代码。(当然只是一般意义上这么说&#xff0c;实际上可能只是翻译成某个中间状态的语言。比如Java只有JVM识别的字节码&#xff0c;C#中只有CLR能识别的MSIL。…

MQ介绍

一&#xff1a;MQ介绍 1:异步 2:解耦 3:削峰 二&#xff1a;MQ优缺点 三&#xff1a;Kafka和RabbitMQ和RocketMQ比较

转:A/B测试:实现方法

概念&#xff1a;http://www.aliued.cn/2010/09/13/ab-testing-basic-concept.html 我们先来看一个图&#xff1a; &#xff08;注&#xff1a;感谢Algo提供本图。&#xff09; 上图展示了 A/B 测试的实现原理。从左到右&#xff0c;四条较粗的竖线代表了 A/B 测试中的四个关键…

mac修改host

1.打开终端 2.输入sudo vi /etc/hosts 3.输入密码 4.进入文件hosts&#xff0c;然后按“i”&#xff0c;进入编辑模式 5.把你的host添加到最后 6.esc推出编辑模式 7.输入:wq&#xff0c;保存退出

语法之知识点的改进(Func/Action)

上一章我们讲到关于面向对象思想上C#和JAVA之差别。笔者分别从面向对象的三大特性入手。而本章主要讲一些C#改进的知识点。在.NET Framework 2.0之后出现很多新的知识点。这些知识点更是让C#在写法上更加的多样性。有些写法还真的让笔者觉得很有不错。由于这一部分的知识更多是…

linux取字符串的前面,Linux Shell 截取字符串

shell中截取字符串的方法很多${var#*/}${var##*/}${var%/*}${var%%/*}${var:start:len}${var:start}${var:0-start:len}${var:0-start}下面用几个例子展示一下&#xff1a;1) 获得字符串的长度语法&#xff1a;${#var}示例代码&#xff1a;str"http://www.fengbohello.xin…

idea修改新的git提交地址

更换git地址步骤 1、点击VCS 2、点击Git 3、点击Remotes 点击框中链接即可在右边看到一个铅笔字样的按钮&#xff0c;即可看到如图所示弹窗 点击铅笔&#xff08;编辑&#xff09;&#xff0c;看到新的弹窗&#xff0c;链接已经被默认选中这时候粘贴新的git地址&#xff0c;点…

mac idea实现全局替换

点击Edit ----- Find ----- Replace in Path 例如要把项目中的cc替换为aa 点击Replace All

现代希腊语字母表

转载于:https://www.cnblogs.com/zhangzujin/p/6782532.html

SHA-1算法c语言实现

安全哈希算法&#xff08;Secure Hash Algorithm&#xff09;主要适用于数字签名标准 &#xff08;Digital Signature Standard DSS&#xff09;里面定义的数字签名算法&#xff08;Digital Signature Algorithm DSA&#xff09;。对于长度小于2^64位的消息。SHA1会产生一个160…

Mac安装RocketMQ和可视化控制台教程

1:下载: http://rocketmq.apache.org/docs/quick-start/, 直接下载源代码版本 2:使用maven进行源码编译: mvn -Prelease-all -DskipTests clean install -U 3:环境配置 找到已经安装好的 jdk 位置&#xff0c;通过命令&#xff1a;/usr/libexec/java_home 在.zshrc中加入JAVA…