一,數據表(因為是一個小例子,所以只有一個表,畢竟這不是一個講怎么配置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"
          "<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" "

          <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" "

          <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兩個文件,不然會出錯。


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 黄山市| 象山县| 金堂县| 彰化县| 房山区| 资溪县| 女性| 宜章县| 南平市| 陆川县| 大足县| 南木林县| 江城| 肃南| 湖口县| 北票市| 商丘市| 科技| 花莲市| 美姑县| 南平市| 木兰县| 盐池县| 桂平市| 石狮市| 榆社县| 丹江口市| 黄浦区| 独山县| 六安市| 广南县| 乡宁县| 花垣县| 沧源| 平阳县| 湘阴县| 修文县| 禄劝| 红桥区| 灌云县| 安吉县|