|
锁定老贴子 主题:Jert开源项目讨论
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2006-09-12
我粗略的看了一遍Jert的源代码,十分赞叹Quake Wang的编程水平,我自己在编程水平上肯定是有所不及的,所以好好学习别人优秀的源代码是提高水平的捷径。
我认为Jert是一个特别好的Hibernate/Spring/Webwork/Sitemesh/FreeMarker整合的范例,特别是在Spring和Webwork的整合,Freemarker和Sitemesh,FreeMarker和Webwork JSP Tag的整合上都有很多亮点。此外在Hibernate的Criteria Count patch方面,分页方面,域对象接口设计方面都有亮点,其中最突出的还是webwork的运用,例如在权限验证拦截器,修改对象参数load拦截器,webwork的Spring autowire拦截器运用上特别出彩。个人认为是一个webwork学习的经典范例。 此外,对于采用Hibernate/Spring/Webwork架构开发软件的人来说,Jert也是一个非常好的示范,很多代码,配置可以直接拿过来改一下用在自己项目架构中。因此我想就jert的设计和编程开贴讨论讨论,那么我先来抛砖引玉: 1、Entity对象 Quake的设计中域对象有一个基类Entity,主键设定为Long型。对于这种设计,我个人认为这个Entity是多余的,如果是我,我会让所有域对象的主键类型为对象型(Long, Integer, String皆可),如果是对域对象抽象操作,那么我用java.io.Serializable接口即可统一表示。 2、EncodingFilter EncodingFilter是用来设定HTTP GET/POST字符串的字符集的,实际上我认为这也是多余的,因为只要在webwork.properties里面指定: webwork.i18n.encoding=UTF-8 的话,那么webwork的ServletDispatch就会做这个工作,参考ServletDispatch源代码第225行。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-09-12
在jert里面用的很多代码我都是从各个地方拷贝过来的,比如借鉴一些其他开源项目的代码,email list,论坛的讨论等等,大部分代码只是一些粘合剂,来组装这些优秀的开源lib,不见有多少高明的设计,这些代码,大家在日常开发过程中都可以积累很多。和我们使用的那些优秀lib比起来(xwork, sitemesh, hibernate)实在是算不了什么。
关于Robbin说的2个问题: 1. 主键设定为Long型的基类Entity只是为了可以少写一些代码,目的是为了偷懒,我很多Entity都extends它,只是为了少写几行代码。并不是如你所想的那样做一个统一的Entity抽象操作,在com.javaeye.core package里面是没有任何代码是和这个对象有关系的。 2. encoding的设置是最近才解决的: http://jira.opensymphony.com/browse/WW-698 我用的还是旧版本,所以加了一个简单的filter。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-09-12
我开发的想法是不要重复发明轮子,除非找不到一个合适的轮子,才去建造一个,所以里面用了很多的open source的lib:
WebWork/XWork Spring/Hibernate SiteMesh Freemarker Style (style.tigris.org) 比如,现在写report部分的动态参数的sql解析,准备就用ibatis的语法格式,直接用它Parser来处理。 另外顺便讨论一下:我手上有一个project template,在我们公司内,如果有新的项目要开始开发了,那么只需要运行一下ant new -Dproject=xxx就能够出来一个项目的骨架,和Appuse很相似,不过加了一些面向开发企业内部应用系统的功能,如Single Sign On,辅助开发的webtools等等。 我想按照这个想法: 把com.javaeye.core这个package独立出来,做成和appuse类似的一个project skelecton generator。 把com.javaeye.user独立出来,做成和osuser类似的一个lib。 把手上的webtools模块做成com.javaeye.webtools。 这样可以作为一个好的实践,来展示powered by open source。 建议?想法? |
|
| 返回顶楼 | |
|
最后更新时间:2006-09-12
我很赞成这样的想法,事实上我早就有类似的想法了,希望成立一个代码模版库,演示各种框架的使用,整合的案例,并且在这些框架基础上提供一些上层设施。我给这个项目起名OpenEye Project,CVS什么的早就搭建好了,只是一直闲置着。
http://cvs.javaeye.com/cgi-bin/viewcvs.cgi/?cvsroot=openeye 不如你把公用的库抽取出来放在OpenEye项目下面做为一个子项目来发展。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-09-12
上次看了一下openreport(webwork+hibernate+velocity),觉得不错。
不知功能上jert会做成什么样子,还没来的及看代码,不过偶会经常关注的。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-09-12
robbin说:
如果是对域对象抽象操作,那么我用java.io.Serializable接口即可统一表示。 这句话不是很理解唉,能不能解释一下? |
|
| 返回顶楼 | |
|
最后更新时间:2006-09-12
project skelecton generator,不错啊,关注……
|
|
| 返回顶楼 | |
|
最后更新时间:2006-09-12
似乎没有什么说明文档.
部署后不知道用什么用户和密码登录. |
|
| 返回顶楼 | |
|
最后更新时间:2006-09-12
jert项目处在刚刚开始开发的阶段,这里有一个简单的说明:
http://forum.javaeye.com/viewtopic.php?p=53346#53346 |
|
| 返回顶楼 | |
|
最后更新时间:2006-09-12
Quake Wang 写道 2. encoding的设置是最近才解决的:
http://jira.opensymphony.com/browse/WW-698 我用的还是旧版本,所以加了一个简单的filter。 由此可以看出一个问题,这个appSkeleton会要不断的check不同版本的“轮子”,换句话说,也需要定义一个基线,针对指定版本的“轮子”做完之后release,然后再有下一个版本的。 同时应该还要开发一些改版本之上的一些应用了:) |
|
| 返回顶楼 | |














