主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 {ibu0
r}&&e BY
f
1持久层: C{}PO u
1)Hibernate bJetqF6n
这个不用介绍了,用的很频繁,用的比较多的是映射,包括继承映射和父子表映射 X5YOxMq
对于DAO在这里介绍个在它基础上开发的包bba96,目前最新版本是bba96 2.0它对Hibernate进行了封装, 查询功能包括执行hsql或者sql查询/更新的方法,如果你要多层次逻辑的条件查询可以自己组装QueryObject.可以参考它做HibernateDAO.也可以直接利用它 t$(#$Z,RS
2) iBATIS _\KFMe=PV
另一个ORM工具,Apache的,没有Hibernate那么集成,自由度比较大 ]y6{um8"
e,epKtL
L~-/'+
2:SpringMVC pDZewb&cA
原理说明和快速入门: >STthPO
配置文件为: 7bk77`qWr
Spring的配置文件默认为WEB-INF/xxxx-servelet.xm其中xxx为web.xml中org.springframework.web.servlet.DispatcherServlet的servlet-name。 uDie205
Action分发: /M%>M]
Spring将按照配置文件定义的URL,Mapping到具体Controller类,再根据URL里的action= xxx或其他参数,利用反射调用Controller里对应的Action方法。 ,IyQmN y
输入数据绑定: (ne[a2%>
Spring提供Binder 通过名字的一一对应反射绑定Pojo,也可以直接从request.getParameter()取数据。 a51e~mg Z`
输入数据验证 !Pw*p*z
Sping 提供了Validator接口当然还可以使用开源的Commons-Validaor支持最好 |dLr #+'az
Interceptor(拦截器) wYf\!]}'
Spring的拦截器提供接口需要自己编写,在这点不如WebWork做的好.全面 . 2$J-<O
(这里提一下WebWork和Struts的区别最主要的区别在于WebWork在建立一个Action时是新New一个对象而Struts是SingleMoule所有的都继承它的一个Action,所以根据项目需要合适的选择.) 0t?o6e
7JGc9K+Av
Ny2
Z
<TW
3:View层 <4LJ#Fx
1) 标签库:JSP2.0/JSTL ^T!Zz"/:
由于Webwork或Spring的标签确实很有限,一般view层用JSTL标签,而且据说JSTL设计很好速度是所有标签中最快的使用起来也很简单 ,_u7@Ix
salC4z3
2) 富客户端:DOJO Widgets, YUI(YahooUI),FCKEditor, Coolest日历控件 ekvs3a^
Dojo主要提供Tree, Tab等富客户端控件,可以用其进行辅助客户端开发 0TmEa59P
YahooUI和DOJO一样它有自己的一套javascript调试控制台,主要支持ajax开发也有很多Tree,Table,Menu等富客户端控件 ;:D-}t;
FCKEditor 最流行的文本编辑器 ;.uYWP|9
Coolest日历控件 目前很多日历控件可用,集成在项目中也比较简单,这个只是其中的一个,界面不错的说.. #+1|O;PB#
-n.m "O3
3) JavaScript:Prototype.js yuZLsH
Prototype.js作为javascript的成功的开源框架,封装了很多好用的功能,通过它很容易编写AJAX应用,现在AJAX技术逐渐成熟,框架资源比较丰富,比如YUI,DWR等等,也是因为JavaScript没有合适的调试工具,所以没有必要从零开始编写AJAX应用,个人认为多用一些成熟的Ajax框架实现无刷新更新页面是不错的选择. u -t=M]
-}%J3j|R:
4)表格控件:Display Tag ,Extreme Table J)YlG*
这两个的功能差不多,都是View层表格的生成,界面也比较相向,可以导出Excel,Pdf,对Spring支持很容易. FL'}~il
相比较而言比较推荐ExtremeTable,它的设计很好功能上比DisplayTag多一些,支持Ajax,封装了一些拦截器,而且最方面的是在主页wiki中有详细的中文使用文档. 9$\s
v5
g8N"-j&@
5):OSCache ksC_F8Q+
OSCache是OpenSymphony组织提供的一个J2EE架构中Web应用层的缓存技术实现组件,Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的输出结果,可以很显著的改善系统的稳定性和运行性能。 aO(PVS|P
它主要用在处理短时间或一定时间内一些数据或页面不会发生变化,或将一些不变的统计报表,缓冲在内存,可以充分的减轻服务器的压力,防治负载平衡,快速重启服务器(通过硬盘缓存). D+3?p
xT"V9t[f
6)SiteMesh QCW4gIp
sitemesh应用Decorator模式主要用于提高页面的可维护性和复用性,其原理是用Filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and footer,现在,在sitemesh的帮助下,我们删掉他们轻松达到复合视图模式. 9>&zOITTaL
Sitemesh也是 OpenSymphony的一个项目现在最近的版本是2.2,目前OpenSymphony自从04年就没有更新的版本了..感觉它还是比较有创新的一种页面组装方式, OpenSymphony开源组织的代码一般写的比较漂亮,可以改其源代码对自己的项目进行适配. bI &<L O
测试发现Sitemesh还存在一些问题,比如中文问题,它的默认编码是iso-8859-1在使用时候需要做一些改动. Nu6NyYs
OM[MRZEh G
7)CSS,XHTML AB'+6QU9k
这个不用说了,遵循W3C标准的web页面开发. S/XU4i:aV
#@B"E2F
8)分页标签: pager-taglib组件 F,Q;sq
Pager-taglib 是一套分页标签库,可以灵活地实现多种不同风格的分页导航页面,并且可以很好的与服务器分页逻辑分离.使用起来也比较简单. btuG%D{a^
oh8:1E,I
9)Form: Jodd Form taglib m`-);y
Jodd Form taglib使用比较简单,只要把form的头尾以包住 BuV71/Vb{Q
就会自动绑定mybean, 自动绑定mybean的所有同名属性到普通html标记input, selectbox, checkbox,radiobox.....在这些input框里不用再写任何代码… P`lv_oV
$(9QnH1KY
10)Ajax:DWR .2fvRN92
J2EE应用最常用的ajax框架 7<xnE]jdq
}qiZ%cT.G
11)报表 图表 %XGm\p
Eclipse BIRT功能比较强大,也很庞大..好几十M,一般没有特别需求或别的图表设计软件可以解决的不用它 5)RZJrN]
JasperReports+ iReport是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。 !d N[9}
JFreeChart主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。 ~A=zjkm
琴棋报表,国产的..重点推荐,适合中国的情况,开放源代码,使用完全免费。纯JAVA开发,适用多种系统平台。特别适合B/S结构的系统。官方网站有其优点介绍,看来用它还是不错的选择,最重要的是支持国产呵呵 P~trxp=k
>}V?GK36
4:权限控制: Acegi m=01V5_
Acegi是Spring Framework 下最成熟的安全系统,它提供了强大灵活的企业级安全服务,如完善的认证和授权机制,Http资源访问控制,Method 调用访问控制等等,支持CAS 3%+~"4&
(耶鲁大学的单点登陆技术,这个单点登陆方案比较出名.我也进行过配置使用,可以根据项目需要,如果用户分布在不同的地方不同的系统通用一套登陆口令可以用它进行解决,一般注册机登陆机就是这样解决的) a&_