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


  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 >   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值