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的结构:

Struts

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

Java+XML+MVC框架StrutsCX简介[转]相关推荐

  1. Java Spring MVC框架 VIII 之 Spring MVC拦截器

    Java Spring MVC框架 VIII 之 Spring MVC拦截器 Spring MVC拦截器 1.拦截器简介 拦截器是SpringMvc框架提供的功能 它可以在控制器方法运行之前或运行之后 ...

  2. Java Spring MVC框架 VII

    Java Spring MVC框架 VII Spring MVC小结 1.小结 ● 关于Spring MVC框架,你应该(1/5): – 理解Spring MVC框架的作用 – 接收请求,响应结果,处 ...

  3. Java字节码框架ASM简介

    Java字节码框架ASM简介 1. ASM概述 1.1 ASM简介 1.2 ASM提供API 1.3 ASM核心模块 2. ASM应用 2.1 ASM依赖 2.2 代码实现 2.3 测试验证 1. A ...

  4. 学写一个 Java Web MVC 框架(一)

    当前我们介绍的是一个简单的MVC,用8个类即实现完整Spring MVC核心功能,外加其他实用的小功能.它是怎么实现的呢?让我们来一探究竟! 源码在:https://gitee.com/sp42_ad ...

  5. 学写一个 Java Web MVC 框架(四)

    访问请求处理 当客户端发送一个请求,被自定义的过滤器MvcDispatcher拦截,解析请求地址和参数对象跳转到一个控制器的方法中,然后执行进行逻辑处理后返回响应内容给MvcDispatcher输出, ...

  6. java开发 mvc框架

    阅读前瞻:本文源于对javaweb相关技术和资料汇总,涉及大量javaweb基础技术诸如:Servlet运行原理.Get/Post请求的区别.jsp的基本原理和运行框架.jsp的9大隐含对象的使用.M ...

  7. 基于 Java 的 PHP 框架 —— Quercus 简介(转)

    简介 Quercus 是一个开源 PHP 5 引擎,它已经拥有了纯 Java 的完整实现.Quercus 文档指出,Quercus 在 Resin 应用服务器之上运行,利用了负载平衡.代理缓存等 Re ...

  8. Java Spring MVC框架搭建(一)

    环境准备 >>>>>>java JDK和tomcat,eclipse 1.创建项目 2.项目名称自定义,这边为demo 3.我们已经创建完一个动态网站的项目,还得下 ...

  9. java xml接口实例化_Spring简介及xml配置

    Java Web发展史 第一阶段:JavaBean+Servlet+Jsp逐步发展 第二阶段:面对EJB重量级框架带来的种种麻烦 第三阶段:SpringMVC/Struts+Spring+Hibern ...

最新文章

  1. linux的网络命令整理 更新中
  2. Crypto windows 安装
  3. python不支持以下哪种数据类型_Python 不支持以下哪种数据类型?
  4. SQL Server 限制IP登陆(登陆触发器运用)
  5. XGBoost相关知识-2
  6. FragmentActivity TopFragment
  7. 互联网大佬马老师于昨日教师节正式卸任,让位现任CEO张勇;华为发布新一代CloudLink视讯解决方案,普惠4K+AI;联通……...
  8. “嘲羊群众”词条视频惹怒粉丝 百度知道向张艺兴道歉...
  9. python编译成c代码_python如何调用c编译好可执行程序
  10. Unity3D切换场景之后光源失效(物体变暗)问题
  11. 腾讯云html5直播开发,腾讯云IM开发 直播 聊天室
  12. 下一代CDN如何与智能AI及物联网打通?
  13. 2023免费的电脑恢复丢失数据软件EasyRecovery
  14. eclipse下连接MYSQL教程
  15. Cookie和Post模拟登陆
  16. 设计模式(四)注册模式 解决:解决全局共享和交换对象
  17. Cesium 监听地图缩放
  18. 分布式任务调度框架和微服务的区别
  19. 你真正做到敏捷了吗?
  20. 为什么pLC工程师如此年轻,他们的经验毫无价值?

热门文章

  1. OpenCV-Python 中文教程(搬运)目录
  2. Fortran执行语句中的“双冒号” ::
  3. 跨域获取json电商数据
  4. 转大学毕业后拉开差距的原因
  5. 跨域(Cross-Domain) AJAX for IE8 and IE9
  6. python---重点(设计模式)
  7. UML学习——类图(三)
  8. 转载:说一下AI的前景吧
  9. DFS应用——遍历有向图+判断有向图是否有圈
  10. linux下 mysql 忘记root用户密码解决办法