Struts+Spring+Hibernate整合的例子(五)

接下来是UserForm的代码:

 

 

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 
*/

/**
 * 
@author zhu国辉
 
*/

package  com.zgh.struts.form;

import  javax.servlet.http.HttpServletRequest;
import  org.apache.struts.action.ActionErrors;
import  org.apache.struts.action.ActionForm;
import  org.apache.struts.action.ActionMapping;

/** 
 * MyEclipse Struts
 * Creation date: 01-07-2008
 * 
 * XDoclet definition:
 * @struts.form name="userForm"
 
*/

public   class  UserForm  extends  ActionForm  {
    
/*
     * Generated fields
     
*/


    
/** id property */
    
private String id;

    
/** username property */
    
private String username;

    
/** password property */
    
private String password;

    
/*
     * Generated Methods
     
*/


    
/** 
     * Method validate
     * 
@param mapping
     * 
@param request
     * 
@return ActionErrors
     
*/

    
public ActionErrors validate(ActionMapping mapping,
            HttpServletRequest request) 
{
        
// TODO Auto-generated method stub
        return null;
    }


    
/** 
     * Method reset
     * 
@param mapping
     * 
@param request
     
*/

    
public void reset(ActionMapping mapping, HttpServletRequest request) {
        
// TODO Auto-generated method stub
    }


    
/** 
     * Returns the id.
     * 
@return String
     
*/

    
public String getId() {
        
return id;
    }


    
/** 
     * Set the id.
     * 
@param id The id to set
     
*/

    
public void setId(String id) {
        
this.id = id;
    }


    
/** 
     * Returns the username.
     * 
@return String
     
*/

    
public String getUsername() {
        
return username;
    }


    
/** 
     * Set the username.
     * 
@param username The username to set
     
*/

    
public void setUsername(String username) {
        
this.username = username;
    }


    
/** 
     * Returns the password.
     * 
@return String
     
*/

    
public String getPassword() {
        
return password;
    }


    
/** 
     * Set the password.
     * 
@param password The password to set
     
*/

    
public void setPassword(String password) {
        
this.password = password;
    }

}

 以下是applicationContext.xml的代码:

 

<? xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >

< beans >

    
    
<!-- ==================== 数据源=======================  -->
    
< bean  id ="myDataSource"
        class
="org.apache.commons.dbcp.BasicDataSource" >
        
< property  name ="driverClassName" >
            
< value > com.mysql.jdbc.Driver </ value >
        
</ property >
        
< property  name ="url" >
            
< value > jdbc:mysql://localhost:3306/test </ value >
        
</ property >
        
< property  name ="username" >
            
< value > root </ value >
        
</ property >
        
< property  name ="password" >
            
< value > root </ value >
        
</ property >
    
</ bean >

    
<!-- ==================== 连接工厂=======================  -->
    
< bean  id ="mySessionFactory"  class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
        
< property  name ="mappingResources" >
            
< list >
                
< value > com/zgh/hibernate/vo/User.hbm.xml </ value ></ list >
        
</ property >
        
< property  name ="dataSource" >
            
< ref  bean ="myDataSource"   />
        
</ property >
        
< property  name ="hibernateProperties" >
            
< props >
                
< prop  key ="hibernate.dialect" > org.hibernate.dialect.MySQLDialect </ prop >
                
< prop  key ="hibernate.show_sql" > true </ prop >
            
</ props >
        
</ property >
    
</ bean >
    
    
<!-- ==================== DAO=======================  -->
    
< bean  id ="userLoginDao"  class ="com.zgh.spring.dao.UserLoginDao" >
        
< property  name ="sessionFactory" >
            
< ref  local ="mySessionFactory" />
        
</ property >
    
</ bean >
    
    
<!-- ====================Service=======================  -->
    
< bean  id ="userLoginService"  class ="com.zgh.spring.service.UserLoginService" >
        
< property  name ="userLoginDao" >
            
< ref  local ="userLoginDao" />
        
</ property >
    
</ bean >
    
     
<!-- ====================hibernate事务管理器=======================  -->
    
< bean  id ="hibernateTransactionManager"  class ="org.springframework.orm.hibernate3.HibernateTransactionManager" >
        
< property  name ="sessionFactory" >
            
< ref  local ="mySessionFactory" />
        
</ property >
    
</ bean >
    
     
<!-- ====================事务代理=======================  -->
     
<!--  第一个属性:transactionManager是设置事务管理器  -->
     
<!--  第二个属性:target是设置要代理的对象  -->
     
<!--  第三个属性:transactionAttributes是设置代理对象的方法的事务属性.这里设置的是:开启一个事务,并且是只读的(因为是查询)  -->
    
< bean  id ="proxyUserLoginService"  class ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" >
        
< property  name ="transactionManager" >
            
< ref  local ="hibernateTransactionManager" />
        
</ property >
        
< property  name ="target" >
            
< ref  local ="userLoginService" />
        
</ property >
        
< property  name ="transactionAttributes" >
            
< props >
                
< prop  key ="getUser*" > PROPAGATION_REQUIRED,readOnly </ prop >
            
</ props >
        
</ property >
    
</ bean >
    
    
<!-- ====================Action=======================  -->     
    
<!--  此时要用bean的name属性,不要用id属性  -->
    
< bean  name ="/login"  class ="com.zgh.struts.action.LoginAction" >
        
< property  name ="userLoginService" >
            
< ref  bean ="proxyUserLoginService" />
        
</ property >
    
</ bean >     
</ beans >

上面的xml中,大部分得自己写,如有哪处不明白,留言吧,

数据源和SessionFactory是配置时创建的。下面是Web.xml:

<? xml version="1.0" encoding="UTF-8" ?>
< web-app  xmlns ="http://java.sun.com/xml/ns/j2ee"  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"  version ="2.4"  xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
  
< servlet >
    
< servlet-name > action </ servlet-name >
    
< servlet-class > org.apache.struts.action.ActionServlet </ servlet-class >
    
< init-param >
      
< param-name > config </ param-name >
      
< param-value > /WEB-INF/struts-config.xml </ param-value >
    
</ init-param >
    
< init-param >
      
< param-name > debug </ param-name >
      
< param-value > 3 </ param-value >
    
</ init-param >
    
< init-param >
      
< param-name > detail </ param-name >
      
< param-value > 3 </ param-value >
    
</ init-param >
    
< load-on-startup > 0 </ load-on-startup >
  
</ servlet >
  
< servlet-mapping >
    
< servlet-name > action </ servlet-name >
    
< url-pattern > *.do </ url-pattern >
  
</ servlet-mapping >
</ web-app >

下面是我的项目的结构:

最后总结:在这个项目中,通过Struts建立视图,并担任控制器角色,Spring则把整个项目的耦合度减到最小,通过Spring的aop实现声明式事务(只需在配置文件中配置),通过Spring提供的Hibernate模板,我们甚至都不用关心Session的创建与关闭.还要说明一点登陆时不要输入中文,这里面没进行转码,我会在以后补充的.

好了,太晚了,以后有不详细的再补充吧!!有疑问留言吧,我去睡觉喽。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值