没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|其它|编辑:郝浩|2007-09-06 09:54:31.000|阅读 839 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
AppFuse 是一个集成了当前最流行的 Web 应用框架的一个更高层次的 Web 开发框架,也可以说是一个 Web 开发基础平台,它与它所集成的各种框架相比,它提供了一部分所有 Web 系统开发过程中都需要开发的一些功能,如登陆、用户密码加密,用户管理、根据不同的用户可以展现不同的菜单,可以自动生成40%-60%左右的代码,自带了默认的一些在 CSS 中设定的样式,使用这些样式能很快的改变整个系统的外观,还有自动化测试的功能。
它最大的价值就是为我们提供了一个 Web 开发的新的方式和思路,尽管这些技术在国外都已进很流行了,但在国内能够将 Hibernate、Struts、Spring、DBUnit、Ant、Log4J、Struts Menu、Xdoclet、SiteMesh、Velocity、JUnit、JSTL、WebWork 这些技术集成到一个框架中的还不多见,所以即使不使用它的全部功能,它也给我们提供了一个很好的借鉴、学习的机会。
通过关注 AppFuse,我们可以看到目前国外的主流开发都使用了哪些技术,开发方式是什么样的,可能达到什么样的结果,而在以前,是很少能够看到这样完整的例子的。
AppFuse 的另一个启示是:我们可以依靠开源软件的功能降低开发成本,而且可以阅读开源软件的代码提高所在团队的整体实力。
AppFuse 的作者 matt raible 是当今开源世界一个比较活跃的开发者,它是 AppFuse、Struts Menu 的作者,也是 XDoclet、DisplayTag 等一些著名开源项目的积极参与者,《Hibernate In Action》的作者就在感谢的名单里面提到他,XDoclet 的下载版本中所带的 Hibernate 标签部分的例子就是他写的,他还是2004年 Apache 技术年会的主讲人之一。
但是通过2个月的实际学习和使用,我也遇到一系列的问题,因为 AppFuse 是将其他的一些类库或者框架集成在一起的,集成的技术众多,而且有一些技术在国内甚至很少有人知道,资料也比较少,所以虽然作者经过了一些测试,但都是基于英文编码的,而对于中文编码来说,还潜在的存在着一些问题,虽然不是 AppFuse 的问题,但却降低了开发速度,下面是我在开发过程中遇到过的问题:
一.Struts
1. AppFuse 中默认的 MVC 框架是 Struts,而且使用的是 LookupDispatchAction,并且使用的是按钮(button),在 XP 下用IE浏览效果还可以,但如果在2000或者98下,就使外观很难看,而且当时我还遇到一个问题:如果按钮显示中文,则在 DisplayTag 中翻页失灵,而且报错,后来我把 BaseAction 的相关方法改变了,才可以使用,因为国内的客户都比较重视界面,所以后来我将那些按钮都改成图片了,当然也要添加一些方法了,有点麻烦!
2. Struts 中的标签如今推荐使用的只有 html 部分的标签了,其他的标签或者可以使用JSTL替代,或者已经不推荐使用了,而且 AppFuse 中推荐使用 JSTL,而 JSTL 和 struts 的标签的联合使用时,需要的不是<html:标签>,而是<html-el:标签>,这个问题曾经困扰了我整整2天。
3. Struts 的 Validation 的校验规则并不完善,比如如果使用客户端的 javascript 校验,则在邮箱中输入汉字根本校验不出来,到了服务器端报错。
4. 最严重的问题是 AppFuse 生成的 Struts 的 validation.xml 文件中有许多多余的“.”,如果你去掉了,常常在执行 ant的deploy 任务时又恢复原样。这样是提交表单的时候经常会报 javascript 的脚本错误或者缺少对象或者缺少 value,所以我会手工的修改这个文件,然后把修改后的文件备份,当重新生成有错误的文件时,我会用备份的没有错误的文件去覆盖。
5. Struts 的 validatioin 对于使用同一个 FormBean 的 Action 的校验方式比较复杂。(待解决)。
二.Hibernate
1. Hibernate 是现在受到越来越多的人推崇的一个 ORM 工具(框架、类库),它将我们从繁琐的使用 JDBC 的开发过程中解放出来,但同时也带来了新的问题,如学习曲线,执行效率,数据库设计优化,还有最重要的灵活性。Hibernate 不是一个很容易上手的东西,要完全驾驭它还需要读很多资料,但好的资料却很少。
2. 使用 Xdoclet 可以很方便的生成 Hibernate 中的持久类的配置文件(*.hbm.xml),但对一些特殊的映射却无能为力,如使用序列的id生成规则,序列的名字没有地方写,所以也只好先利用它生成主要的内容,然后手工修改。
3. 同样还是 id 的生成策略问题,如果使用序列、hilo 等需要一些数据库机制支持的策略时,schemaExport 并不能自动生成序列或者保存当前id的表,这项工作仍然要手工解决。
4. Hibernate 中提供了几种关联,一对一、一对多、多对多,但对于怎样调整效率却没有一个很明确的提示,还要根据情况判定,这就带来和一些弹性的设计。
5. Hibernate 中可以选择的操作数据库的方式有3种,其中 HQL 功能最强大,但有些功能使用标准查询可能会更方便,但会有一些限制,所以虽然它很灵活,但易用性不如 JDBC 好。
三.Spring
在 AppFuse 的过程中,Spring 完全隐藏在幕后,除了一些配置外,几乎感觉不到它的存在,所以我在使用它的过程中并没有遇到什么麻烦,这里只是简单的介绍一下它在 AppFuse 中起到的作用。
1. Spring 在 AppFuse 中起到的主要作用是对 Hibernate 的 Session 和事务的管理,利用 Spring 封装的 Hibernate 模板类,我们大大地减少了实现 DAO 的代码行数。
2. Spring 还起到了连接映射文件和类之间的关联,及接口和实现类之间的关联,这些都依赖于Spring 的 IoC 的机制的实现。
3. 对于字符进行编码和解码部分用到了 Spring 自带的 Filter,只需要在配置文件中配置就好了。
四.SiteMesh
SiteMesh 是一个基于 Decorator 模式的技术,它可以修饰返回的网页文件,它的工作方式受到越来越多的人的推崇,这点从 Manning 出版的一些技术书籍中可以看出来。
我在使用 SiteMesh 的过程中并不顺利,我参考了《Java Open Source Programming》,这本书中说 SiteMesh 在默认的情况下不对下载文件进行装饰,但我在下载文件时发现,我的文件内容被丢弃了,取而代之的是 SiteMesh 的模板的内容,后来我通过修改 SiteMesh 的配置文件解决了这个问题,但感觉还有一些不太清楚的地方需要学习。
五.DisplayTag
DisplayTag 是一个优秀的显示内容的标签,从 SourceForge 的访问量来看,它是很活跃的项目,仅次于 Ant、Hibernate、Xdoclet 等几个著名的项目,我总结,它的主要功能有4项:显示、分页、排序、将显示的数据写入指定类型的文件中,然后下载。
1. 据我使用的情况看,我只使用了分页和显示的功能,因为当时我没有很好的解决中文编码的问题,所以排序会有问题,直到昨天,我在朋友的帮助下解决了这个问题,至此我可以放心使用的功能又增加了排序(我昨天简单的测试了一下是可以的)。
2. 但对于将显示的内容生成到一个指定格式的文件中的功能却有着很多缺陷,如:
l 生成的文件中只有显示的数据,那些没有显示在界面上的的数据,则不会被写到文件中。
l 如果修改了 DisplayTag 的显示的内容,比如添加一列,在这列中的内容不是字符,而是HTML的标签,则生成的文件只有这些HTML标签,而没有数据。
l 即使 DisplayTag 中没有我们定制的HTML脚本,生成的文件偶尔也有问题,比如:它会把“
l DisplayTag 生成的 Excel 文件兼容性不好,有时在 Excel2003中不能正常打开,或者在XP下打开报错。
后来,我看了作者写的《Spring Live》,书中说如果想实现稳定的Excel,推荐使用 POI,于是我使用 POI 生成 Excel,稳定性和兼容性都不错。
六.DBUnit
DBUnit 是一个可以被Ant集成的向数据库中添加数据和备份数据的一个类库,配置很方便,因为AppFuse 已经集成好了,所以使用也很容易。
但是如果你使用 EditPlus 之类的工具手工修改了 AppFuse 生成的内容,则执行 Ant 的setup、setup-db 或者 deploy 的任务时,常常报错,说无效的格式,这是因为这个被手工修改的文件再次被 AppFuse 执行后,它的第一行的文件声明的前几个字母是无效的,是因为本地的字符集编码的原因而引起了乱码,如果把这几个无效的字母去掉,问题就解决了。
七.Struts Menu
Struts Menu 也是 AppFuse 的作者开发的一个开源软件,它可以根据配置文件读取当前用户可以使用的功能菜单,这个功能是我一直以来都想要的,我也找到了一些代码,但实现的都不如这个完善,没什么好说的,使用简单,配置容易,很好的解决了我的问题。
问题是我只使用了 AppFuse 提供的2个角色,对于多个角色的实验我还没有做。
八.XDoclet
在 AppFuse 中,使用 Xdoclet 生成了几乎一切的配置文件:Struts-config.xml、web.xml、validation.xml、*.hbm.xml 等文件,如果使用 AppGen 的话,还会生成更多的文件,这一切都是使用 Xdoclet 实现的。
问题是我在 Struts 部分提到的,生成的 Validation.xml 文件中会多生成一个“.”,另外在生成资源文件时也会多生成一个“.”,目前我没有很好的阅读这段代码,不知道是不是 Xdoclet 的问题。
九.Ant
Ant 并没有什么问题,但在执行作者写的 Ant 任务的时候,有一些任务不能正常执行,比如,运行模拟对象测试的任务,作者也在1.7版本的修复列表中提到以前版本有些ant任务不能执行,在1.7中修改了一些 ant 任务,使他们能够正常的执行了。
实际上,我们如果使用 AppGen 进行开发的话,使用的任务一般不超过8个。
十.JSTL
JSTL 是个好东西,我常用的有<c:>和<fmt:>部分的标签,但是如果使用 JSTL 进行逻辑判断,我并没有感觉比使用 JSP 的代码块优雅多少。另外,熟悉JSTL也需要一段时间,我就经历了面对着 JSP 页面不知道该怎么写JSTL语法的困境。当然,AppFuse 中使用的基本都是 JSTL,包括向 DisplayTag 传递显示的数据,使用的都是 JSTL 语法,这方面的资料挺多,我参考的是电子工业出版社出的《JSP2.0技术》,说的很详细。
十一.Tomcat
你也许会说:“Tomcat 就不用说了吧?”,是的,Tomcat 一般都会使用,但是―――――――――――――Tomcat5和 Tomcat4.X 对于中文编码使用了不同的机制,这个问题困扰了我好久,我解决了页面上写入汉字显示乱码的问题,我也曾经以为 DisplayTag 对汉字不能排序,也不能正常分页是因为 DisplayTag 的开发者都是老外,是因为他们没有考虑中文的关系的原因。
十二.JavaScript
JavaScript 简单易学,但想运用自如就不太容易了。AppFuse 中嵌入了几个 js 文件,里面包含了许多函数,值得我们好好的研究一下,比如,如果有一个必填字段没有填写,AppFuse 会自动的聚焦在那个 input 上,类似的小技巧有很多,你可以自己去翻看。
但 AppFuse 自带的 JavaScript 脚本有一个 Bug,就是当 DisplatyTag 中没有可以显示的数据时,你用鼠标单击,它会报 JavaScript 错误,你仔细研究一下 function highlightTableRows(tableId) 就知道了:我的解决办法是在 location.href = link.getAttribute("href");前面添加一行判断:if (link != null)。
十三.资源文件国际化
对于 Struts 和 DisplayTag 都涉及到资源文件国际化 AppFuse
经过2个多月的学习,我感觉这个框架非常不错,它为我以后的项目开发指出了一个新的方向,但如果想很熟练的使用这个框架进行开发,至少要对以下几种技术比较熟练:Struts(或者 WebWork、Spring及其他的已经整合进来的 MVC 框架)、Hibernate(或者 ibatis)、JSTL,当然其他的技术至少也要知道一点,否则遇到问题都不知道出在哪里。
这个框架的优点是:如果熟悉了开发流程,可以大幅度的提高开发速度,如果业务不是很复杂,使用AppGen 可以生成60%左右的代码,而且程序可维护性好,因为作者使用了多个设计模式对各个层面进行了封装,所以不同的模块代码风格出奇的一致,有利于开发人员快速上手,也有利于接收其他开发人员遗留的代码。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:JavaEye接DevExpress原厂商通知,将于近日上调旗下产品授权价格,现在下单客户可享受优惠报价!
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号