目录

J2EE开发之常用开源框架介绍

J2EE开发之常用开源框架介绍

主要就我所了解的 J2EE

开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发。主要还是以

Spring

为核心 ,也总结了一些以前

web

开发常用的开源工具和开源类库

1 持久层:

1 ) Hibernate

这个不用介绍了,用的很频繁,用的比较多的是映射,包括继承映射和父子表映射

对于 DAO

在这里介绍个 在它基础上开发的包

bba96

,目前最新版本是

bba96 2.0

它对

Hibernate

进行了封装, 查询功能包括执行

hsql

或者

sql

查询

/

更新的方法,如果你要多层次逻辑的条件查询可以自己组装

QueryObject.

可以参考它做

HibernateDAO.

也可以直接利用它

2 ) iBATIS

另一个 ORM

工具,

Apache

的,没有

Hibernate

那么集成,自由度比较大

2 : SpringMVC

原理说明和快速入门:

配置文件为:

Spring

的配置文件默认为

WEB-INF/xxxx-servelet.xm

其中

xxx

web.xml

org.springframework.web.servlet.DispatcherServlet

servlet-name.

Action 分发:

Spring

将按照配置文件定义的

URL

Mapping

到具体

Controller

类,再根据

URL

里的

action= xxx

或其他参数,利用反射调用

Controller

里对应的

Action

方法。

输入数据绑定:

Spring

提供

Binder

通过名字的一一对应反射绑定

Pojo

,也可以直接从

request.getParameter

()取数据。

输入数据验证

Sping

提供了

Validator

接口当然还可以使用开源的

Commons-Validaor

支持最好

Interceptor (拦截器)

Spring

的拦截器提供接口需要自己编写,在这点不如

WebWork

做的好。全面

(这里提一下 WebWork

Struts

的区别最主要的区别在于

WebWork

在建立一个

Action

时是新

New

一个对象而

Struts

SingleMoule

所有的都继承它的一个

Action

,所以根据项目需要合适的选择。)

3 : View 层

1 ) 标签库: JSP2.0/JSTL

由于 Webwork

Spring

的标签确实很有限,一般

view

层用

JSTL

标签,而且据说

JSTL

设计很好速度是所有标签中最快的使用起来也很简单

2 ) 富客户端: DOJO Widgets , YUI ( YahooUI ), FCKEditor , Coolest 日历控件

Dojo

主要提供

Tree

Tab

等富客户端控件,可以用其进行辅助客户端开发

YahooUI

DOJO

一样它有自己的一套

javascript

调试控制台,主要支持

ajax

开发也有很多

Tree

Table

Menu

等富客户端控件

FCKEditor

最流行的文本编辑器

Coolest

日历控件 目前很多日历控件可用,集成在项目中也比较简单,这个只是其中的一个,界面不错的说……

3 ) JavaScript : Prototype.js

Prototype.js

作为

javascript

的成功的开源框架,封装了很多好用的功能,通过它很容易编写

AJAX

应用,现在

AJAX

技术逐渐成熟,框架资源比较丰富,比如

YUI

DWR

等等,也是因为

JavaScript

没有合适的调试工具,所以没有必要从零开始编写

AJAX

应用,个人认为多用一些成熟的

Ajax

框架实现无刷新更新页面是不错的选择。

4 )表格控件: Display Tag , Extreme Table

这两个的功能差不多,都是 View

层表格的生成,界面也比较相向,可以 导出

Excel

Pdf

,对

Spring

支持很容易。

相比较而言比较推荐 ExtremeTable

,它的设计很好功能上比

DisplayTag

多一些,支持

Ajax

,封装了一些拦截器,而且最方面的是在主页

wiki

中有详细的中文使用文档。

5 ): OSCache

OSCache

OpenSymphony

组织提供的一个

J2EE

架构中

Web

应用层的缓存技术实现组件,

Cache

是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在

Web

应用中,通过缓存页面的输出结果,可以很显著的改善系统的稳定性和运行性能。

它主要用在处理短时间或一定时间内一些数据或页面不会发生变化,或将一些不变的统计报表,缓冲在内存,可以充分的减轻服务器的压力,防治负载平衡,快速重启服务器(通过硬盘缓存)。

6 ) SiteMesh

sitemesh

应用

Decorator

模式主要用于提高页面的可维护性和复用性,其原理是用

Filter

截取

request

response

,把页面组件

head

content

banner

结合为一个完整的视图。通常我们都是用

include

标签在每个

jsp

页面中来不断的包含各种

header

stylesheet

scripts and footer

,现在,在

sitemesh

的帮助下,我们删掉他们轻松达到复合视图模式。

Sitemesh

也是

OpenSymphony

的一个项目现在最近的版本是

2.2

,目前

OpenSymphony

自从

04

年就没有更新的版本了……感觉它还是比较有创新的一种页面组装方式,

OpenSymphony

开源组织的代码一般写的比较漂亮,可以改其源代码对自己的项目进行适配。

测试发现 Sitemesh

还存在一些问题,比如中文问题,它的默认编码是

iso-8859-1

在使用时候需要做一些改动。

7 ) CSS , XHTML

这个不用说了,遵循 W3C

标准的

web

页面开发。

8 )分页标签: pager-taglib 组件

Pager-taglib

是一套分页标签库,可以灵活地实现多种不同风格的分页导航页面,并且可以很好的与服务器分页逻辑分离。使用起来也比较简单。

