posts - 40,  comments - 4,  trackbacks - 0
          ? 主要還是以Spring為核心,也總結(jié)了一些以前web開(kāi)發(fā)常用的開(kāi)源工具和開(kāi)源類庫(kù)
          ?
          1持久層:???????
          1)Hibernate
          這個(gè)不用介紹了,用的很頻繁,用的比較多的是映射,包括繼承映射和父子表映射
          對(duì)于DAO在這里介紹個(gè)在它基礎(chǔ)上開(kāi)發(fā)的包bba96,目前最新版本是bba96 2.0它對(duì)Hibernate進(jìn)行了封裝, 查詢功能包括執(zhí)行hsql或者sql查詢/更新的方法,如果你要多層次邏輯的條件查詢可以自己組裝QueryObject.可以參考它做HibernateDAO.也可以直接利用它
          2) iBATIS
          另一個(gè)ORM工具,沒(méi)有Hibernate那么集成,自由度比較大,所以使用時(shí)普遍性能上比Hibernate要快一些.
          2:SpringMVC
          ?????? 原理說(shuō)明和快速入門(mén):
          ?????? 配置文件為:
          Spring的配置文件默認(rèn)為WEB-INF/xxxx-servelet.xm其中xxx為web.xml中org.springframework.web.servlet.DispatcherServlet的servlet-name。
          ?????? Action分發(fā):
          Spring將按照配置文件定義的URL,Mapping到具體Controller類,再根據(jù)URL里的action= xxx或其他參數(shù),利用反射調(diào)用Controller里對(duì)應(yīng)的Action方法。
          輸入數(shù)據(jù)綁定:
          Spring提供Binder 通過(guò)名字的一一對(duì)應(yīng)反射綁定Pojo,也可以直接從request.getParameter()取數(shù)據(jù)。
          輸入數(shù)據(jù)驗(yàn)證
          Sping 提供了Validator接口當(dāng)然還可以使用開(kāi)源的Commons-Validaor支持最好
          Interceptor(攔截器)
          Spring的攔截器提供接口需要自己編寫(xiě),在這點(diǎn)不如WebWork做的好.全面
          ?????? (這里提一下WebWork和Struts的區(qū)別最主要的區(qū)別在于WebWork在建立一個(gè)Action時(shí)是新New一個(gè)對(duì)象而Struts是SingleMoule所有的都繼承它的一個(gè)Action,所以根據(jù)項(xiàng)目需要合適的選擇.)
          3:View層
          1) 標(biāo)簽庫(kù):JSP2.0/JSTL
          由于Webwork或Spring的標(biāo)簽確實(shí)很有限,一般view層用JSTL標(biāo)簽,而且據(jù)說(shuō)JSTL設(shè)計(jì)很好速度是所有標(biāo)簽中最快的使用起來(lái)也很簡(jiǎn)單
          ?
          2) 富客戶端:DOJO Widgets, YUI(YahooUI),FCKEditor, Coolest日歷控件
          Dojo主要提供Tree, Tab等富客戶端控件,可以用其進(jìn)行輔助客戶端開(kāi)發(fā)
          YahooUI和DOJO一樣它有自己的一套javascript調(diào)試控制臺(tái),主要支持ajax開(kāi)發(fā)也有很多Tree,Table,Menu等富客戶端控件
          FCKEditor 最流行的文本編輯器
          Coolest日歷控件 目前很多日歷控件可用,集成在項(xiàng)目中也比較簡(jiǎn)單,這個(gè)只是其中的一個(gè),界面不錯(cuò)的說(shuō)..
          ?
          3) JavaScript:Prototype.js
          Prototype.js作為javascript的成功的開(kāi)源框架,封裝了很多好用的功能,通過(guò)它很容易編寫(xiě)AJAX應(yīng)用,現(xiàn)在AJAX技術(shù)逐漸成熟,框架資源比較豐富,比如YUI,DWR等等,也是因?yàn)镴avaScript沒(méi)有合適的調(diào)試工具,所以沒(méi)有必要從零開(kāi)始編寫(xiě)AJAX應(yīng)用,個(gè)人認(rèn)為多用一些成熟的Ajax框架實(shí)現(xiàn)無(wú)刷新更新頁(yè)面是不錯(cuò)的選擇.
          ?
          4)表格控件:Display Tag ,Extreme Table
          這兩個(gè)的功能差不多,都是View層表格的生成,界面也比較相向,可以導(dǎo)出Excel,Pdf,對(duì)Spring支持很容易.
          相比較而言比較推薦ExtremeTable,它的設(shè)計(jì)很好功能上比DisplayTag多一些,支持Ajax,封裝了一些攔截器,而且最方面的是在主頁(yè)wiki中有詳細(xì)的中文使用文檔.
          ?
          5):OSCache
          OSCache是OpenSymphony組織提供的一個(gè)J2EE架構(gòu)中Web應(yīng)用層的緩存技術(shù)實(shí)現(xiàn)組件,Cache是一種用于提高系統(tǒng)響應(yīng)速度、改善系統(tǒng)運(yùn)行性能的技術(shù)。尤其是在Web應(yīng)用中,通過(guò)緩存頁(yè)面的輸出結(jié)果,可以很顯著的改善系統(tǒng)的穩(wěn)定性和運(yùn)行性能。
          它主要用在處理短時(shí)間或一定時(shí)間內(nèi)一些數(shù)據(jù)或頁(yè)面不會(huì)發(fā)生變化,或?qū)⒁恍┎蛔兊慕y(tǒng)計(jì)報(bào)表,緩沖在內(nèi)存,可以充分的減輕服務(wù)器的壓力,防治負(fù)載平衡,快速重啟服務(wù)器(通過(guò)硬盤(pán)緩存).
          ?
          6)SiteMesh
          sitemesh應(yīng)用Decorator模式主要用于提高頁(yè)面的可維護(hù)性和復(fù)用性,其原理是用Filter截取request和response,把頁(yè)面組件head,content,banner結(jié)合為一個(gè)完整的視圖。通常我們都是用include標(biāo)簽在每個(gè)jsp頁(yè)面中來(lái)不斷的包含各種header, stylesheet, scripts and footer,現(xiàn)在,在sitemesh的幫助下,我們刪掉他們輕松達(dá)到復(fù)合視圖模式.
          Sitemesh也是 OpenSymphony的一個(gè)項(xiàng)目現(xiàn)在最近的版本是2.2,目前OpenSymphony自從04年就沒(méi)有更新的版本了..感覺(jué)它還是比較有創(chuàng)新的一種頁(yè)面組裝方式, OpenSymphony開(kāi)源組織的代碼一般寫(xiě)的比較漂亮,可以改其源代碼對(duì)自己的項(xiàng)目進(jìn)行適配.
          測(cè)試發(fā)現(xiàn)Sitemesh還存在一些問(wèn)題,比如中文問(wèn)題,它的默認(rèn)編碼是iso-8859-1在使用時(shí)候需要做一些改動(dòng).
          ?
          7)CSS,XHTML
          這個(gè)不用說(shuō)了,遵循W3C標(biāo)準(zhǔn)的web頁(yè)面開(kāi)發(fā).
          ?
          8)分頁(yè)標(biāo)簽: pager-taglib組件
          Pager-taglib 是一套分頁(yè)標(biāo)簽庫(kù),可以靈活地實(shí)現(xiàn)多種不同風(fēng)格的分頁(yè)導(dǎo)航頁(yè)面,并且可以很好的與服務(wù)器分頁(yè)邏輯分離.使用起來(lái)也比較簡(jiǎn)單.
          ?
          9)Form: Jodd Form taglib
          Jodd Form taglib使用比較簡(jiǎn)單,只要把<form>的頭尾以<jodd:form bean= "mybean">包住
          就會(huì)自動(dòng)綁定mybean, 自動(dòng)綁定mybean的所有同名屬性到普通html標(biāo)記input, selectbox, checkbox,radiobox.....在這些input框里不用再寫(xiě)任何代碼…
          ??????
          10)Ajax:DWR
          ?????? J2EE應(yīng)用最常用的ajax框架
          ??????
          ?????? 11)報(bào)表 圖表
          Eclipse BIRT功能比較強(qiáng)大,也很龐大..好幾十M,一般沒(méi)有特別需求或別的圖表設(shè)計(jì)軟件可以解決的不用它
          JasperReports+ iReport是一個(gè)基于Java的開(kāi)源報(bào)表工具,它可以在Java環(huán)境下像其它IDE報(bào)表工具一樣來(lái)制作報(bào)表。JasperReports支持PDF、HTML、XLS、CSV和XML文件輸出格式。JasperReports是當(dāng)前Java開(kāi)發(fā)者最常用的報(bào)表工具。
          JFreeChart主要是用來(lái)制作各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普通柱狀圖以及堆棧柱狀圖)、線圖、區(qū)域圖、分布圖、混合圖、甘特圖以及一些儀表盤(pán)等等。
          ??????
          ?
          4:權(quán)限控制: Acegi
          Acegi是Spring Framework 下最成熟的安全系統(tǒng),它提供了強(qiáng)大靈活的企業(yè)級(jí)安全服務(wù),如完善的認(rèn)證和授權(quán)機(jī)制,Http資源訪問(wèn)控制,Method 調(diào)用訪問(wèn)控制等等,支持CAS
          (耶魯大學(xué)的單點(diǎn)登陸技術(shù),這個(gè)單點(diǎn)登陸方案比較出名.我也進(jìn)行過(guò)配置使用,可以根據(jù)項(xiàng)目需要,如果用戶分布在不同的地方不同的系統(tǒng)通用一套登陸口令可以用它進(jìn)行解決,一般注冊(cè)機(jī)登陸機(jī)就是這樣解決的)
          ?????? Acegi只是于Spring結(jié)合最好的安全框架,功能比較強(qiáng)大,當(dāng)然還有一些其他的安全框架,這里列舉一些比較流行的是我從網(wǎng)上找到的,使用方法看其官方文檔把…
          JAAS, Seraph, jSai - Servlet Security, Gabriel, JOSSO, Kasai, jPAM, OpenSAML都是些安全控制的框架..真夠多的呵呵
          ?
          5:全文檢索
          ?????? 1) Lucene
          ?????? Lucene是一套全文索引接口,可以通過(guò)它將數(shù)據(jù)進(jìn)行倒排文件處理加入索引文件,它的索引速度和查詢速度是相當(dāng)快的,查詢百萬(wàn)級(jí)數(shù)據(jù)毫秒級(jí)出結(jié)果,現(xiàn)在最火的Apache開(kāi)源項(xiàng)目,版本更新速度很快現(xiàn)在已經(jīng)到了2.0,每個(gè)版本更新的都比較大,目前用的最多的版本應(yīng)該是1.4.3,但它有個(gè)不太方面的地方單個(gè)索引文件有2G文件限制,現(xiàn)在2.0版本沒(méi)有這個(gè)限制,我研究的比較多,它的擴(kuò)展性比較好,可以很方面的擴(kuò)充其分詞接口和查詢接口.
          ?????? 基于它的開(kāi)發(fā)的系統(tǒng)很多,比如最常用的Eclipse的搜索功能,還有一些開(kāi)源的軟件比如Compass,Nutch,Lius,還有我最近做的InSearch(企業(yè)級(jí)FTP文件網(wǎng)頁(yè)搜索)
          6:公共Util類
          ?????? 主要是Jakarta-Commons類庫(kù),其中最常用得是以下幾個(gè)類庫(kù)
          1) Jakarta-Commons-Language
          ?????? 最常用得類是StringUtils類,提供了使用的字符串處理的常用方法效率比較高
          2) Jakarta-Commons-Beantuils
          ?????? 主要用Beantuils能夠獲得反射函數(shù)封裝及對(duì)嵌套屬性,map,array型屬性的讀取。
          3) Jakarta-Commons-Collections
          ?????? 里面有很多Utils方法
          ?
          7 日志管理
          ?????? Log4J
          ?????? 任務(wù)是日志記錄,分為Info,Warn,error幾個(gè)層次可以更好的調(diào)試程序
          ?
          8 開(kāi)源的J2EE框架
          ?????? 1) Appfuse
          ????????????? Appfuse是Matt Raible 開(kāi)發(fā)的一個(gè)指導(dǎo)性的入門(mén)級(jí)J2EE框架, 它對(duì)如何集成流行的Spring、Hibernate、iBatis、Struts、Xdcolet、JUnit等基礎(chǔ)框架給出了示范. 在持久層,AppFuse采用了Hibernate O/R映射工具;在容器方面,它采用了Spring,用戶可以自由選擇Struts、Spring/MVC,Webwork,JSF這幾個(gè)Web框架。
          ??????
          ?????? 2) SpringSide
          ?????? .SpringSide較完整的演示了企業(yè)應(yīng)用的各個(gè)方面,是一個(gè)電子商務(wù)網(wǎng)站的應(yīng)用 SpringSide也大量參考了Appfuse中的優(yōu)秀經(jīng)驗(yàn)。最重要的是它是國(guó)內(nèi)的一個(gè)開(kāi)源項(xiàng)目,可以了解到國(guó)內(nèi)現(xiàn)在的一些實(shí)際技術(shù)動(dòng)態(tài)和方向很有指導(dǎo)意義…
          ?
          9:模版 Template
          主要有Veloctiy和Freemarker
          模板用Servlet提供的數(shù)據(jù)動(dòng)態(tài)地生成 HTML。編譯器速度快,輸出接近靜態(tài)HTML???????????? 頁(yè)面的速度。
          ?
          10:工作流
          ?????? 我所知道比較出名的主要有JBpm Shark Osworkflow,由于對(duì)它沒(méi)有過(guò)多的研究所以還不是很清楚之間有什么區(qū)別.
          ?
          項(xiàng)目管理軟件
          dotProject:是一個(gè)基于LAMP的開(kāi)源項(xiàng)目管理軟件。最出名的項(xiàng)目管理軟件
          JIRA: 項(xiàng)目計(jì)劃,任務(wù)安排,錯(cuò)誤管理
          Bugzilla:提交和管理bug,和eclipse集成,可以通過(guò)安裝MyEclipse配置一下即可使用
          BugFree借鑒微軟公司軟件研發(fā)理念、免費(fèi)開(kāi)放源代碼、基于Web的精簡(jiǎn)版Bug管理
          CVS:這個(gè)就不介紹了都在用.
          SVN: SubVersion已逐漸超越CVS,更適應(yīng)于JavaEE的項(xiàng)目。Apache用了它很久后,Sourceforge剛剛推出SVN的支持。
          測(cè)試用例:主要JUnit單元測(cè)試,編寫(xiě)TestCase,Spring也對(duì)Junit做了很好的支持
          ?
          后記:
          ?????? 以Spring為主的應(yīng)用開(kāi)發(fā)可選用的組件中間件真是眼花繚亂,所以針對(duì)不同的項(xiàng)目需求可以利用不同的開(kāi)源產(chǎn)品解決,比如用Spring+Hibernate/ iBATIS或Spring+WebWork+Hibernate/ iBATIS或Spring+Struts+Hibernate/ iBATIS,合理的框架設(shè)計(jì)和代碼復(fù)用設(shè)計(jì)對(duì)項(xiàng)目開(kāi)發(fā)效率和程序性能有很大的提高,也有利于后期的維護(hù).
          posted on 2006-09-25 08:16 larryjava 閱讀(280) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 河源市| 淳安县| 乐清市| 故城县| 清河县| 祁阳县| 孙吴县| 霍山县| 鄂州市| 江西省| 襄垣县| 阿勒泰市| 锦屏县| 翁源县| 新昌县| 肇庆市| 宝丰县| 盐山县| 怀集县| 杭锦旗| 绵竹市| 红桥区| 金山区| 城口县| 文化| 余庆县| 彩票| 安阳市| 平利县| 伊通| 新疆| 西乡县| 秦安县| 玉田县| 迁西县| 兴义市| 峡江县| 沛县| 迭部县| 云梦县| 曲周县|