MyEclipse下Spring、Hibernate、Struts如何结合

这篇文章给大家分享的是有关MyEclipse下Spring、Hibernate、Struts如何结合的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

创新互联建站主营临翔网站建设的网络公司,主营网站建设方案,app软件开发,临翔h5微信平台小程序开发搭建,临翔网站营销推广欢迎临翔等地区企业咨询

数据库准备:
数据库名称:AT_SMS
表名称:admin
字段如下:
sid bigint 从1开始自动增加,步长为1,单独做表的主键name varchar(50)
password varchar(50)

开发软件准备:Eclipse 3.1
MyEclipse Enterprise Workbench v4.1.1 GA
JDK1.4.2
Spring1.2[MyEclipse自带的]
Hibernate3.0[MyEclipse自带的]

步骤:
1、设定自己的WorkSpace[D:Eclipse3.1MyWorkspace];

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

2A、配置数据库连接备用。东东在Window->Open Perspective->My Eclipse Database Explore下。在左边空白框点右键选择New,弹出框后填写Profile name:MyTestDB;驱动点Configure database driver去配置,其它的看着填,不想看到所以数据库就在第二步选择Display the selected schemas,点按钮Add时会自动连接数据库显示所有的数据,选择你想看到的,在这我们选择AT_SMS,点finish完成了。

3、添加Spring相关东西[点击菜单MyEclipse->Add SPring Capabilities...][注意:把光标停在工程根目录才能添加,不然是灰灰的];弹出窗口默认选中Spring1.2 Core包,把Spring1.2 ORM/DAO/Hibernate3选中,把Spring1.2 AOP,Spring1.2 Testing都选中[省得测试时候遇到找不到jar再去导入],next,创建一个src目录存放配置文件,finish。

4、添加Hibernate相关东西,注意根Spring关联起来,数据库连接选择之前创建的MyTestDB即可,Dialect默认是Sysbase,我用Sql Server,所以要改过来;Hibernate的bean ID设成跟Spring的一样,结果配置文件提示ID不唯一,哈哈,那就清除Hiebernate相关的东西先,这还有些麻烦,首先要切换到MyEclipse J2EE Development[如果没有这个可能是你的工作区没有这种工程,去创建一个MyEclipseJ2EE工程],接着把工程视图从PackageExplorer切换到Navigator,删除文件名带Hibernate字样的文件,打开.project文件,删除里头关于Hibernate的一个buildCommand,和一个nature.Ok了,可以重新添加Hibernate相关的东西.[注意:SessionFactory就是Spring用来关联Hibernate的那Bean的ID我填SessionFactory,填写数据库参数时的那个BeanID就是数据源名称,我填dataSource]

5、接下来产生Hibernate映射,将视图切换到MyEclipse Database Explorer,点右键打开连接,选择你要产生Java代码的表,我们在这选择admin,弹出窗口发现会默认带出一些参数,由于这个DB连接不是属于单个工程的是个全局的东东,默认参数可能不是你想要的,不管那么多你选择Java src folder到你当前工程的src目录,这就与你的工程关联起来了,参数也跟着变了,Java package设为com.kama.hibernate,选中产生Spring DAO;其它默认,表的主键产生要设置一些,选中表名,在ID Generator选择native;就这样了。

6、让Spring管理数据库事务,在配置文件applicationContext.xml中添加内容:
   
       
           
       

   


       
           
       

       
           
               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
           

       


   class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
       
           
               baseTransactionProxy
           

       

       
           *DAO
       

   

7、事务中,必须是接口调用,具体原因请看其它资料,现在我们增加接口:AdoInterface,在其中定义方法:public void save(Object transientInstance);[用Object做参数类型是为了让所有DAO类共用这个接口];

8、AdminDAO中增加实现接口AdoInterface,修改其save方法的声明,public void save(Object transientInstance)

9、测试方法一,写如下代码来测试:
  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("--测试完毕--");
看到插入的记录了吧!

10、测试方法二:在工程属性的JAVA Builder path->Libraries里头设置导入D:MyEclipseeclipsepluginscom.genuitec.eclipse.springframework_4.1.1data1.2libspring-mock.jar
产生测试类继承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();//想将数据插入数据库就保留这个,不想插入数据库,去掉这句Junit测试会自动回滚。
 Admin admin = new Admin();
 admin.setName("KamaSupport");
 admin.setPassword("123456");
 this.adminDAO.save(admin);
}
以Junit形式运行测试程序。大功告成!

附录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
           

       


   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">
     name="success"
       path="/form/success.jsp"
       redirect="true" />
   

就是将type改成Spring的代理类了,原来的Action类要到Spring的配置文件里头去配置。

Struts配置文件修改完毕!

3、在Spring配置文件中配置path="/addAdmin"对应的bean


 
 
 

class:Struts的ActionBean

property:由Spring产生的DAO,这个属性要在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:调用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,完成了!

注意:部署的时候将spring-web.jar包部署到lib目录下,不然刚才在Struts配置文件里头增加的那几个Class找不到会出现莫名的错误!

感谢各位的阅读!关于“MyEclipse下Spring、Hibernate、Struts如何结合”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


网站栏目:MyEclipse下Spring、Hibernate、Struts如何结合
URL链接:http://pwwzsj.com/article/jojceg.html