日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
ssh整合分解

一、 Spring+Hibernate整合:
Spring整合Hibernate,是做了一個(gè)很大的調(diào)整的,因?yàn)閟pring可以把管理Hibernate的工作都做了,以前的hibernate.cfg.xml文件都去掉了,而將這些內(nèi)容都交給了spring來(lái)管理了。
1、 applicationContext.xml文件中應(yīng)該配置如下內(nèi)容:
Java代碼

云溪網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),云溪網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為云溪超過(guò)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的云溪做網(wǎng)站的公司定做!

 
 
  1. //配置數(shù)據(jù)連接類(lèi) 
  2. class=“org.apache.commons.dbcp.BasicDataSource”> 
  3. value=“org.gjt.mm.mysql.Driver”> 
  4.  
  5.  
  6.  
  7.  
  8. //配置session工廠(chǎng)類(lèi) 
  9. class=“org.springframework.orm.hibernate3.LocalSessionFactoryBean”> 
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16. org.hibernate.dialect.MySQLDialect 
  17.  
  18. true 
  19.  
  20.  
  21.  
  22. com/hejianjiao/vo/Person.hbm.xml 
  23.  
  24.  
  25. //配置數(shù)據(jù)連接類(lèi)
  26.    class="org.apache.commons.dbcp.BasicDataSource">
  27.    
  28.     value="org.gjt.mm.mysql.Driver">
  29.    
  30.    
  31.    
  32. //配置session工廠(chǎng)類(lèi)
  33. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  34.    
  35.     
  36.    
  37.    
  38.     
  39.      
  40.       org.hibernate.dialect.MySQLDialect
  41.      
  42.      true
  43.     
  44.    
  45.    
  46.    com/hejianjiao/vo/Person.hbm.xml
  47.    

2、可以使用spring中的HibernateDAOSupport與HibernateTemplate類(lèi)來(lái)進(jìn)行數(shù)據(jù)持久化操作:
A、HibernateDAOSupport類(lèi)中定義了對(duì)session、sessionFactory的操作方法與getHibernateTemplate方法來(lái)獲得一個(gè)HibernateTemplate實(shí)例;
B、HibernateTemplate類(lèi)中定義了對(duì)數(shù)據(jù)持久化的各種封裝的方法,我們可以用它來(lái)對(duì)數(shù)據(jù)進(jìn)行操作。
因此在使用時(shí),我們可以繼承HibernateDAOSupport類(lèi),然后實(shí)例化HibernateTemplate類(lèi)來(lái)進(jìn)行數(shù)據(jù)持久化。
二、 Spring+Struts2整合:

