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

          環境:
          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. 打開Eclipse,新建一個Web Project:
          鑒于要完成的是Struts+Hibernate+Ajax,把項目名取為:sha
          其他的什么都不用改。“完成”

          2. 配置MyEclipse Database Explorer
              Eclipse界面-窗口-打開透視圖-MyEclipse Database Explorer-New:
          測試,出現:
          連接后出現上圖,完成。

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

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

          3.  生成數據庫-XML映射:
                  打開MyEclipse Database Explorer,選擇表user,右鍵,Hibernate Reverse...選擇默認的com后,完成。

          4.  創建Action,Form,JSP。
              打開struts-config.xml,右鍵新建"Form Action and JSP":

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

          完成:


          在jsp文件夾下,新建success.jsp文件。內容任意。

          添加新的資源文件:

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


          5.  在/src/com/sha下創建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    }
          導入相應的包。

          8.  修改資源文件:
              修改ApplicationResources.properties,內容:
          test.button.reset=reset
          test.button.submit
          =submit
          test.passsord
          =password\:
          test.username
          =userName\:
              新建ApplicationResources_Err.properties,內容:
          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. 項目-右鍵MyEclipse-Add and Remove...

           


          Tomcat 中需要指定JDK的路徑。

          目前為止,完成了Struts和Hibernate的配置。接下來:
          11.  在WebRoot下,新建/js/ajax.js,內容:
           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"/>


          至此,簡單的Strust + Hibernate + Ajax 應用例子已經完成了。
          打開瀏覽器,輸入:http://localhost:8080/sha/jsp/addUser.jsp進行訪問。

          小弟初學,歡迎大家提出寶貴意見及建議。
          posted on 2008-05-21 21:48 胡昆栄 閱讀(2198) 評論(1)  編輯  收藏 所屬分類: Java 、JavaScript 、Eclipse 、StrutsAjax 、MySQL 、Hibernate

          FeedBack:
          # re: [原創]Struts+Hibernate+Ajax簡單例子[未登錄]
          2014-12-23 14:46 | 蛋蛋
          蛋蛋  回復  更多評論
            
          主站蜘蛛池模板: 邵武市| 确山县| 施秉县| 乌审旗| 南乐县| 镇巴县| 南康市| 开封市| 仲巴县| 筠连县| 忻城县| 兴业县| 绥宁县| 林口县| 大厂| 汉沽区| 沙湾县| 甘肃省| 湖北省| 通州区| 澄迈县| 临城县| 兴宁市| 景宁| 湖口县| 勐海县| 灵石县| 布拖县| 青河县| 扎兰屯市| 武隆县| 玉门市| 凌源市| 禹城市| 巫溪县| 开江县| 渝北区| 隆安县| 修武县| 封开县| 竹山县|