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

From: http://blog.csdn.net/kuyuyingzi/article/details/38351231

主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发。主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库

1持久层:

1Hibernate

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

  对于DAO在这里介绍个在它基础上开发的包bba96,目前最新版本是bba96 2.0它对Hibernate进行了封装, 查询功能包括执行hsql或者sql查询/更新的方法,如果你要多层次逻辑的条件查询可以自己组装QueryObject.可以参考它做HibernateDAO.也可以直接利用它

2) iBATIS

  另一个ORM工具,Apache的,没有Hibernate那么集成,自由度比较大

2SpringMVC

原理说明和快速入门:

配置文件为:

  Spring的配置文件默认为WEB-INF/xxxx-servelet.xm其中xxxweb.xmlorg.springframework.web.servlet.DispatcherServletservlet-name.

Action分发:

  Spring将按照配置文件定义的URLMapping到具体Controller类,再根据URL里的action= xxx或其他参数,利用反射调用Controller里对应的Action方法。

输入数据绑定:

  Spring提供Binder 通过名字的一一对应反射绑定Pojo,也可以直接从request.getParameter()取数据。

输入数据验证

  Sping 提供了Validator接口当然还可以使用开源的Commons-Validaor支持最好

Interceptor(拦截器)

  Spring的拦截器提供接口需要自己编写,在这点不如WebWork做的好。全面

  (这里提一下WebWorkStruts的区别最主要的区别在于WebWork在建立一个Action时是新New一个对象而StrutsSingleMoule所有的都继承它的一个Action,所以根据项目需要合适的选择。)

3View

1) 标签库:JSP2.0/JSTL

  由于WebworkSpring的标签确实很有限,一般view层用JSTL标签,而且据说JSTL设计很好速度是所有标签中最快的使用起来也很简单

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

  Dojo主要提供Tree, Tab等富客户端控件,可以用其进行辅助客户端开发

  YahooUIDOJO一样它有自己的一套javascript调试控制台,主要支持ajax开发也有很多TreeTableMenu等富客户端控件

  FCKEditor 最流行的文本编辑器

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

3) JavaScriptPrototype.js

  Prototype.js作为javascript的成功的开源框架,封装了很多好用的功能,通过它很容易编写AJAX应用,现在AJAX技术逐渐成熟,框架资源比较丰富,比如YUIDWR等等,也是因为JavaScript没有合适的调试工具,所以没有必要从零开始编写AJAX应用,个人认为多用一些成熟的Ajax框架实现无刷新更新页面是不错的选择。

4)表格控件:Display Tag Extreme Table

  这两个的功能差不多,都是View层表格的生成,界面也比较相向,可以导出ExcelPdf,对Spring支持很容易。

  相比较而言比较推荐ExtremeTable,它的设计很好功能上比DisplayTag多一些,支持Ajax,封装了一些拦截器,而且最方面的是在主页wiki中有详细的中文使用文档。

5):OSCache

  OSCacheOpenSymphony组织提供的一个J2EE架构中Web应用层的缓存技术实现组件,Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的输出结果,可以很显著的改善系统的稳定性和运行性能。

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

6SiteMesh

  sitemesh应用Decorator模式主要用于提高页面的可维护性和复用性,其原理是用Filter截取requestresponse,把页面组件headcontentbanner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and footer,现在,在sitemesh的帮助下,我们删掉他们轻松达到复合视图模式。

  Sitemesh也是 OpenSymphony的一个项目现在最近的版本是2.2,目前OpenSymphony自从04年就没有更新的版本了……感觉它还是比较有创新的一种页面组装方式, OpenSymphony开源组织的代码一般写的比较漂亮,可以改其源代码对自己的项目进行适配。

  测试发现Sitemesh还存在一些问题,比如中文问题,它的默认编码是iso-8859-1在使用时候需要做一些改动。

7CSSXHTML

  这个不用说了,遵循W3C标准的web页面开发。

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

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

9Form: Jodd Form taglib

  Jodd Form taglib使用比较简单,只要把html的头尾以form包住,就会自动绑定mybean, 自动绑定mybean的所有同名属性到普通html标记input, selectbox, checkboxradiobox……在这些input框里不用再写任何代码…

10AjaxDWR

  J2EE应用最常用的ajax框架