9 ) Form : Jodd Form taglib

Jodd Form taglib

使用比较简单,只要把html 的头尾以form包住,就会自动绑定 mybean

, 自动绑定

mybean

的所有同名属性到普通

html

标记

input

selectbox

checkbox

radiobox

……在这些

input

框里不用再写任何代码…

10 ) Ajax : DWR

J2EE

应用最常用的

ajax

框架

11 )报表 图表

Eclipse BIRT

功能比较强大,也很庞大……好几十

M

,一般没有特别需求或别的图表设计软件可以解决的不用它

JasperReports+ iReport

是一个基于

Java

的开源报表工具,它可以在

Java

环境下像其它

IDE

报表工具一样来制作报表。

JasperReports

支持

PDF

HTML

XLS

CSV

XML

文件输出格式。

JasperReports

是当前

Java

开发者最常用的报表工具。

JFreeChart

主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。

琴棋报表 ,国产的……重点推荐,适合中国的情况,开放源代码,使用完全免费。纯 JAVA

开发,适用多种系统平台。特别适合

B/S

结构的系统。官方网站有其优点介绍,看来用它还是不错的选择,最重要的是支持国产呵呵

4 :权限控制: Acegi

Acegi

Spring Framework

下最成熟的安全系统 ,它提供了强大灵活的企业级安全服务,如完善的认证和授权机制,

Http

资源访问控制,

Method

调用访问控制等等,支持

CAS

(耶鲁大学的单点登陆技术,这个单点登陆方案比较出名。我也进行过配置使用,可以根据项目需要,如果用户分布在不同的地方不同的系统通用一套登陆口令可以用它进行解决,一般注册机登陆机就是这样解决的)

Acegi

只是于

Spring

结合最好的安全框架,功能比较强大,当然还有一些其他的安全框架,这里列举一些比较流行的是我从网上找到的,使用方法看其官方文档把…

JAAS

Seraph

jSai - Servlet Security

Gabriel

JOSSO

Kasai

jPAM

OpenSAML

都是些安全控制的框架……真够多的呵呵

5 :全文检索

1 ) Lucene

Lucene

是一套全文索引接口,可以通过它将数据进行倒排文件处理加入索引文件,它的索引速度和查询速度是相当快的,查询百万级数据毫秒级出结果,现在最火的

Apache

开源项目,版本更新速度很快现在已经到了

2.0

,每个版本更新的都比较大,目前用的最多的版本应该是

1.4.3

,但它有个不太方面的地方单个索引文件有

2G

文件限制,现在

2.0

版本没有这个限制,我研究的比较多,它的扩展性比较好,可以很方面的扩充其分词接口和查询接口。

基于它的开发的系统很多,比如最常用的 Eclipse

的搜索功能,还有一些开源的软件比如

Compass

Nutch

Lius

,还有我最近做的

InSearch

(企业级

FTP

文件网页搜索)

6 :公共 Util 类

主要是

Jakarta-Commons

类库,其中最常用得是以下几个类库

1 ) Jakarta-Commons-Language

最常用得类是 StringUtils

类,提供了使用的字符串处理的常用方法效率比较高

2 ) Jakarta-Commons-Beantuils

主要用 Beantuils

能够获得反射函数封装及对嵌套属性,

map

array

型属性的读取。

3 ) Jakarta-Commons-Collections

里面有很多 Utils

方法

7 日志管理

Log4J

任务是日志记录,分为 Info

Warn

error

几个层次可以更好的调试程序

8 开源的 J2EE 框架

1 ) Appfuse

Appfuse

Matt Raible

开发的一个指导性的入门级

J2EE

框架, 它对如何集成流行的

Spring

Hibernate

iBatis

Struts

Xdcolet

JUnit

等基础框架给出了示范。 在持久层,

AppFuse

采用了

Hibernate O/R

映射工具;在容器方面,它采用了

Spring

,用户可以自由选择

Struts

Spring/MVC

Webwork

JSF

这几个

Web

框架。

2 ) SpringSide

。 SpringSide

较完整的演示了企业应用的各个方面,是一个电子商务网站的应用

SpringSide

也大量参考了

Appfuse

中的优秀经验。最重要的是它是国内的一个开源项目,可以了解到国内现在的一些实际技术动态和方向很有指导意义…

9 :模版 Template

主要有

Veloctiy

Freemarker

模板用 Servlet

提供的数据动态地生成

HTML.

编译器速度快,输出接近静态

HTML

页面的速度。

10 :工作流

我所知道比较出名的主要有 JBpm Shark Osworkflow

,由于对它没有过多的研究所以还不是很清楚之间有什么区别。

项目管理软件

dotProject

:是一个基于

LAMP

的开源项目管理软件。最出名的项目管理软件

JIRA

: 项目计划,任务安排,错误管理

Bugzilla

:提交和管理

bug

,和

eclipse

集成,可以通过安装

MyEclipse

配置一下即可使用

BugFree

借鉴微软公司软件研发理念、免费开放源代码、基于

Web

的精简版

Bug

管理

CVS

:这个就不介绍了都在用。

SVN

SubVersion

已逐渐超越

CVS

,更适应于

JavaEE

的项目。

Apache

用了它很久后,

Sourceforge

刚刚推出

SVN

的支持。

测试用例 :主要 JUnit

单元测试,编写

TestCase

Spring

也对

Junit

做了很好的支持