`
chenqian
  • 浏览: 79484 次
  • 性别: Icon_minigender_1
  • 来自: 湘潭
社区版块
存档分类
最新评论

常用的开源项目

阅读更多

本文主要以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使用比较简单,只要把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文件网页搜索) < form> < /form>


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做了很好的支持


后记:

以Spring为主的应用开发可选用的组件中间件真是眼花缭乱,所以针对不同的项目需求可以利用不同的开源产品解决,比如用Spring+Hibernate/ iBATIS或Spring+WebWork+Hibernate/ iBATIS或Spring+Struts+Hibernate/ iBATIS,合理的框架设计和代码复用设计对项目开发效率和程序性能有很大的提高,也有利于后期的维护。
分享到:
评论

相关推荐

    J2EE常用开源项目

    以下是一些常用开源项目的详细介绍: 1. **持久层框架**: - **Hibernate**:这是一个强大的ORM(对象关系映射)框架,允许开发者使用面向对象的方式来操作数据库。它提供了对象的持久化、事务管理和查询语言HQL。...

    J2EE开发之常用开源项目介绍

    本文将详细介绍一些基于J2EE开发的常用开源项目,以及它们在实际开发中的作用。 1. **Spring框架**:Spring是Java平台上的一个全面企业级应用框架,它提供了依赖注入(DI)、面向切面编程(AOP)、数据访问/集成、...

    开源项目-Xeoncross-macappshell.zip

    【开源项目-Xeoncross-macappshell.zip】是一个面向Mac OS X操作系统的开源项目,它的主要功能是通过一个简单的bash脚本创建一个`.app`包装器,使得Go语言编译的程序可以在Mac上以标准的Mac应用形式运行。...

    java开源web项目

    "liugh-openResources"这个文件名可能指的是一个开源项目或资源库,其中包含了与Java Web相关的各种组件、文档、示例代码和配置文件。这个压缩包可能包含了一个完整的Web项目实例,或者是一些用于教学或参考的开源...

    开源搜索网站开源搜索网站

    本文将深入探讨开源搜索网站的相关知识点,包括它们的工作原理、主要优势、常用开源项目以及如何利用这些项目搭建自己的搜索系统。 首先,开源搜索网站的核心在于搜索引擎的工作原理。搜索引擎通常包括以下几个关键...

    20个Java开源项目源码下载

    在提供的"20个Java开源项目源码下载"压缩包中,包含了多个知名的Java项目,这些项目可以帮助开发者深入理解Java编程、软件架构以及特定领域的最佳实践。以下是这些项目的简要介绍: 1. **ExoPlayer-r2.18.5.zip**:...

    10个Android的开源项目

    在Android开发领域,开源项目是学习和提升技能的重要资源。以下是对这10个Android开源项目的详细介绍,它们将为你的Android编程之路提供宝贵的参考和学习材料。 1. **UI设计和组件库** - 一些开源项目专注于提供...

    常用开源软件说明手册

    ### 常用开源软件说明手册 #### 引言 随着信息技术的发展,开源软件因其免费、可定制化等优势,在各个领域得到了广泛的应用。本文档旨在帮助读者对现有的开源软件有一个初步了解,涵盖了一些常见的开源软件及其应用...

    Python爬虫开源项目代码

    Python爬虫开源项目代码是学习和实践Python网络爬虫技术的重要资源。这些开源项目提供了丰富的示例和实践经验,涵盖了各种爬虫技术的应用场景,对于初学者和进阶者都有很大的帮助。下面将详细阐述Python爬虫相关的...

    开源项目代码

    在本文中,我们将深入探讨开源项目代码的相关知识点,包括其定义、优势、参与方式、常用平台以及如何有效地利用和贡献开源代码。 开源项目代码是指允许任何人查看、使用、修改和分发的计算机程序代码。这种代码通常...

    Java项目开源源码.docx

    这些开源项目涵盖了Java开发的多个领域,从数据库连接池到微服务、从区块链到代码生成工具,提供了广泛的功能选择。对于开发者来说,研究这些源码不仅可以提升技术能力,还可以借鉴其设计思路,应用于自己的项目中。...

    android开源项目

    【标题】"Android开源项目"涉及的是Android操作系统平台上的开源代码项目,这通常指的是开发者公开分享的源代码,供其他开发者学习、使用或改进。在Android开发领域,开源项目不仅有助于提升开发效率,还能促进技术...

    一些Github 上超实用的 Java 项目集合(开源项目集合)

    在这个"一些Github上超实用的Java项目集合"中,我们发现了一个汇聚了众多高质量Java开源项目的资源库。这个集合旨在帮助开发者们发现并学习优秀的Java实践,提高他们的编程技能,同时也为寻找项目灵感或实际开发需求...

    Android中常用第三方开源项目(汇总)

    主要是GitHub上常用的第三方开源项目的Demo汇总,里面带有各个项目的实现过程以及常用方法。 相应的博客地址为:https://blog.csdn.net/lpCrazyBoy/article/details/83748934

    Google 开源项目风格指南.pdf

    作为行业的领导者,Google制定了一套自己的开源项目风格指南,这不仅是对开源项目管理的贡献,同时也是对全球软件工程实践标准的提升。一个统一的风格指南有助于提升代码的可读性,简化代码审查过程,降低新手上手的...

    开源项目-beme-abide.zip

    开源项目在IT行业中扮演着至关重要的角色,它们推动了技术的发展和创新,为开发者提供了丰富的资源和工具。"beme-abide.zip" 是一个这样的开源项目,它的核心是 "abide",一个专为API(应用程序接口)设计的测试工具...

    开源项目-Microsoft-vscode.zip

    这个名为“开源项目-Microsoft-vscode.zip”的压缩包包含的是VSCode的源代码,允许开发者深入研究其内部工作原理,甚至对其进行自定义或扩展。 **开源特性**: VSCode遵循MIT许可证,这意味着它是一个完全开放源...

    WPF 开源项目Books.Show

    **WPF开源项目Books.Show详解** Books.Show是一个基于Windows Presentation Foundation (WPF) 的开源项目,采用MVVM(Model-View-ViewModel)设计模式。该项目主要用于书籍管理,展示了如何利用WPF的强大功能来构建...

    个人常用开源软件

    "个人常用开源软件"这个主题涵盖了多种类型的工具,这些工具广泛应用于日常工作和生活中。以下是一些可能包括在压缩包中的开源软件,以及它们各自的知识点: 1. **Linux操作系统**:Linux是开源操作系统的代表,如...

    日志记录,开源项目使用方法_使用说明.zip

    开源项目通常提供丰富的日志记录解决方案,以满足不同项目的需求。本教程将深入探讨如何在开源项目中有效地利用日志记录功能。 一、日志记录的重要性 1. 错误排查:当程序出现异常或故障时,日志记录能提供详细的...

Global site tag (gtag.js) - Google Analytics