posts - 36, comments - 30, trackbacks - 0, articles - 3

          Ajax學習一

          Posted on 2009-11-01 12:31 笑看人生 閱讀(326) 評論(0)  編輯  收藏 所屬分類: Web開發技術
          簡單介紹一下Ajax應用程序的基本流程:

          1. 創建XMLHttpRequest對象;
          2. 從頁面中獲取獲取需要的數據;
          3. 建立要連接的URL;
          4. 打開與服務器的連接;
          5. 設置服務器相應之后要調用的函數,即回調函數;
          6. 發送請求;
          下面以一個簡單的例子來演示一下,該例子要完成的功能是使用Ajax技術對輸入的EMail地址進行簡單校驗,根據校驗的結果,在頁面顯示相應的消息。

          index.jsp

          <%@ page language="java" contentType="text/html; charset=UTF-8"
              pageEncoding
          ="UTF-8"%>
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
          <title>Insert title here</title>
          </head>

          <script language="javascript">
                
          var xmlHttp;  
               
          function sendreq(){  
                 xmlHttp 
          = createXMLHttpRequest();  //步驟1
                 
          var url = "AjaxServlet?email=" + document.getElementById("email").value;//步驟2,3
                 xmlHttp.open(
          "GET", url);  //步驟4
                 xmlHttp.onreadystatechange 
          = handleStateChange; //步驟5
                 xmlHttp.send(
          null);    //步驟6
              }  
               
          function handleStateChange(){       
                
          if(xmlHttp.readyState == 4){  
                   
          if(xmlHttp.status == 200){             
                       document.getElementById(
          "result").innerHTML=xmlHttp.responseText;  
                   }  
                 }  
               }  
               
          function createXMLHttpRequest(){  
                   
          if (window.ActiveXObject){  
                       xmlHttp 
          = new ActiveXObject("Microsoft.XMLHTTP");  
                   }  
                   
          else if (window.XMLHttpRequest){  
                       xmlHttp 
          = new XMLHttpRequest();  
                   }  
                   
          return xmlHttp;  
               }  
              
              
          </script>
          <body>
            
          <label id="result">&nbsp;</label><br>
            Email:
          <input type="text" id="email" onblur="sendreq()" value="" />  
            
          <label id="result">&nbsp;</label>
            
          </body>
          </html>

          AjaxServlet.java

          package servlet;

          import java.io.IOException;
          import java.io.PrintWriter;

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

          public class AjaxServlet extends HttpServlet {

              
          private static final long serialVersionUID = 7032718233562299325L;

              @Override
              
          protected void doPost(HttpServletRequest req, HttpServletResponse response)
                      
          throws ServletException, IOException {
                  processRequest(req, response, 
          "POST");
              }

              @Override
              
          protected void doGet(HttpServletRequest req, HttpServletResponse response)
                      
          throws ServletException, IOException {
                  processRequest(req, response, 
          "GET");
              }

              
          private void processRequest(HttpServletRequest req,
                      HttpServletResponse response, String method) 
          throws IOException {
                  String email 
          = req.getParameter("email");
                  StringBuffer validator 
          = new StringBuffer("");
                  validator.append(method);
                  response.setContentType(
          "text/html;charset=UTF-8");
                  PrintWriter writer 
          = response.getWriter();
                  
          if (email.indexOf("@"< 0) {
                      validator.append(
          ":FAILURE!");
                  }
          else{
                      validator.append(
          ":SUCCESS!");
                  }
                  writer.write(validator.toString());
                  writer.close();
              }
          }

          GET和POST請求方式區別:

          • POST方法將參數串放在請求體中發送;
          • GET方法將參數串放在URL中發送;

          如果數據處理不改變數據模型的狀態,建議使用GET方式,如果需要改變數據模型的狀態,建議使用POST方式;

          web.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <web-app id="WebApp_ID" version="2.4"
              xmlns
          ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
              
          <display-name>ajax</display-name>
              
          <welcome-file-list>
                  
          <welcome-file>index.jsp</welcome-file>
              
          </welcome-file-list>
              
          <servlet>
                  
          <servlet-name>AjaxServlet</servlet-name>
                  
          <servlet-class>servlet.AjaxServlet</servlet-class>
              
          </servlet>
              
          <servlet-mapping>
                  
          <servlet-name>AjaxServlet</servlet-name>
                  
          <url-pattern>/AjaxServlet</url-pattern>
              
          </servlet-mapping>
          </web-app>


          主站蜘蛛池模板: 北宁市| 康平县| 布尔津县| 淮滨县| 石楼县| 桦川县| 孝感市| 佛山市| 江都市| 龙游县| 平谷区| 小金县| 泸定县| 安顺市| 和龙市| 宁德市| 竹北市| 资中县| 承德县| 南丹县| 青冈县| 天气| 莱阳市| 库尔勒市| 邹城市| 赫章县| 比如县| 云林县| 温泉县| 襄垣县| 桐城市| 沂南县| 乐清市| 永丰县| 汉寿县| 鄂尔多斯市| 常德市| 兴安盟| 福海县| 筠连县| 海宁市|