11)报表 图表

  Eclipse BIRT功能比较强大,也很庞大……好几十M,一般没有特别需求或别的图表设计软件可以解决的不用它

  JasperReports+ iReport是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports支持PDFHTMLXLSCSVXML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。

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

  琴棋报表,国产的……重点推荐,适合中国的情况,开放源代码,使用完全免费。纯JAVA开发,适用多种系统平台。特别适合B/S结构的系统。官方网站有其优点介绍,看来用它还是不错的选择,最重要的是支持国产呵呵

4:权限控制: Acegi

  AcegiSpring 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的搜索功能,还有一些开源的软件比如CompassNutchLius,还有我最近做的InSearch(企业级FTP文件网页搜索)

6:公共Util

  主要是Jakarta-Commons类库,其中最常用得是以下几个类库

1) Jakarta-Commons-Language

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

2) Jakarta-Commons-Beantuils

  主要用Beantuils能够获得反射函数封装及对嵌套属性,maparray型属性的读取。

3) Jakarta-Commons-Collections

  里面有很多Utils方法

日志管理

  Log4J

  任务是日志记录,分为InfoWarnerror几个层次可以更好的调试程序

开源的J2EE框架

1) Appfuse

  AppfuseMatt Raible 开发的一个指导性的入门级J2EE框架, 它对如何集成流行的SpringHibernateiBatisStrutsXdcoletJUnit等基础框架给出了示范。 在持久层,AppFuse采用了Hibernate O/R映射工具;在容器方面,它采用了Spring,用户可以自由选择StrutsSpring/MVCWebworkJSF这几个Web框架。

2) SpringSide

  。SpringSide较完整的演示了企业应用的各个方面,是一个电子商务网站的应用 SpringSide也大量参考了Appfuse中的优秀经验。最重要的是它是国内的一个开源项目,可以了解到国内现在的一些实际技术动态和方向很有指导意义…

9:模版 Template

  主要有VeloctiyFreemarker

  模板用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单元测试,编写TestCaseSpring也对Junit做了很好的支持


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

modprobe: FATAL: Module xxx.ko not found in directory /lib/modules/$(uname -r)

如果遇到此错误,首先要检查要加载的驱动是否已经存在与系统默认驱动路径 /lib/modules/$(uname -r) 下面,确认拷贝完成后,需要在加载模块之前建立该模块的依赖关系。也即必须用 depmod 来更新一下 /lib/modules/$(uname -r)/modules.dep 文件…

Android 短信解析

URI主要有: content://sms/ 所有短信 content://sms/inbox 收件箱 content://sms/sent 已发送 content://sms/draft 草稿 content://sms/outbox 发件箱 content://sms/failed 发送失败 content://sms/queued 待…

ASP.Net网站部署失败

部署站点时候,出现如下错误 “/”应用程序中的服务器错误。 --------------------------------------------------------------------------------当前标识(NT AUTHORITY\SYSTEM)没有对“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files”的…

Linux系统开机自动加载驱动module

Linux系统的驱动默认存放目录为: /lib/modules/$(uname -r)/kernel/drivers,因此如果希望系统可以启动时自动加载驱动必须首先把驱动放到该目录下面,执行完此步操作以后,再执行 depmod 命令更新驱动依赖关系文件 modules.dep&…

FineReport报表和J2EE应用的集成

From: http://www.blogjava.net/fannie/archive/2013/05/08/398985.html FineReport是一个纯Java软件,因此对于J2EE的项目,可以做到无缝集成。 报表服务器并非物理概念的服务器,而是以一个标准的J2EE应用的形式或者jar包的形式提交给程序。应…

vue使用jszip和file-save下载文件并打包;vue前端下载多个文件b并打包;

场景: 一般是后端直接将多个文件打包好,前端调用下载地址下载打包;但是文件太多会导致下载接口时间过长和服务器爆掉;故采用前端先将多个文件下载然后进行打包; 注意点: 1.先获取所有下载的文件路径和包含后…

【BZOJ1085】骑士精神

迭代加深搜索。 剪枝&#xff1a;当满足以下任意一个条件退出&#xff1a; 1.当前已搜到答案时&#xff08;ans!-1||sum0&#xff09; 2.剩余步数1<当前局面与目标局面不同的格子数sum 时&#xff08;因为n步最多改变n1个格子&#xff09; 3.当前步数>当前规定最大步数时…

CH340电路设计注意事项

在前面两篇博客提到了CH340的电路设计以及芯片选型&#xff0c;本文将重点放在使用CH340芯片进行电路设计的一些细节与注意事项。 电压匹配问题 CH340 芯片通过 USB 转换出来的 TTL 串口输出和输入电压是根据芯片供电电压是自适应的。也即&#xff0c;如果芯片是 5V 供电&…

