【SSH】Struts+Spring+Hibernate整合例子

本文介绍如何在Myeclipse环境下配置Struts+Spring+Hibernate框架,包括所需包的导入、VO映射、数据操作配置、struts-config.xml及applicationContext.xml文件设置等步骤,并提供了一个简单的用户注册示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  Struts
+Spring+Hibernate    
  本次配置环境:Myeclipse5.
5、MySQL5.0、Struts1.2、Spring2.0、Hibernate3.1    
  一、建工程    
  略。。。。。。    
  二、要使用Struts、Spring、Hibernate必须导入必需的包    
  
1、Struts(和之前没区别)    
  
2、Spring    
     分别导入Spring 
2.0 Core Libraries、Spring 2.0 Web Libraries    
     选择把
*.jar Copy到工程/WebRoot/WEB-INF/lib下; 点击NEXT    
     选择applicationContext.xml的目录,
/WebRoot/WEB-INF;点击finish    
  
3、Hibernate    
     在导入Hibernate时,当然先要配置DataSource咯,这里就不再说了    
     选择导入Hibernate全选上    
     选上复选框:Hibernate 
3.1 Core......、Hibernate 3.1 Advanced......、Spring 2.0 ORM/DAO.......    
     同样选择把
*.jar Copy到工程/WebRoot/WEB-INF/lib下; 点击NEXT    
     这里我们选择把hibernate交给spring去管理    
  选中单选按钮 Spring configuration file...... 点击NEXT    
     选择已存在的applicationContext.xml文件,    
     填写SessionFactory ID :sessionFactory 点击NEXT    
     这里我们需要填写Bean Id :dataSource    
     选择 DB Driver :选择刚才配置的DataSource 点击NEXT    
     这里不需要创建 SessionFactory Class 点击Finish    
     注意:查看applicationContext.xml的变化    
  三、映射VO、数据操作    
  首先工程的结构建好,比较简单的结构:    
  org.chenwj.dao    
  org.chenwj.struts    
  org.chenwj.struts.action    
  org.chenwj.struts.form    
  org.chenwj.vo    
  映射表userinfo创建持久类到org.chenwj.vo目录    
  在dao下创建数据库操作类 UserDAO 这里只是对数据库进去插入,代码如下:    
  
private SessionFactory sessionFactory;    
    
      
public SessionFactory getSessionFactory() {    
         
return sessionFactory;    
      }
    
      
public void setSessionFactory(SessionFactory sessionFactory) {    
         
this.sessionFactory = sessionFactory;    
      }
    
      
/* 用户注册 */    
      
public boolean regist(Userinfo user) {    
         
try {    
             Session session 
= sessionFactory.openSession();    
             Transaction tx 
= session.beginTransaction();    
             session.save(user);    
             tx.commit();    
             session.close();    
             
return true;    
         }
 catch (Exception ex) {    
             ex.printStackTrace();    
             
return false;    
                }
    
         }
    
      使用依赖注入,setter设值 sessionFactory    
      到此数据层已经完成    
        
  四、配置struts
-config.xml    
      添加action、form、jsp 略……    
      首先在struts
-config.xml添加一个插件    
      
<plug-in    
      className
="org.springframework.web.struts.ContextLoaderPlugIn">    
         
<set-property property="contextConfigLocation"    
             value
="/WEB-INF/applicationContext.xml" />    
      
</plug-in>    
      为什么要添回这个插件呢?    
      因为在后面会在applicationContext.xml下配置action,让action交给spring    
      去管理,实现了struts的依赖注入机制    
      接下来添加cuntroller,这里你可以使用DelegatingActionProxy代理    
      
<controller processorClass=    
      
"org.springframework.web.struts.DelegatingRequestProcessor"/>    
      Controller取代了struts的RequestProcessor,在定义action里,我们可以省略    
  type属性。(我个人比较喜欢用这个)下面让我们看配置好的struts
-config.xml:    
  
<struts-config>    
          
<data-sources />    
          
<form-beans>    
             
<form-bean name="userForm"    
             type
="org.chenwj.struts.form.UserForm" />    
          
</form-beans>    
      
<global-exceptions />    
      
<global-forwards />    
      
<action-mappings>    
         
<action attribute="userForm" input="/index.jsp" name="userForm"    
             path
="/user" scope="request">    
             
<forward name="success" path="/success.jsp" />    
             
<forward name="error" path="/index.jsp" />    
         
</action><!--type属性可不写-->    
      
</action-mappings>    
    
      
<controller processorClass=    
  
"org.springframework.web.struts.DelegatingRequestProcessor"/>    
    
       
<message-resources    
         parameter
="org.chenwj.struts.ApplicationResources" />    
       
<plug-in    
      className
="org.springframework.web.struts.ContextLoaderPlugIn">    
         
<set-property property="contextConfigLocation"    
             value
="/WEB-INF/applicationContext.xml" />    
       
</plug-in>    
  
