基于Struts的AJAX

          首先,我們仍然是對Struts應用來做配置,仍然是在struts-config,xml文件里做配置,如下:

           <action type="com.ajax.CheckAction"
               scope="request" path="/ajax/check">
               <forward name="success" path="/check.jsp"/>
           </action>


          跟普通的Struts應用的配置一樣,只是沒有ActionForm的配置。下面是Action類:

           package com.ajax;
           
           import java.io.PrintWriter;
           
           import javax.servlet.http.HttpServletRequest;
           import javax.servlet.http.HttpServletResponse;
           
           import org.apache.struts.action.Action;
           import org.apache.struts.action.ActionForm;
           import org.apache.struts.action.ActionForward;
           import org.apache.struts.action.ActionMapping;
           import org.apache.struts.action.DynaActionForm;
           
           /**
            * @author Administrator
            *
            * TODO To change the template for this generated type comment go to
            * Window - Preferences - Java - Code Style - Code Templates
            */
           public class CheckAction extends Action
           {
            public final ActionForward execute(ActionMapping mapping, ActionForm form,
                     HttpServletRequest request,
                     HttpServletResponse response)
             throws Exception
             {
            System.out.println("haha...............................");
            String username= request.getParameter("username");
            System.out.println(username);
            String retn;
            if("educhina".equals(username)) retn = "Can't use the same name with the old use,pls select a difference...";
            else retn = "congraducation!you can use this name....";
            PrintWriter out=response.getWriter();
                     out.write(retn);
                     out.close();
            return mapping.findForward("success");
             }
            public static void main(String[] args)
            {
            }
           }

          我們可以看到里面的邏輯跟上例中Servlet里的邏輯一樣。最后,我們來看看JSP:

           <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
           <html>
           <head>
           <title>Check.html</title>
           
           <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
           <meta http-equiv="description" content="this is my page">
           
           <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
           
           </head>
           <script type="text/javascript">
            var http_request = false;
            function send_request(url) {//初始化、指定處理函數、發送請求的函數
             http_request = false;
            
          file://開始初始化XMLHttpRequest對象
             if(window.XMLHttpRequest) {
          file://Mozilla 瀏覽器
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {//設置MiME類別
             http_request.overrideMimeType('text/xml');
            }
             }
             else if (window.ActiveXObject) { // IE瀏覽器
            try {
             http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
             try {
              http_request = new ActiveXObject("Microsoft.XMLHTTP");
             } catch (e) {}
            }
             }
             if (!http_request) { // 異常,創建對象實例失敗
            window.alert("不能創建XMLHttpRequest對象實例.");
            return false;
             }
             http_request.onreadystatechange = processRequest;
             // 確定發送請求的方式和URL以及是否同步執行下段代碼
             http_request.open("GET", url, true);
             http_request.send(null);
            }
            // 處理返回信息的函數
             function processRequest() {
                 if (http_request.readyState == 4) { // 判斷對象狀態
                     if (http_request.status == 200) { // 信息已經成功返回,開始處理信息
                         alert(http_request.responseText);
                     } else {
          file://頁面不正常
                         alert("您所請求的頁面有異常。");
                     }
                 }
             }
            function userCheck() {
             var f = document.forms[0];
             var username = f.username.value;
             if(username=="") {
            window.alert("The user name can not be null!");
            f.username.focus();
            return false;
             }
             else {
            send_request('ajax/check.do?username='+username);
             }
            }
           
           </script>
           <body>
            <form name="form1" action="" method="post">
           User Name:<input type="text" name="username" value="">&nbsp;
           <input type="button" name="check" value="check" onClick="userCheck()">
           <input type="submit" name="submit" value="/oblog312/submit">
           </form>
           </body>
           </html>

          我們可以看到,JSP基本是一樣的,除了要發送的url:ajax/check.do?username="+username。 

          posted on 2007-08-13 17:24 劉錚 閱讀(288) 評論(0)  編輯  收藏 所屬分類: Struts


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


          網站導航:
           
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          留言簿(1)

          文章分類(141)

          文章檔案(147)

          搜索

          最新評論

          主站蜘蛛池模板: 宕昌县| 南平市| 乐平市| 碌曲县| 皋兰县| 微山县| 子长县| 泗洪县| 将乐县| 恭城| 铁岭县| 图们市| 蕲春县| 山丹县| 赤峰市| 长治市| 博湖县| 佛学| 小金县| 都匀市| 汕尾市| 寿宁县| 瑞安市| 湟中县| 韶关市| 长春市| 尼木县| 溧水县| 凯里市| 凤台县| 黄平县| 宝坻区| 大英县| 黔西| 根河市| 东乡县| 淮南市| 梓潼县| 六枝特区| 岚皋县| 英吉沙县|