隨筆-67  評(píng)論-522  文章-0  trackbacks-0
              JavaEE企業(yè)級(jí)開(kāi)發(fā)中,以SSH2框架為核心的應(yīng)用非常廣,大象根據(jù)項(xiàng)目實(shí)踐經(jīng)驗(yàn),通過(guò)一個(gè)實(shí)例,詳細(xì)的為大家講解如何實(shí)現(xiàn)全注解式的開(kāi)發(fā)。
              開(kāi)發(fā)環(huán)境
              JDK1.6.0_18
              Eclipse3.2.1
              MyEclipse5.1.0
              Tomcat6.0.10
              MySQL5.0.27
              Navicat Lite for MySQL 8.1.20
              每個(gè)人的開(kāi)發(fā)環(huán)境可能會(huì)有差異,但有一點(diǎn)我需要說(shuō)明的是,JDK的版本不得低于1.5,因?yàn)橛玫搅撕芏?/span>1.5版才支持的新特性。TomcatMySQL請(qǐng)不要低于我所用的版本,因?yàn)槲覜](méi)在其它的版本上進(jìn)行測(cè)試。Navicat則是MySQL數(shù)據(jù)庫(kù)的圖形化操作工具。我在這里假定各位目前已經(jīng)設(shè)置好了開(kāi)發(fā)環(huán)境,下面就開(kāi)始詳細(xì)的說(shuō)明。
              由于要闡述的內(nèi)容比較多,大象決定將它們劃分成個(gè)幾章節(jié)來(lái)講,這一章就主要來(lái)說(shuō)說(shuō)jar包的選擇。
              第一部分選擇必須的jar
              新建一個(gè)web項(xiàng)目,然后將必要的jarCOPYlib里面。根據(jù)本文實(shí)例demo,大象給出下圖中的最少jar包配置。

                  
              我對(duì)這些jar包進(jìn)行一下說(shuō)明,方便大家理解。
              
              解壓Struts2.1.6lib文件夾,從中選出上面7個(gè)jar包添加到我們的工程庫(kù)中。commons-logging、freemarker、ognl、struts2-corexwork5個(gè)還是struts2的核心包。但在Struts2.1.6這個(gè)版本中,還需要加上commons-fileupload包。如果沒(méi)有,則啟動(dòng)就會(huì)報(bào)錯(cuò),不過(guò)不需要像網(wǎng)上傳言的那樣還得加上commons-iojar包,這些大象都親自做過(guò)測(cè)試。在本實(shí)例中,我將對(duì)struts2也采取注解的方式,所以用到了struts2-convention-plugin-2.1.6.jar這個(gè)插件。因?yàn)橐cspring整合,所以struts2-spring-plugin-2.1.6.jar也必不可少。
              
              大象在這里偷個(gè)懶,直接將spring的完整jar包加了進(jìn)來(lái),如果各位想精簡(jiǎn)類庫(kù)的話,就選取它的分類jar包吧。比如本例使用struts2作為MVC框架,所以springwebmvc就不可能用到了。有想改的朋友請(qǐng)自己動(dòng)手改下。另外有點(diǎn)我想說(shuō)下,如果采取完整springjar包,還需要Spring2.5.6\lib\concurrent文件夾中的backport-util-concurrent.jar,如果不加這個(gè),spring會(huì)報(bào)錯(cuò)。但是采取spring分類jar包的形式,這個(gè)可以不用加,至于具體使用什么需要依賴這個(gè)包,大象還沒(méi)去測(cè)試過(guò),這個(gè)有待驗(yàn)證。還有lib\slf4j下的日志包,目前很多都開(kāi)始采用基于slf4j接口的日志器,它的好處就是日志器是根據(jù)slf4j的接口來(lái)進(jìn)行實(shí)現(xiàn),可以在不改變代碼的情況下更換日志器。最后Spring的源代碼中使用的是commons-logging記錄日志,因此這個(gè)包不能少,不過(guò)因?yàn)?/span>struts2也用到了,所以這里就省了。
              
              Hibernate3.3版開(kāi)始,對(duì)jar包結(jié)構(gòu)做了一次大的調(diào)整,我們只需要加入lib\required文件夾下面的6個(gè)jar包。請(qǐng)注意這6個(gè)jar包都是使用Hibernate所必須的。另外再加上hibernate核心包。這里我將slf4j-api-1.5.2.jar換成了1.5.0,這是因?yàn)?/span>slf4j是一個(gè)通用日志接口,不提供任何實(shí)現(xiàn),我在demo里面使用的是log4j,而hibernate包里面沒(méi)有log4jslf4j實(shí)現(xiàn)。而且如果版本不一致,會(huì)有異常,因此我就采用Spring2.5.6\lib\slf4j里面提供的配套版本。另外我將commons-collections-3.1.jar換成了Struts2.1.6里面的3.2版。
              
              例子中使用Hibernate JPA來(lái)完成實(shí)體對(duì)象映射,所以上面這些包都必不可少。使用注解的方式,可以不用寫繁瑣的配置文件,降低了出錯(cuò)機(jī)率。而且現(xiàn)在很多人都喜歡這種方式。大家可以去sourceforge下載。

              下載地址http://sourceforge.net/projects/hibernate/files/

              
              本例使用DBCP連接池來(lái)管理數(shù)據(jù)源。
              
              MySQL數(shù)據(jù)庫(kù)的連接驅(qū)動(dòng)。
              
              這個(gè)包的作用是創(chuàng)建動(dòng)態(tài)代理對(duì)象。比如在使用AOP方式管理spring事務(wù)時(shí),如果我們的目標(biāo)對(duì)象沒(méi)有實(shí)現(xiàn)接口,而又要使用AOP來(lái)處理事務(wù),這時(shí)就需要用到這個(gè)jar包??梢栽?/span>Spring2.5.6\lib\cglib里面找到。
              
              JSTL標(biāo)簽庫(kù),很經(jīng)典的東東,如果需要可以將它們加入lib中。
              大象在這里建議大家做開(kāi)發(fā)的時(shí)候,不要過(guò)多的依賴MyEclipse提供的那些功能,多用手動(dòng)的方式來(lái)做。那樣方便是方便了,但不利于學(xué)習(xí)。比如加入上面這些開(kāi)發(fā)所用的類庫(kù),這樣可以更清楚的了解每個(gè)jar包的作用,增加知識(shí)的積累,方便以后調(diào)試。Ok,關(guān)于這部分的內(nèi)容到這里就說(shuō)完了,那么,我們下次繼續(xù)。
              
          本文為菠蘿大象原創(chuàng),如要轉(zhuǎn)載請(qǐng)注明出處。http://www.aygfsteel.com/bolo
          posted on 2010-04-11 22:24 菠蘿大象 閱讀(22530) 評(píng)論(35)  編輯  收藏 所屬分類: Struts2

          評(píng)論:
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2010-04-11 22:46 | E2
          從來(lái)就不用MyEclipse  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2010-04-11 23:22 | 菠蘿大象
          例子我做好了,寫得比較簡(jiǎn)單,主要是方便大家理解與學(xué)習(xí),關(guān)鍵問(wèn)題是用文字把它表述出來(lái)需要點(diǎn)時(shí)間。看過(guò)我博客的朋友應(yīng)該知道,大象是個(gè)很負(fù)責(zé)的人,我一直都是很用心在寫博客。我從來(lái)沒(méi)有從網(wǎng)上隨便抄一些文字和代碼來(lái)敷衍了事。所有的字句都傾注了我的理解與總結(jié)。所有的例子都親自做過(guò)測(cè)試過(guò)。所以請(qǐng)大家耐心等下,后面的章節(jié)很快就會(huì)出來(lái)。  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一)[未登錄](méi) 2010-04-12 08:33 | 小人物
          頂一個(gè)?。?!  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2010-04-13 12:58 | gouf
          值得看下看, 特別是spring的 ^^  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一)[未登錄](méi) 2010-04-15 16:18 | 追求
          好文章 ,簡(jiǎn)述了一個(gè)項(xiàng)目的主要框架思想及代碼實(shí)現(xiàn) 再贊一個(gè),辛苦這么晚還在為IT業(yè)做貢獻(xiàn),之前一直也想寫這類文章,怎耐本人太懶   回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2010-04-15 19:45 | 菠蘿大象
          @追求
          呵呵,謝謝支持  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2010-04-19 23:28 | 三國(guó)阿海
          我總算注冊(cè)成功了,忙了我大半個(gè)小時(shí)。我還以為是我一定要注冊(cè)那個(gè)什么的郵箱。

          后來(lái)才在Yahoo收到,BlogJava給我發(fā)的信息。  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2010-04-20 10:30 | keer
          netbeans...  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2010-04-22 08:34 | 稅國(guó)政
          樓主能否給出代碼下載呢?  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一)[未登錄](méi) 2010-04-23 14:13 | javaStudy
          不錯(cuò)。對(duì)jar包的選擇講解的很好。網(wǎng)上其他的一些文章中都是說(shuō),把什么框架的lib下的jar全拷到工程里,說(shuō)是為了,省事,不易出錯(cuò)。  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2010-04-23 15:57 | 菠蘿大象
          @javaStudy
          謝謝支持,你說(shuō)的很對(duì),那樣做一點(diǎn)用處都沒(méi)有,寫的人不清楚,看得人更不清楚。大象就是想讓大家看點(diǎn)有用的東西,僅此而已。  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2010-04-26 10:51 | software-Andy
          樓主嚴(yán)謹(jǐn)?shù)膽B(tài)度讓人敬佩啊
          好文章,值得借鑒  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2010-04-26 12:44 | 菠蘿大象
          @software-Andy
          謝謝支持。  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一)[未登錄](méi) 2010-10-09 18:51 | nassir
          請(qǐng)問(wèn)下菠蘿大象,在你這個(gè)ssh2項(xiàng)目中sessionFactory是如何注入到HibernateDaoSupport中去了,我通過(guò)注釋搭建項(xiàng)目,加載XML文件時(shí),怎么老報(bào) Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
          提示我sessionFactory沒(méi)有注入

          希望有時(shí)間幫忙給個(gè)解釋,謝謝

          我的郵箱:nassir@126.com
            回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2010-10-11 14:32 | 菠蘿大象
          @nassir
          這位童鞋你好,首先謝謝你關(guān)注我的博客。我想問(wèn)下,你將我的這五篇文章都仔細(xì)的看完了嗎?恩,是仔細(xì)的,如果還不是很清楚的話,再多看幾遍,另外把我提供的源碼下下來(lái)也看看。確認(rèn)自己都搞清楚沒(méi)問(wèn)題了,再動(dòng)手做吧。我碰到有很多朋友都是還沒(méi)仔細(xì)的看,就急著開(kāi)始動(dòng)手做了,后來(lái)他們按我的建議,都自己解決了,希望你也能自己解決,如果還有什么不清楚的,請(qǐng)?jiān)诨貜?fù)中寫出來(lái),我會(huì)看到的。  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2011-02-17 13:17 | sdfsdf
          關(guān)注SSH中,謝謝啦  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2011-03-17 18:40 | taote
          今天報(bào)了一個(gè)錯(cuò)誤,java.lang.ClassCastException: org.hibernate.annotations.common.reflection.ja。。。。。。
          查了好多遍原來(lái)是hibernate的annotation的jar包沖突了。我用的是hibernate3.6,所以hibernate-annotations.jar和hibernate-commons-annotations.jar這兩個(gè)jar就不要加了,hibernate3.5以后已經(jīng)集成了annotation了。  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2011-03-17 22:55 | 菠蘿大象
          @taote
          我沒(méi)用3.6的進(jìn)行測(cè)試,謝謝你的提醒,大象非常感謝  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一)[未登錄](méi) 2011-04-28 17:59 | AAA
          好好好 贊贊贊  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2011-05-03 23:59 | huanghao
          樓主,謝謝分享  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2011-05-14 11:29 | 文學(xué)社
          看來(lái)還要加強(qiáng)學(xué)習(xí)。  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2011-05-16 16:40 | 李亮
          為什么源碼里面的注解都是亂碼  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2011-05-16 18:02 | 菠蘿大象
          @李亮
          你工作空間設(shè)置的是什么編碼?我用的是UTF-8編碼  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2011-06-04 09:49 | wings
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2011-06-13 17:05 | 李曉陽(yáng)
          請(qǐng)問(wèn)下菠蘿大象,你在這個(gè)框架的用到的jar包能不能給我發(fā)一份,郵箱地址是xupengfei666@163.com,萬(wàn)分感謝啊。  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2011-06-13 17:09 | 菠蘿大象
          @李曉陽(yáng)
          還在使用老方法做?。扛某蒻aven吧,沒(méi)看到傳統(tǒng)做法我已經(jīng)沒(méi)寫了嗎?你想要我還是可以發(fā)給你的,你不覺(jué)得傳統(tǒng)方式很麻煩么,效率也不高  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一)[未登錄](méi) 2011-08-01 13:12 | 海風(fēng)
          多謝分享,對(duì)我很有用,學(xué)習(xí)了!  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2012-10-09 09:59 | 伍葉春
          缺少包:
          commons-lang-2.5.jar

          否則StringUtils.isNotBlank(name)報(bào)錯(cuò).
            回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2012-10-09 10:04 | 菠蘿大象
          @伍葉春
          我這里所說(shuō)的,是必須有的jar包,commons-lang是可選的,第五篇最下面,有本例所用到的jar包。你可以去看看  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2013-09-10 16:42 | 李登峰
          大象你好,三大框架service層,dao層都有接口嗎?你這這么沒(méi)有,那個(gè)接口主要有什么意義  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2013-09-27 10:01 | 菠蘿大象
          @李登峰
          其實(shí)對(duì)于業(yè)務(wù)來(lái)說(shuō),要不要接口已經(jīng)沒(méi)有區(qū)別了,相反搞接口還顯得麻煩,接口的定義是一種抽象,對(duì)于業(yè)務(wù)來(lái)說(shuō)你根本就抽象不出來(lái),你不知道什么時(shí)候需求就變了。  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2013-10-08 14:34 | 求指導(dǎo)
          大象,您好,謝謝您詳細(xì)的說(shuō)明,能把jar包發(fā)一份到我的郵箱嗎?baoxilin@126.com  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2013-11-23 16:14 | asdasd
          沒(méi)接口 怎么用aop創(chuàng)建動(dòng)態(tài)代理對(duì)象@菠蘿大象
            回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一)[未登錄](méi) 2014-07-21 13:09 | lxl
          講的太好了,真心感謝你的講解,思路清晰,受益匪淺~謝謝~  回復(fù)  更多評(píng)論
            
          # re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實(shí)例詳解(一) 2015-01-17 10:01 | ld
          可以發(fā)一份Struts2.1.6+Spring2.5.6+Hibernate3.3.1源碼我學(xué)下嗎zhengshuihong1990@163.com,最近在搭建SSH項(xiàng)目,我在想opesseion怎么關(guān)閉,又說(shuō)在filter可以關(guān),又說(shuō),手動(dòng)關(guān),是不是不用關(guān)啊我用的是hibernate3.6的  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 成武县| 合水县| 灵寿县| 莱西市| 加查县| 大同市| 洛宁县| 伊宁县| 孟津县| 泰顺县| 宿州市| 田阳县| 寿宁县| 五常市| 铁岭市| 同德县| 三台县| 鹤岗市| 九龙城区| 东乡县| 广灵县| 恩平市| 大余县| 罗城| 曲阜市| 新宾| 崇明县| 左贡县| 绍兴市| 攀枝花市| 唐山市| 临泉县| 清丰县| 昭觉县| 子长县| 临沧市| 邛崃市| 永兴县| 铅山县| 龙井市| 廊坊市|