Java之旅
          Record my Java-learning progress.
          posts - 1,comments - 17,trackbacks - 0
          最近幾天,自己在研究Struts、Hibernate和Ajax的整合,對(duì)于Hibernate和Ajax對(duì)我來(lái)說(shuō)還是比較新鮮的技術(shù),也頗有興趣,在這里把步驟簡(jiǎn)單整理一下:

          環(huán)境:
          JDK 1.5
          Eclipse 3.2
          MyEclipse 5.0 M1
          Tomcat 5.5.23
          MySQL 5.0.19

          1. 在MySQL中建表:
          Create Database users;
          USE users;

          Create table user (
            userID 
          int not null auto_increment,
            userName 
          varchar(20not null unique,
            password 
          varchar(20not null,
            lastLogon 
          timestamp,
            
          primary key(userID)
          );

          2. 打開(kāi)Eclipse,新建一個(gè)Web Project:
          鑒于要完成的是Struts+Hibernate+Ajax,把項(xiàng)目名取為:sha
          其他的什么都不用改。“完成”

          2. 配置MyEclipse Database Explorer
              Eclipse界面-窗口-打開(kāi)透視圖-MyEclipse Database Explorer-New:
          測(cè)試,出現(xiàn):
          連接后出現(xiàn)上圖,完成。

          3. 為項(xiàng)目添加Struts和Hibernate。
              3.1 右鍵項(xiàng)目,MyEclipse,Add Struts...
                  
          把默認(rèn)的company改成sha后,完成。(不改也行)

              3.2 右鍵項(xiàng)目,MyEclipse,Add Hibernate...
                 默認(rèn)不作修改,下一步,下一步,選擇DB profile:
                  
          下一步:
          SessionFactory Class:com.sha.HibernateSessionFactory,完成。

          3.  生成數(shù)據(jù)庫(kù)-XML映射:
                  打開(kāi)MyEclipse Database Explorer,選擇表user,右鍵,Hibernate Reverse...選擇默認(rèn)的com后,完成。

          4.  創(chuàng)建Action,F(xiàn)orm,JSP。
              打開(kāi)struts-config.xml,右鍵新建"Form Action and JSP":

          下一步,在Forwards里面添加:Name:success;Path:/jsp/success.jsp

          完成:


          在jsp文件夾下,新建success.jsp文件。內(nèi)容任意。

          添加新的資源文件:

          1<message-resources parameter="com.sha.struts.ApplicationResources_Err" key="error"/>


          5.  在/src/com/sha下創(chuàng)建UserDAOFactory.java

           1package com.sha;
           2
           3import org.hibernate.HibernateException;
           4import org.hibernate.Session;
           5import org.hibernate.Transaction;
           6
           7import com.sha.HibernateSessionFactory;
           8import com.User;
           9
          10public class UserDAOFactory {
          11 Session session;
          12 Transaction tx;
          13 public void add(User user) throws HibernateException {
          14
          15  try {
          16   session = HibernateSessionFactory.currentSession();
          17   tx = session.beginTransaction();
          18   //Add a new user
          19   session.save(user);
          20   tx.commit ();
          21  }
          catch(HibernateException e){
          22   throw e;
          23  }
          finally{
          24   if (tx!=null{
          25    tx.rollback();
          26   }
           
          27   HibernateSessionFactory.closeSession();
          28  }

          29 }

          30}

          31
          32

          6. 修改addUserAction.java:
           1/*
           2 * Generated by MyEclipse Struts
           3 * Template path: templates/java/JavaClass.vtl
           4 */

           5package com.sha.struts.action;
           6
           7import javax.servlet.http.HttpServletRequest;
           8import javax.servlet.http.HttpServletResponse;
           9import org.apache.struts.action.Action;
          10import org.apache.struts.action.ActionForm;
          11import org.apache.struts.action.ActionForward;
          12import org.apache.struts.action.ActionMapping;
          13
          14import com.User;
          15import com.sha.UserDAOFactory;
          16import com.sha.struts.form.AddUserForm;
          17
          18/** 
          19 * MyEclipse Struts
          20 * Creation date: 05-21-2008
          21 * 
          22 * XDoclet definition:
          23 * @struts.action path="/addUser" name="addUserForm" input="/form/addUser.jsp" scope="request" validate="true"
          24 * @struts.action-forward name="success" path="/jsp/success.jsp"
          25 */

          26public class AddUserAction extends Action {
          27    /*
          28     * Generated Methods
          29     */

          30
          31    /** 
          32     * Method execute
          33     * @param mapping
          34     * @param form
          35     * @param request
          36     * @param response
          37     * @return ActionForward
          38     */

          39    public ActionForward execute(ActionMapping mapping, ActionForm form,
          40            HttpServletRequest request, HttpServletResponse response) {
          41            AddUserForm addUserForm = (AddUserForm) form;// TODO Auto-generated method stub
          42            User user = new User();
          43            user.setUserName(addUserForm.getUserName ());
          44            user.setPassword(addUserForm.getPassword ());
          45             UserDAOFactory userDAO = new UserDAOFactory ();
          46             userDAO.add(user);
          47          
          48             return mapping.findForward("success");
          49    }

          50}

          7.  修改addUserForm.java:
           1    public ActionErrors validate(ActionMapping mapping,
           2            HttpServletRequest request) {
           3        ActionErrors errors = new ActionErrors();
           4        
           5        if(userName == "" || userName.length() < 1)
           6            errors.add("usernameErr",new ActionError("err.username.null"));
           7
           8        if(password == "" || password.length() < 1)
           9            errors.add("userpasswordErr",new ActionError("err.password.null"));
          10        
          11        Session session = HibernateSessionFactory.currentSession();
          12        Transaction tx = session.beginTransaction ();
          13        Query query = session.createQuery("SELECT user FROM User AS user WHERE user.userName = '" + this.userName + "'");
          14        Iterator it = query.iterate ();
          15        if (it.hasNext()){
          16            errors.add ("usernameErr",new ActionError("err.username.exist"));
          17        }
           
          18        tx.commit();
          19        HibernateSessionFactory.closeSession ();
          20        return errors;
          21    }

          22
          23public void reset(ActionMapping mapping, HttpServletRequest request) {
          24        this.userName = null;
          25        this.password = null;
          26    }
          導(dǎo)入相應(yīng)的包。

          8.  修改資源文件:
              修改ApplicationResources.properties,內(nèi)容:
          test.button.reset=reset
          test.button.submit
          =submit
          test.passsord
          =password\:
          test.username
          =userName\:
              新建ApplicationResources_Err.properties,內(nèi)容:
          err.password.null=The password is Null\!
          err.username.exist
          =The userName is exist\!
          err.username.null
          =The username is Null\!

          9.  修改addUser.jsp:
           1<%@ page language="java"%>
           2<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> 
           3<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
           4 
           5<html> 
           6    <head>
           7        <title>add User</title>        
          10    </head>
          11    <body>
          12        <html:form action="/addUser.do">
          13            <table border="1" align="center">
          14                <tr>
          15                    <td>
          16                        <bean:message key="test.username"/>
          17                    </td>
          18                    <td>
          19                        <html:text property="userName"  onblur="retrieveURL('/sha/checkName.do?userName=' + this.value);"/>
          20                        <font color = "RED">
          21                            <span id = "nField"></span>
          22                            <html:errors property="usernameErr" bundle = "error"/>
          23                        </font>
          24                    </td>
          25                </tr>
          26                <tr>
          27                    <td>
          28                        <bean:message key="test.passsord"/>
          29                    </td>
          30                    <td>
          31                        <html:password property="password"/>
          32                        <font color = "RED">
          33                            <html:errors property="userpasswordErr" bundle = "error"/>
          34                        </font>            
          35                    </td>
          36                </tr>
          37                <tr>
          38                    <td colspan="2" align = "center">
          39                        <html:submit>
          40                            <bean:message key = "test.button.submit"/>
          41                        </html:submit>
          42                        <html:reset/>
          43                    </td>
          44                </tr>
          45            </table>
          46        </html:form>
          47    </body>
          48</html>
          49
          50

          10. 項(xiàng)目-右鍵MyEclipse-Add and Remove...

           


          Tomcat 中需要指定JDK的路徑。

          目前為止,完成了Struts和Hibernate的配置。接下來(lái):
          11.  在WebRoot下,新建/js/ajax.js,內(nèi)容:
           1  var req;
           2  var which;
           3
           4  function retrieveURL(url) {
           5    if (window.XMLHttpRequest) // Non-IE browsers
           6      req = new XMLHttpRequest();
           7      req.onreadystatechange = processStateChange;
           8      try {
           9        req.open("GET", url, true);
          10      }
           catch (e) {
          11        alert(e);
          12      }

          13      req.send(null);
          14    }
           else if (window.ActiveXObject) // IE
          15      req = new ActiveXObject("Microsoft.XMLHTTP");
          16      if (req) {
          17        req.onreadystatechange = processStateChange;
          18        req.open("GET", url, true);
          19        req.send();
          20      }

          21    }

          22  }

          23
          24  function processStateChange() {
          25    if (req.readyState == 4// Complete
          26      if (req.status == 200// OK response
          27        document.getElementById("nField").innerHTML = req.responseText;
          28      }
           else {
          29        alert("Problem: " + req.statusText);
          30      }

          31    }

          32  }

          12.  修改/jsp/addUser.jsp,在Head中添加:
          1<SCRIPT LANGUAGE="JavaScript" src="../js/ajax.js"> </SCRIPT>

          13.  在action目錄下添加CheckNameAction.java:
           1package com.sha.struts.action;
           2
           3import java.io.IOException;
           4import java.io.PrintWriter;
           5import java.util.Iterator;
           6
           7import javax.servlet.http.HttpServletRequest;
           8import javax.servlet.http.HttpServletResponse;
           9import org.apache.struts.action.Action;
          10import org.apache.struts.action.ActionForm;
          11import org.apache.struts.action.ActionForward;
          12import org.apache.struts.action.ActionMapping;
          13import org.hibernate.Query;
          14import org.hibernate.Session;
          15import org.hibernate.Transaction;
          16
          17import com.sha.HibernateSessionFactory;
          18
          19public class CheckNameAction extends Action {
          20
          21    public ActionForward execute(ActionMapping mapping, ActionForm form,
          22            HttpServletRequest request, HttpServletResponse response) {
          23        
          24        String userName = request.getParameter("userName");
          25        
          26        Session session = HibernateSessionFactory.currentSession();
          27        Transaction tx = session.beginTransaction ();
          28        Query query = session.createQuery("SELECT user FROM User AS user WHERE user.userName = '" + userName + "'");
          29        Iterator it = query.iterate ();
          30        String msg = "";
          31        if (it.hasNext()){
          32            msg = "This username has been used!";
          33        }

          34        tx.commit();
          35        HibernateSessionFactory.closeSession ();
          36          
          37        response.setContentType("text/html");
          38        PrintWriter out = null;
          39        try {
          40            out = response.getWriter();
          41        }
           catch (IOException e) {
          42            e.printStackTrace();
          43        }

          44        out.println(msg);
          45        out.flush();
          46        return null;
          47    }

          48}

          14. 修改 struts-config.xml,在action-mapping里面添加:
          1    <action 
          2        path="/checkName" 
          3        type="com.sha.struts.action.CheckNameAction" 
          4        parameter="/jsp/addUser.jsp"/>


          至此,簡(jiǎn)單的Strust + Hibernate + Ajax 應(yīng)用例子已經(jīng)完成了。
          打開(kāi)瀏覽器,輸入:http://localhost:8080/sha/jsp/addUser.jsp進(jìn)行訪問(wèn)。

          小弟初學(xué),歡迎大家提出寶貴意見(jiàn)及建議。
          posted on 2008-05-21 21:48 胡昆栄 閱讀(2197) 評(píng)論(1)  編輯  收藏 所屬分類: JavaJavaScriptEclipseStrutsAjaxMySQLHibernate

          FeedBack:
          # re: [原創(chuàng)]Struts+Hibernate+Ajax簡(jiǎn)單例子[未登錄](méi)
          2014-12-23 14:46 | 蛋蛋
          主站蜘蛛池模板: 拉萨市| 平武县| 海兴县| 关岭| 崇明县| 老河口市| 余姚市| 安多县| 修文县| 台前县| 新竹县| 衡水市| 滨州市| 乐清市| 平安县| 凌云县| 镇平县| 公主岭市| 安泽县| 哈尔滨市| 改则县| 合肥市| 株洲市| 焉耆| 房产| 宜都市| 巴楚县| 安徽省| 应城市| 同仁县| 宁夏| 仁寿县| 兴国县| 西昌市| 兰考县| 滁州市| 彰武县| 苗栗县| 惠来县| 道孚县| 津市市|