MyEclipse下Spring、Hibernate、Struts如何結(jié)合

這篇文章給大家分享的是有關(guān)MyEclipse下Spring、Hibernate、Struts如何結(jié)合的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)建站主營臨翔網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā),臨翔h5微信平臺(tái)小程序開發(fā)搭建,臨翔網(wǎng)站營銷推廣歡迎臨翔等地區(qū)企業(yè)咨詢

數(shù)據(jù)庫準(zhǔn)備:
數(shù)據(jù)庫名稱:AT_SMS
表名稱:admin
字段如下:
sid bigint 從1開始自動(dòng)增加,步長(zhǎng)為1,單獨(dú)做表的主鍵name varchar(50)
password varchar(50)

開發(fā)軟件準(zhǔn)備:Eclipse 3.1
MyEclipse Enterprise Workbench v4.1.1 GA
JDK1.4.2
Spring1.2[MyEclipse自帶的]
Hibernate3.0[MyEclipse自帶的]

步驟:
1、設(shè)定自己的WorkSpace[D:Eclipse3.1MyWorkspace];

2、建立普通Java工程[不是MyEclipse Web工程]MyProject[D:Eclipse3.1MyWorkspaceMyProject;

2A、配置數(shù)據(jù)庫連接備用。東東在Window->Open Perspective->My Eclipse Database Explore下。在左邊空白框點(diǎn)右鍵選擇New,彈出框后填寫Profile name:MyTestDB;驅(qū)動(dòng)點(diǎn)Configure database driver去配置,其它的看著填,不想看到所以數(shù)據(jù)庫就在第二步選擇Display the selected schemas,點(diǎn)按鈕Add時(shí)會(huì)自動(dòng)連接數(shù)據(jù)庫顯示所有的數(shù)據(jù),選擇你想看到的,在這我們選擇AT_SMS,點(diǎn)finish完成了。

3、添加Spring相關(guān)東西[點(diǎn)擊菜單MyEclipse->Add SPring Capabilities...][注意:把光標(biāo)停在工程根目錄才能添加,不然是灰灰的];彈出窗口默認(rèn)選中Spring1.2 Core包,把Spring1.2 ORM/DAO/Hibernate3選中,把Spring1.2 AOP,Spring1.2 Testing都選中[省得測(cè)試時(shí)候遇到找不到j(luò)ar再去導(dǎo)入],next,創(chuàng)建一個(gè)src目錄存放配置文件,finish。

4、添加Hibernate相關(guān)東西,注意根Spring關(guān)聯(lián)起來,數(shù)據(jù)庫連接選擇之前創(chuàng)建的MyTestDB即可,Dialect默認(rèn)是Sysbase,我用Sql Server,所以要改過來;Hibernate的bean ID設(shè)成跟Spring的一樣,結(jié)果配置文件提示ID不唯一,哈哈,那就清除Hiebernate相關(guān)的東西先,這還有些麻煩,首先要切換到MyEclipse J2EE Development[如果沒有這個(gè)可能是你的工作區(qū)沒有這種工程,去創(chuàng)建一個(gè)MyEclipseJ2EE工程],接著把工程視圖從PackageExplorer切換到Navigator,刪除文件名帶Hibernate字樣的文件,打開.project文件,刪除里頭關(guān)于Hibernate的一個(gè)buildCommand,和一個(gè)nature.Ok了,可以重新添加Hibernate相關(guān)的東西.[注意:SessionFactory就是Spring用來關(guān)聯(lián)Hibernate的那Bean的ID我填SessionFactory,填寫數(shù)據(jù)庫參數(shù)時(shí)的那個(gè)BeanID就是數(shù)據(jù)源名稱,我填dataSource]

5、接下來產(chǎn)生Hibernate映射,將視圖切換到MyEclipse Database Explorer,點(diǎn)右鍵打開連接,選擇你要產(chǎn)生Java代碼的表,我們?cè)谶@選擇admin,彈出窗口發(fā)現(xiàn)會(huì)默認(rèn)帶出一些參數(shù),由于這個(gè)DB連接不是屬于單個(gè)工程的是個(gè)全局的東東,默認(rèn)參數(shù)可能不是你想要的,不管那么多你選擇Java src folder到你當(dāng)前工程的src目錄,這就與你的工程關(guān)聯(lián)起來了,參數(shù)也跟著變了,Java package設(shè)為com.kama.hibernate,選中產(chǎn)生Spring DAO;其它默認(rèn),表的主鍵產(chǎn)生要設(shè)置一些,選中表名,在ID Generator選擇native;就這樣了。

6、讓Spring管理數(shù)據(jù)庫事務(wù),在配置文件applicationContext.xml中添加內(nèi)容:
   
       
           
       

   


       
           
       

       
           
               PROPAGATION_REQUIRED,readOnly
               PROPAGATION_REQUIRED,readOnly
               PROPAGATION_REQUIRED,readOnly
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
           

       


   <bean id="autoProxyCreator"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
       
           
               baseTransactionProxy
           

       

       
           *DAO
       

   

7、事務(wù)中,必須是接口調(diào)用,具體原因請(qǐng)看其它資料,現(xiàn)在我們?cè)黾咏涌冢篈doInterface,在其中定義方法:public void save(Object transientInstance);[用Object做參數(shù)類型是為了讓所有DAO類共用這個(gè)接口];

8、AdminDAO中增加實(shí)現(xiàn)接口AdoInterface,修改其save方法的聲明,public void save(Object transientInstance)