解决 Visual Studio 中代码注释自动折叠的问题

今天突发奇想&#xff0c;打算把存储过程以注释的形式放在代码中进行版本管理&#xff0c;比如下面的代码&#xff1a; 由于存储过程很长&#xff0c;注释占了很多行&#xff0c;严复影响了正常代码的排版与阅读体验。之前也遇到过这样的场景&#xff0c;当时通过手动添加regio…

Newtonsoft.Json高级用法

From: http://www.cnblogs.com/yanweidie/p/4605212.html 手机端应用讲究速度快&#xff0c;体验好。刚好手头上的一个项目服务端接口有性能问题&#xff0c;需要进行优化。在接口多次修改中&#xff0c;实体添加了很多字段用于中间计算或者存储&#xff0c;然后最终用Newtonso…

CH340驱动(含各平台)

CH340转串口芯片支持的平台驱动齐全&#xff0c;支持 Windows/Linux/Android/MacOS/WinCE 等各主流系统。下面就给出各平台下驱动官网链接和简要说明&#xff0c;每个平台的安装与使用问题可以参见我的其他博文。 Windows驱动 下载链接&#xff1a;CH340/CH341 Windows 驱动链…

js获取文件名后缀

this.fileType this.file.name.split(.)[this.file.name.split(.).length - 1]

PHP笔记-管道的作用 类

echo 123 | sudo -S /bin/bash -c cp god* /usr/local/bin | 就是管道 作用是将前面的结果作为后面的参数使用 123就是sudo的密码 -c &#xff08;command命令&#xff09; cp god* /usr/local/bin将以god开头的文件拷贝到/usr/local/bin文件中 god* 以god开头的文件 /bin/b…

Android 经典示例,初学者的绝好源码资料

2019独角兽企业重金招聘Python工程师标准>>> Android 经典示例&#xff0c;初学者的绝好源码资料 附上源码&#xff1a; 转载:http://www.adobex.com/android/source/details/00000374.htm 转载于:https://my.oschina.net/androidcode/blog/104696

USB转串口驱动(支持各平台)

CH340转串口芯片支持的平台驱动齐全&#xff0c;支持 Windows/Linux/Android/MacOS/WinCE 等各主流系统。下面就给出各平台下驱动官网链接和简要说明&#xff0c;每个平台的安装与使用问题可以参见我的其他博文。 Windows驱动 下载链接&#xff1a;CH340/CH341 Windows 驱动链…

【DOS】对指定目录下的指定文件类型进行打包

echo offset packagepack.rar set dirsLoginServer Launcher GlobalLauncher GameLauncherdel %package%REM 对指定目录下的指定文件类型进行打包 for %%i in (%dirs%) do rar a %package% %%i\*.dll %%i\*.pdb %%i\*.exe.* %%i\*.xml说明&#xff1a; 1. 以上不会去子目录下搜…

CH340 Linux驱动使用教程

在官方Linux内核版本中自Kernel2.6以后就默认包含了对CH340/CH341芯片的驱动支持了&#xff0c;但比较遗憾的是该自带驱动版本较老&#xff08;由开源社区开发者提交&#xff09;已不能满足使用需求了&#xff0c;因此我们需要用芯片官网提供的新驱动进行替换链接。 1. 首先去…

关于页面图表相应式的问题,问题遇见时间,9月1日,到今天9月2日,尚未解决...

首先&#xff0c;我在做公司的新的软件页面&#xff0c;后台页面&#xff0c;遇到的问题是当我引入百度的echarts.js&#xff0c;想使用他们的插件来实现图表的功能&#xff0c;发现JS的信息描述必须放在他们div id的下面&#xff0c;否则会失效&#xff0c;这是问题一。 现在遇…

h5开发实时预览;真机调试开发;拼接ip的地址直接微信打开或者浏览器打开也可以实时预览

http://192.168.10.135:2277/#/Write1 本地启动vue项目 将地址栏复制 放在微信开发者工具 可以借助微信开发者工具预览 找到自己电脑的ip 也可以电脑输入自己的ip和对应端口号地址进行预览 最后将拼接ip和端口号的地址直接微信打开或者浏览器打开也可以实时预览

Android广播接实现电话的监听(电话的状态,拦截)

Android广播接实现电话的监听 1&#xff1a;需要在AndroidManifest.xml清单中添加权限 <uses-permission android:name"android.permission.PROCESS_OUTGOING_CALLS"/> <uses-permission android:name"android.permission.READ_PHONE_STATE" /…