<%@ page contentType="text/html; charset=gb2312"%> spring hibernate struts整合开发实例
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
spring hibernate struts整合开发实例
     发布者: 发布时间:2008-05-17
一,数据表(因为是一个小例子,所以只有一个表,毕竟这不是一个讲怎么配置hibernate级联的例子。)
CREATE TABLE `members` (
`id` int(7) NOT NULL auto_increment,
`name` varchar(20) NOT NULL default '',
`password` varchar(20) default NULL,
`sex` varchar(10) default NULL,
`mail` varchar(50) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
二,hibernate持久化类及映射文件、数据库操作封装DAO
package com.yang.product.booksonline.dao;

/**
* Members
*/

public class Members implements java.io.Serializable {


  // Fields  

  private Integer id;
  private String name;
  private String password;
  private String sex;
  private String mail;


  // Constructors

  /** default constructor */
  public Members() {
  }

     /** minimal constructor */
  public Members(String name) {
    this.name = name;
  }
 
  /** full constructor */
  public Members(String name, String password, String sex, String mail) {
    this.name = name;
    this.password = password;
    this.sex = sex;
    this.mail = mail;
  }

 
  // Property accessors

  public Integer getId() {
    return this.id;
  }
 
  public void setId(Integer id) {
    this.id = id;
  }

  public String getName() {
    return this.name;
  }
 
  public void setName(String name) {
    this.name = name;
  }

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

  public String getSex() {
    return this.sex;
  }
 
  public void setSex(String sex) {
    this.sex = sex;
  }

  public String getMail() {
    return this.mail;
  }
 
  public void setMail(String mail) {
    this.mail = mail;
  }
}

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="com.yang.product.booksonline.dao.Members" table="members" catalog="books">
    <id name="id" type="integer">
        <column name="id" />
        <generator class="native" />
    </id>
    <property name="name" type="string">
        <column name="name" length="20" not-null="true" unique="true" />
    </property>
    <property name="password" type="string">
        <column name="password" length="20" />
    </property>
    <property name="sex" type="string">
        <column name="sex" length="10" />
    </property>
    <property name="mail" type="string">
        <column name="mail" length="50" />
    </property>
  </class>
</hibernate-mapping>

package com.yang.product.booksonline.dao;

import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.criterion.Example;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
* Data access object (DAO) for domain model class Members.
* @see com.yang.product.booksonline.dao.Members
* @author lanxincao
*/
public class MembersDAO extends HibernateDaoSupport {

  private static final Log log = LogFactory.getLog(MembersDAO.class);

     protected void initDao() {
           //do nothing
     }
 
  public void save(Members transientInstance) {
    log.debug("saving Members instance");
    try {
        getHibernateTemplate().saveOrUpdate(transientInstance);
        log.debug("save successful");
    } catch (RuntimeException re) {
        log.error("save failed", re);
        throw re;
    }
  }
 
     public void delete(Members persistentInstance) {
    log.debug("deleting Members instance");
    try {
        getHibernateTemplate().delete(persistentInstance);
        log.debug("delete successful");
    } catch (RuntimeException re) {
        log.error("delete failed", re);
        throw re;
    }
  }
 
  public Members findById( java.lang.Integer id) {
    log.debug("getting Members instance with id: " + id);
    try {
        Members instance = (Members) getHibernateTemplate()
            .get("com.yang.product.booksonline.dao.Members", id);
        return instance;
    } catch (RuntimeException re) {
        log.error("get failed", re);
        throw re;
    }
  }
 
 
  public List findByExample(Members instance) {
    log.debug("finding Members instance by example");
    try {
        List results = getSession()
            .createCriteria("com.yang.product.booksonline.dao.Members")
            .add(Example.create(instance))
        .list();
        log.debug("find by example successful, result size: " + results.size());
        return results;
    } catch (RuntimeException re) {
        log.error("find by example failed", re);
        throw re;
    }
  }  
 
  public Members merge(Members detachedInstance) {
    log.debug("merging Members instance");
    try {
        Members result = (Members) getHibernateTemplate()
            .merge(detachedInstance);
        log.debug("merge successful");
        return result;
    } catch (RuntimeException re) {
        log.error("merge failed", re);
        throw re;
    }
  }

  public void attachDirty(Members instance) {
    log.debug("attaching dirty Members instance");
    try {
        getHibernateTemplate().saveOrUpdate(instance);
        log.debug("attach successful");
    } catch (RuntimeException re) {
        log.error("attach failed", re);
        throw re;
    }
  }
 
  public void attachClean(Members instance) {
    log.debug("attaching clean Members instance");
    try {
        getHibernateTemplate().lock(instance, LockMode.NONE);
        log.debug("attach successful");
    } catch (RuntimeException re) {
        log.error("attach failed", re);
        throw re;
    }
  }
 
  public List findByMembersName(String name){
       log.debug("finding by members' name.");
       try {
             return getHibernateTemplate().find("from Members as members where members.name = ?"
                         ,new String[]{name});
       } catch (RuntimeException re) {
             log.error("finding by members' name failed",re);
             throw re;
       }
  }

     public static MembersDAO getFromApplicationContext(ApplicationContext ctx) {
       return (MembersDAO) ctx.getBean("MembersDAO");
     }
}

三,spring配置
<?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="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
           <property name="driverClassName">
                 <value>com.mysql.jdbc.Driver</value>
           </property>
           <property name="url">
                 <value>jdbc:mysql://localhost:3306/books</value>
           </property>
           <property name="username">
                 <value>root</value>
           </property>
           <property name="password">
                 <value>snrdcqmq</value>
           </property>
     </bean>
     <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>com/yang/product/booksonline/dao/Members.hbm.xml</value>
                 </list>
           </property>
     </bean>
     <bean id="MembersDAO" class="com.yang.product.booksonline.dao.MembersDAO">
           <property name="sessionFactory">
                 <ref bean="sessionFactory" />
           </property>
     </bean>
     
     <bean name="/members" class="com.yang.product.booksonline.action.MembersAction">
           <property name="membersDAO">
                 <ref bean="MembersDAO"/>
           </property>
     </bean>
</beans>
四,struts配置及action类
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans >
  <form-bean name="membersForm" type="org.apache.struts.validator.DynaValidatorForm">
    <form-property name="sex" type="java.lang.String" />
    <form-property name="password" type="java.lang.String" />
    <form-property name="mail" type="java.lang.String" />
    <form-property name="name" type="java.lang.String" />
  </form-bean>

</form-beans>

<global-exceptions />
<global-forwards />
<action-mappings >
  <action
    attribute="membersForm"
    name="membersForm"
    parameter="action"
    path="/members"
    scope="request"
    type="org.springframework.web.struts.DelegatingActionProxy" >
    <forward name="loginSuccess" path="/index.jsp" />
    <forward name="registerSuccess" path="/index.jsp" />
    <forward name="logoutSuccess" path="/index.jsp" />
  </action>


</action-mappings>

<message-resources parameter="com.yang.product.booksonline.ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
  <set-property property="stopOnFirstError" value="true" />
</plug-in>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
  <set-property property="contextConfigLocation" value="/WEB-INF/springContext.xml" />
</plug-in>

</struts-config>

package com.yang.product.booksonline.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.actions.DispatchAction;

import com.yang.product.booksonline.dao.Members;
import com.yang.product.booksonline.dao.MembersDAO;

/**
* XDoclet definition:
* @struts.action path="/members" name="membersForm" parameter="action" scope="request" validate="true"
*/
public class MembersAction extends DispatchAction {
     private MembersDAO membersDAO;

     public MembersDAO getMembersDAO() {
           return membersDAO;
     }

     public void setMembersDAO(MembersDAO membersDAO) {
           this.membersDAO = membersDAO;
     }
     
     public ActionForward login (ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) {
//            String url = request.getParameter("url");
           String name = (String)((DynaActionForm)form).get("name");
           String password = (String)((DynaActionForm)form).get("password");
           List members = membersDAO.findByMembersName(name);
           if (members != null && members.size() >0) {
                 Members member = (Members)members.get(0);
                 if (password.equals(member.getPassword())) {
                       request.getSession().setAttribute("member",name);
                       //return new ActionForward(url);
                       return mapping.findForward("loginSuccess");
                 } else {
                       return null;
                 }
           } else {
                 return null;
           }
     }

     public ActionForward logout (ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) {
           request.getSession().removeAttribute("member");
           return mapping.findForward("logoutSuccess");
     }

     public ActionForward register (ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) {
           String name = (String)((DynaActionForm)form).get("name");
           String password = (String)((DynaActionForm)form).get("password");
           String sex = (String)((DynaActionForm)form).get("sex");
           String mail = (String)((DynaActionForm)form).get("mail");
           List members = membersDAO.findByMembersName(name);
           if (members != null && members.size() >0) {
                 return null;
           } else {
                 Members member = new Members();
                 member.setName(name);
                 member.setPassword(password);
                 member.setSex(sex);
                 member.setMail(mail);
                 membersDAO.save(member);
                 return mapping.findForward("registerSuccess");
           }
     }
}

注意到,这里使用了dispatchaction。
五,三个jsp部分内容
index.jsp
<body>
<logic:notPresent name="member" scope="session">
     Welcome,you have not <html:link href="login.jsp">login</html:link>. <br>
</logic:notPresent>
<logic:present name="member" scope="session">
     Welcome,<bean:write name="member" scope="session"/>.<html:link href="members.do?action=logout">Logout</html:link>
</logic:present>
</body>
login.jsp
<body>
  If you haven't registered the system,please <html:link href="register.jsp">register</html:link>
  <html:form action="/members.do?action=login" method="post" focus="name">
    <table border="0">
    <tr>
      <td><bean:message key="members.form.name.label"/>:</td>
      <td><html:text property="name" /></td>
    </tr>
    <tr>
      <td><bean:message key="members.form.password.label"/>:</td>
      <td><html:password property="password" /></td>
    </tr>
    <tr>
      <td colspan="2" align="center"><html:submit><bean:message key="members.form.login.label"/></html:submit></td>
    </tr>
    </table>
  </html:form>
</body>
register.jsp
<body>
  Welcome to register the books online. <br>
  <html:form action="/members.do?action=register" method="POST">
  <bean:message key="members.form.name.label"/>:<html:text property="name"/><br>
  <bean:message key="members.form.password.label"/>:<html:password property="password"/><br>
  <bean:message key="members.form.sex.label"/>:
  <html:select property="sex">
       <html:option key="members.form.sex.male" value="male" />
       <html:option key="members.form.sex.female" value="female" />
  </html:select><br>
  <bean:message key="members.form.mail.label"/>:<html:text property="mail"/><br>
  <html:submit><bean:message key="members.form.register.label"/></html:submit>
  </html:form>
</body>

注意:在开发过程中,本想加上输入验证的,因为前面己经有了这方面的例子,为了不重复,这里就有意去掉了这部分,但要运行这个例子,还是你自己加上validation.xml、validator-rules.xml两个文件,不然会出错。
(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
spring hibernate struts整合开发实例
用JBuilder9 开发Struts实例
ajax/dwr/struts实例开发
ajax/dwr/struts实例开发
ajax之旅dwr探密
DWR学习
 
最近评论:
        
鍥炲
        
如果真的有来生!
四川旅游,九寨沟旅游,稻城亚丁旅游,四姑娘山旅游,海螺沟旅游,西藏旅游, max(1637)
        
如果真的有来生!
四川旅游,九寨沟旅游,稻城亚丁旅游,四姑娘山旅游,海螺沟旅游,西藏旅游, max(4451)
        
那天的情景!
Maple Story mesos,MapleStory mesos,ms mesos,mesos,SilkRoad Gold, max(3088)
        
轻轻走过你的窗前!
world of warcraft gold,cheap world of warcraft gold,warcraft gold,world of warcraft gold,cheap world of warcraft gold,warcraft gold, max(8084)
        
不在的哪天!
final fantasy xi gil,final fantasy xi gil,final fantasy xi gil,final fantasy xi gil, max(1409)
        
轻轻走过你的窗前!
world of warcraft gold,cheap world of warcraft gold,warcraft gold,world of warcraft gold,cheap world of warcraft gold,warcraft gold max(5881)
        
不在的哪天!
final fantasy xi gil,final fantasy xi gil,final fantasy xi gil,final fantasy xi gil, max(6551)
        
昨夜的狂想曲!
wow gold,WoW Gold,world of warcraft gold,WoW Gold, max(254)
        
没有情人的情人节!
wow gold,wow power leveling.wow power leveling,wow power leveling, max(2459)
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号