9、測(cè)試方法一,寫如下代碼來測(cè)試:
  ApplicationContext ctx = new ClassPathXmlApplicationContext(
  "applicationContext.xml");
  AdoInterface dao = (AdoInterface) ctx.getBean("AdminDAO");
 
 System.out.println(dao.toString());  
 Admin admin = new Admin();
 admin.setName("Kama");
 admin.setPassword("123456");  
 dao.save(admin);
 System.out.println("--測(cè)試完畢--");
看到插入的記錄了吧!

10、測(cè)試方法二:在工程屬性的JAVA Builder path->Libraries里頭設(shè)置導(dǎo)入D:MyEclipseeclipsepluginscom.genuitec.eclipse.springframework_4.1.1data1.2libspring-mock.jar
產(chǎn)生測(cè)試類繼承org.springframework.test.AbstractTransactionalSpringContextTests;修改:
protected String[] getConfigLocations() {
 return new String[]
             { "/applicationContext.xml" };
}
增加:
private AdoInterface adminDAO;
public void setAdminDAO(AdoInterface adminDAO)
{
 this.adminDAO = adminDAO;
}

public void testSave()
{
 this.setComplete();//想將數(shù)據(jù)插入數(shù)據(jù)庫就保留這個(gè),不想插入數(shù)據(jù)庫,去掉這句Junit測(cè)試會(huì)自動(dòng)回滾。
 Admin admin = new Admin();
 admin.setName("KamaSupport");
 admin.setPassword("123456");
 this.adminDAO.save(admin);
}
以Junit形式運(yùn)行測(cè)試程序。大功告成!

附錄A:applicationContext.xml



 
 net.sourceforge.jtds.jdbc.Driver
 

 
 jdbc:jtds:sqlserver://127.0.0.1:3344/AT_SMS;SelectMethod=cursor
 

 
 sa
 

 
 123456
 



   
       
           
       

   


       
           
       

       
           
               PROPAGATION_REQUIRED,readOnly
               PROPAGATION_REQUIRED,readOnly
               PROPAGATION_REQUIRED,readOnly
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
               PROPAGATION_REQUIRED
           

       


   <bean id="autoProxyCreator"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
       
           
               baseTransactionProxy
           

       

       
           *DAO
       

   


 
 
 

 
 
   org.hibernate.dialect.SQLServerDialect
 

 

 
 
   com/kama/hibernate/Admin.hbm.xml
 

 



 
 
 

附錄B:log4j.properties
log4j.rootLogger=INFO,default
log4j.logger.org=ERROR
log4j.logger.com.comp=ERROR
log4j.logger.net.sf.hibernate=ERROR
log4j.logger.net.sf.hibernate.SQL=ERROR
log4j.logger.net.sf.hibernate.type=ERROR
log4j.logger.net.sf.ehcache=ERROR
log4j.logger.org.springframework=ERROR

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}:[%p]  [%t] %r   %l %m%n

log4j.appender.default=org.apache.log4j.RollingFileAppender
log4j.appender.default.Threshold=DEBUG
log4j.appender.default.File=kama.log
log4j.appender.default.Append=true
log4j.appender.default.MaxFileSize=1000KB
log4j.appender.default.MaxBackupIndex=3
log4j.appender.default.layout=org.apache.log4j.PatternLayout
log4j.appender.default.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}:[%p]  [%t] %r   %l %m%n

[@more@]1、在struts-config.xml中增加:


 

2、修改Struts的Action映射:

attribute="addAdminForm"
     input="/form/addAdmin.jsp"
     name="addAdminForm"
     path="/addAdmin"
     scope="request"
     type="org.springframework.web.struts.DelegatingActionProxy">
     <forward
name="success"
       path="/form/success.jsp"
       redirect="true" />
   

就是將type改成Spring的代理類了,原來的Action類要到Spring的配置文件里頭去配置。

Struts配置文件修改完畢!

3、在Spring配置文件中配置path="/addAdmin"對(duì)應(yīng)的bean


 
 
 

class:Struts的ActionBean

property:由Spring產(chǎn)生的DAO,這個(gè)屬性要在com.kama.struts.action.AddAdminAction中定義,并且要定義Setter方法。

4、在Action中使用DAO:

4.1:定義DAO屬性:

private AdoInterface dao;

4.2:定義Setter,Getter方法:

public AdoInterface getDao()
{
 return dao;
}

public void setDao(AdoInterface dao)
{
 this.dao = dao;
}

4.3:調(diào)用DAO:

public ActionForward execute(  
 ActionMapping mapping,
 ActionForm form,
 HttpServletRequest request,
 HttpServletResponse response) {
 AddAdminForm addAdminForm = (AddAdminForm) form;
 Admin id = new Admin();
 id.setName(addAdminForm.getName());
 id.setPassword(addAdminForm.getPassword());  
 dao.save(id);  
 return mapping.findForward("success");
}

OK,完成了!

注意:部署的時(shí)候?qū)pring-web.jar包部署到lib目錄下,不然剛才在Struts配置文件里頭增加的那幾個(gè)Class找不到會(huì)出現(xiàn)莫名的錯(cuò)誤!

感謝各位的閱讀!關(guān)于“MyEclipse下Spring、Hibernate、Struts如何結(jié)合”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

標(biāo)題名稱:MyEclipse下Spring、Hibernate、Struts如何結(jié)合
網(wǎng)頁地址:http://muchs.cn/article46/jojceg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站排名、網(wǎng)站改版微信小程序、營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)