</struts-config>    
    
  五、在applicationContext.xml配置action    
      这里我们先在 action类里添加一些业务逻辑,代码如下:    
      
public class UserAction extends Action {    
    
      
private UserDAO userDao;    
      
private Userinfo user;    
    
      
public ActionForward execute(ActionMapping mapping, ActionForm form,    
         HttpServletRequest request, HttpServletResponse response) 
{    
     UserForm userForm 
= (UserForm) form;    
     
//封装数据    
     user.setName(userForm.getName());    
         user.setPassword(userForm.getPassword());    
         
if(userDao.regist(user)){    
             
return mapping.findForward("success");    
         }
    
         
return mapping.findForward("error");    
      }
    
    
      
public Userinfo getUser() {    
         
return user;    
      }
    
      
public void setUser(Userinfo user) {    
         
this.user = user;    
      }
    
      
public UserDAO getUserDao() {    
         
return userDao;    
      }
    
      
public void setUserDao(UserDAO userDao) {    
         
this.userDao = userDao;    
      }
}
    
      这里使用setter实现依赖注入了两个bean,接下来配置applicationContext.xml    
      
<beans xmlns="略……">    
      
<!- 数据源 -->    
      
<bean id="dataSource"    
         
class="org.apache.commons.dbcp.BasicDataSource">    
         
<property name="driverClassName"    
             value
="com.mysql.jdbc.Driver">    
         
</property>    
          
<property name="url"    
  value
="jdbc:mysql://localhost:3306/demo"></property>    
         
<property name="username" value="root"></property>    
         
<property name="password" value="root"></property>    
      
</bean>    
      
<!--  sessionFactory -->    
      
<bean id="sessionFactory" class=    
  
"org.springframework.orm.hibernate3.LocalSessionFactoryBean">    
  
<property name="dataSource">    
             
<ref bean="dataSource" />    
         
</property>    
         
<property name="hibernateProperties">    
             
<props>    
                
<prop key="hibernate.dialect">    
                    org.hibernate.dialect.MySQLDialect    
                
</prop>    
             
</props>    
         
</property>    
         
<property name="mappingResources">    
             
<list>    
                
<value>org/chenwj/vo/Userinfo.hbm.xml</value>    
             
</list>    
         
</property>    
      
</bean>    
      
<!--  数据库操作类  -->    
      
<bean id="userDao" class="org.chenwj.dao.UserDAO">    
         
<property name="sessionFactory">    
             
<ref local="sessionFactory" />    
         
</property>    
      
</bean>    
      
<!--  action需要注意:这里是name属性不是ID,同时要和struts-config.xml    
        对应的 action path属性值相同,斜线也是必需的,通过这个属性scope
=    
        
"prototype" 每次获取bean实例时都会产生新的实例,默认是单例-->    
      
<bean name="/user" class="org.chenwj.struts.action.UserAction"    
         
abstract="false" lazy-init="default" autowire="default"    
         scope
="prototype" dependency-check="default">    
         
<property name="userDao" ref="userDao" />    
         
<property name="user" ref="user" />    
      
</bean>    
      
<bean id="user" class="org.chenwj.vo.Userinfo" abstract="false"    
         lazy
-init="default" autowire="default"    
           dependency
-check="default">    
      
</bean>    
  
</beans>    
      到此所有的配置已经完成,测试:    
      HTTP Status 
404 - Servlet action is not available    
  The requested resource (Servlet action is not available) is not available    
  这个错误是大部初学者整合 SSH 时都会遇到的问题    
    
      首先建议你使用测试类进行测试,这样我们可以很快找到错误所在的地方    
  
public static void main(String[] args) {    
      ApplicationContext context 
= new FileSystemXmlApplicationContext(    
                
"/WebRoot/WEB-INF/applicationContext.xml");    
          UserDAO dao 
= (UserDAO)context.getBean("userDao");    
         Userinfo user 
= new Userinfo();    
         user.setName(
"aaa");    
         user.setPassword(
"bbb");    
         
boolean a = dao.regist(user);    
         
if(a){    
             System.out.println(
"OK");    
         }
    
     }
    
  如果这里没出错,那么请你好好检查你的配置文件,是否写错或少了些什么东东了    
      这里出的错误也跟使用的版本有关系,这里报的错一般都是说找不到XX类所报的异常    
  那么请检查lib下有没commons
-pool-1.2.jar包,如没请导入,这个问题也有可能是包    
  之间的
****,删除这个包hibernate-annotations.jar    
    
  六、.sql文件、.jsp文件    
  create table userinfo(    
         id 
int(10) not null auto_increment,    
 name varchar(
20),    
 password varchar(
20),    
 PRIMARY KEY  (id))    
     
<body>    
        
<html:form action="/user">    
            name : 
<html:text property="name"/><br/>    
            password : 
<html:password property="password"/><br/>    
            
<html:submit/><html:cancel/>    
        
</html:form>    
     
</body>  
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值