1、spring配置在web.xml文件中的上下文監(jiān)聽(tīng)器:
Java代碼

 
 
  1.  
  2. contextConfigLocation 
  3. /WEB-INF/applicationContext*.xml 
  4.  
  5. org.springframwork.web.content.ContextLoaderListener 
  6.  
  7. contextConfigLocation
  8. /WEB-INF/applicationContext*.xml
  9. org.springframwork.web.content.ContextLoaderListener
  10. 2、struts2配置在web.xml文件中的過(guò)濾器:
  11. Java代碼
  12.  
  13. struts2 
  14. org.apache.struts2.dispatcher.FilterDispatcher 
  15.  
  16. struts2 
  17. /* 
  18.  
  19. struts2
  20. org.apache.struts2.dispatcher.FilterDispatcher
  21. struts2
  22. /*

3、設(shè)置struts.xml文件,就可以使用spring的IOC來(lái)管理struts的Action:
Java代碼

 
 
  1.  

4、第三步設(shè)置后,以后在struts.xml 文件中配置一個(gè)action時(shí),它的class就不是一個(gè)類(lèi)了,而是在applicationContext.xml文件中定義過(guò)的類(lèi)的ID,在 struts.xml文件中就只需要引用定義好的類(lèi)的id 就可以了。
然后特別要注意的一個(gè)問(wèn)題:action是一個(gè)請(qǐng)求就是一個(gè)action對(duì) 象,而在spring中則不是的,它是自動(dòng)分配類(lèi)的實(shí)例的,是使用的單 態(tài)模式來(lái)生產(chǎn)類(lèi)的實(shí)例的,不符合action,因此在applicationContext.xml文件中定義每個(gè)action時(shí),都要在類(lèi)后加上:
Java代碼
scope=“prototype” 屬性 
scope="prototype" 屬性三、 三者組合開(kāi)發(fā):
一般在組合開(kāi)發(fā)時(shí),沒(méi)有什么難的,只要把上面兩步做好就可以是三個(gè)組合開(kāi)發(fā)了。 上圖則是對(duì)于進(jìn)行組合開(kāi)發(fā)時(shí),一般使用的系統(tǒng)架構(gòu):
1、 先從***層開(kāi)發(fā),先開(kāi)發(fā)POJO類(lèi),和Hibernate映射文件。它相當(dāng)于系統(tǒng)的數(shù)據(jù)庫(kù)層。
2、 再開(kāi)發(fā)DAO層,它是對(duì)于數(shù)據(jù)進(jìn)行持久化的一層,專(zhuān)門(mén)處理各種數(shù)據(jù)增、刪、改、查的功能。并且使用DAO工廠(chǎng)模式,以保證和上層沒(méi)有任何的聯(lián)系,并且可以方便于類(lèi)與接口的擴(kuò)展。
3、 第三是開(kāi)發(fā)manager層,它相當(dāng)于軟件的業(yè)務(wù)邏輯層,即專(zhuān)門(mén)處理各種業(yè)務(wù)邏輯。實(shí)現(xiàn)系統(tǒng)的業(yè)務(wù)處理功能。并且它隔離事務(wù),使與下層的數(shù)據(jù)持久和上層的數(shù)據(jù)操作沒(méi)有任何的聯(lián)系。
4、 Action層,也即軟件的表示層,處理action的接收與回復(fù)。各action由spring管理。
五、 組合開(kāi)發(fā)中的一些問(wèn)題:
1、 在組合開(kāi)發(fā)中,常見(jiàn)的一個(gè)問(wèn)題就是session的管理,當(dāng)我們使用HibernateTemplate操作數(shù)據(jù)庫(kù)時(shí),可以不對(duì)session進(jìn)行顯示的操作,spring可以自動(dòng)處理session的打開(kāi)與關(guān)閉。
我們可以在web.xml文件中顯示的配置一個(gè)session管理的過(guò)濾器,它專(zhuān)門(mén)幫助我們關(guān)閉session:
Java代碼

 
 
  1.  
  2. lazyLoadingFilter 
  3.  
  4. org.springframwork.orm.hibernate3.support.OpenSessionInViewFilter 
  5.  
  6.  
  7. lazyLoadingFilter 
  8. *.action 
  9.  
  10. 注:它一定要在struts2的過(guò)濾器之前。因?yàn)閣eb.xml文件的過(guò)濾器執(zhí)行是有順序的。而session一定在前面進(jìn)行。 
  11.         lazyLoadingFilter
  12. org.springframwork.orm.hibernate3.support.OpenSessionInViewFilter
  13.          lazyLoadingFilter
  14.          *.action

注:它一定要在struts2的過(guò)濾器之前。因?yàn)閣eb.xml文件的過(guò)濾器執(zhí)行是有順序的。而session一定在前面進(jìn)行。它會(huì)在所有的action處理完了,頁(yè)面顯示完了,就會(huì)自動(dòng)關(guān)閉session。
六、 spring事務(wù)處理
1、事務(wù)的處理也交給了spring來(lái)管理,要在applicationContext.xml文件中上配置事務(wù)管理類(lèi):
Java代碼
//實(shí)施事務(wù)管理的bean

 
 
  1. class=”org.springframwork.orm.hibernate3.HibernateTransactionManager”> 
  2.  
  3.  
  4.  
  5.  
  6. //實(shí)施事務(wù)管理的bean
  7. class=”org.springframwork.orm.hibernate3.HibernateTransactionManager”>
  8.        
  9.            

它是通過(guò)sessionFactory來(lái)管理,因此在傳進(jìn)來(lái)一個(gè)sessionFactory來(lái)接管事務(wù)處理。
2、 聲明式事務(wù)處理:
在spring中對(duì)事務(wù)進(jìn)行管理時(shí),可以顯示地進(jìn)行事務(wù)處理的定義:
Java代碼

 
 
  1.  
  2.  

//propagation表示的是事務(wù)的傳播特性,使用required時(shí),是當(dāng)檢測(cè)到add開(kāi)頭的方法時(shí),就看此時(shí)有沒(méi)有開(kāi)啟的事務(wù),如果有則將方法放進(jìn)事務(wù)中去,如果沒(méi)有,則新建一個(gè)事務(wù)。然后將方法放進(jìn)去。

 
 
  1.  
  2.  
  3.  
  4. //如果檢測(cè)到其它的方法,則給其只讀數(shù)據(jù)庫(kù)的屬性。即當(dāng)本方法在讀時(shí),其它的方法不能再去寫(xiě)了。保證一個(gè)事務(wù)的完整性。 
  5.  
  6.  
  7.  
  8. //給事務(wù)添加的屬性
  9.      

//propagation表示的是事務(wù)的傳播特性,使用required時(shí),是當(dāng)檢測(cè)到add開(kāi)頭的方法時(shí),就看此時(shí)有沒(méi)有開(kāi)啟的事務(wù),如果有則將方法放進(jìn)事務(wù)中去,如果沒(méi)有,則新建一個(gè)事務(wù)。然后將方法放進(jìn)去。
         
         
          
//如果檢測(cè)到其它的方法,則給其只讀數(shù)據(jù)庫(kù)的屬性。即當(dāng)本方法在讀時(shí),其它的方法不能再去寫(xiě)了。保證一個(gè)事務(wù)的完整性。
          

對(duì)于事務(wù)的其它傳播屬性,則可以參考其它文檔進(jìn)行相關(guān)的了解。
上 一個(gè)配置是針對(duì)于所有包中類(lèi)的事務(wù)處理方法的設(shè)置。下面一段是 的定義,它確保由 ‘txAdvice’ bean定義的事務(wù)通知在應(yīng)用中合適的點(diǎn)被執(zhí)行。首先我們定義了 一個(gè)切面,它匹配 HibernateDAO 接口定義的所有操作,我們把該切面叫做 ‘a(chǎn)llManagerMethod’。然后我們用一個(gè)通知器(advisor)把這個(gè)切面與 ‘txAdvice’ 綁定在一起,表示當(dāng) ‘a(chǎn)llManagerMethod’ 執(zhí)行時(shí),’txAdvice’ 定義的通知事務(wù)邏輯將被執(zhí)行。這就是AOP切面工程:
Java代碼

 
 
  1. Java代碼
  2.  
  3. expression=”execution(* com.hejianjiao.hibernate.HibernateDAO.*(..))”/> 
  4. //調(diào)用上面配置的事務(wù)屬性,可以將它給本aop pointcut。 
  5.  
  6. //如果還有其它的定義,則可以再加上pointcut、advisor來(lái)定義本切面點(diǎn)的事務(wù)邏輯。 
  7.  
  8.       
  9. expression=”execution(* com.hejianjiao.hibernate.HibernateDAO.*(..))”/>
  10. //調(diào)用上面配置的事務(wù)屬性,可以將它給本aop pointcut。
  11.       
  12. //如果還有其它的定義,則可以再加上pointcut、advisor來(lái)定義本切面點(diǎn)的事務(wù)邏輯。

//expression中的內(nèi)容是要執(zhí)行本切面的一個(gè)接口,中的所有方法:如:一個(gè)接口中定義了操作數(shù)據(jù)的方 法:com.hejianjiao.hibernate.HibernateDAO,則下面execution括號(hào)中的內(nèi)容就為:* com.hejianjiao.hibernate.HibernateDAO.*(..)。而如果在com.hejianjiao.hibernate 包中還有其它的類(lèi)也有操作方法,我們要一起定義的話(huà),就可以寫(xiě)為:* com.hejianjiao.*.*(..),其中(..)表示的是方法,前面的***個(gè)*是操作的接口或者類(lèi)。
上面的配置將為由 ‘HibernateDAO’ 定義的bean創(chuàng)建一個(gè)代理對(duì)象,這個(gè)代理對(duì)象被裝配了事務(wù)通知,所以當(dāng)它的相應(yīng)方法被調(diào)用時(shí),一個(gè)事務(wù)將被啟動(dòng)、掛起、被標(biāo)記為只讀,或者其它(根據(jù)該方法所配置的事務(wù)語(yǔ)義)

本文鏈接:http://my.oschina.net/heiyexue/blog/296692


網(wǎng)站欄目:ssh整合分解
文章鏈接:http://www.5511xx.com/article/dphhejo.html