Ajax 及裡面的XStream《黑馬程式員_超全面的JavaWeb視頻教程vedio》

來源:互聯網
上載者:User

標籤:request   可讀性   .class   表示   tca   設定   post   它的   非同步請求   

1. ajax是什麼?  * asynchronous javascript and xml:非同步js和xml  * 它能使用js訪問伺服器,而且是非同步訪問!  * 伺服器給用戶端的響應一般是整個頁面,一個html完整頁面!但在ajax中因為是局部重新整理,那麼伺服器就不用再響應整個頁面!而只是資料!    > text:純文字    > xml:大家都熟悉!!!    > json:它是js提供的資料互動格式,它在ajax中最受歡迎!2. 非同步互動和同步互動  * 同步:    > 發一個請求,就要等待伺服器的響應結束,然後才能發第二個請求!中間這段時間就是一個字“卡”    > 重新整理的是整個頁面!  * 非同步:    > 發一個請求後,無需等待伺服器的響應,然後就可以發第二個請求!    > 可以使用js接收伺服器的響應,然後使用js來局部重新整理!3. ajax應用情境  * 百度的搜尋方塊  * 使用者註冊時(校正使用者名稱是否被註冊過)4. ajax的優缺點  優點:  * 非同步互動:增強了使用者的體驗!  * 效能:因為伺服器無需再響應整個頁面,只需要響應部份內容,所以伺服器的壓力減輕了!  缺點:  * ajax不能應用在所有情境!  * ajax無端的增多了對伺服器的訪問次數,給伺服器帶來了壓力!====================================================================================ajax發送非同步請求(四步操作)1. 第一步(得到XMLHttpRequest)  * ajax其實只需要學習一個對象:XMLHttpRequest,如果掌握了它,就掌握了ajax!!!  * 得到XMLHttpRequest    > 大多數瀏覽器都支援:var xmlHttp = new XMLHttpRequest();    > IE6.0:var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");    > IE5.5以更早版本的IE:var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  * 編寫建立XMLHttpRequest對象的函數  function createXMLHttpRequest() {      try {          return new XMLHttpRequest();      } catch(e) {          try {          return new ActiveXObject("Msxml2.XMLHTTP");      } catch(e) {          try {              return new ActiveXObject("Microsoft.XMLHTTP");          } catch(e) {              alert("哥們兒,你用的是什麼瀏覽器啊?");              throw e;          }      }      }  }2. 第二步(開啟與伺服器的串連)  * xmlHttp.open():用來開啟與伺服器的串連,它需要三個參數:    > 請求方式:可以是GET或POST    > 請求的URL:指定伺服器端資源,例如;/day23_1/AServlet    > 請求是否為非同步:如果為true表示發送非同步請求,否則同步請求!  * xmlHttp.open("GET", "/day23_1/AServlet", true);3. 第三步(發送請求)  * xmlHttp.send(null):如果不給可能會造成部份瀏覽器無法發送!    > 參數:就是請求體內容!如果是GET請求,必須給出null。4. 第四步()  * 在xmlHttp對象的一個事件上註冊監聽器:onreadystatechange  * xmlHttp對象一共有5個狀態:    > 0狀態:剛建立,還沒有調用open()方法;     > 1狀態:請求開始:調用了open()方法,但還沒有調用send()方法    > 2狀態:調用完了send()方法了;    > 3狀態:伺服器已經開始響應,但不表示響應結束了!    > 4狀態:伺服器響應結束!(通常我們只關心這個狀態!!!)  * 得到xmlHttp對象的狀態:    > var state = xmlHttp.readyState;//可能是0、1、2、3、4  * 得到伺服器響應的狀態代碼    > var status = xmlHttp.status;//例如為200、404、500  * 得到伺服器響應的內容1    > var content = xmlHttp.responseText;//得到伺服器的響應的文字格式設定的內容    > var content = xmlHttp.responseXML;//得到伺服器的響應的xml響應的內容,它是Document對象了!  xmlHttp.onreadystatechange = function() {//xmlHttp的5種狀態都會調用本方法      if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {//雙重判斷:判斷是否為4狀態,而且還要判斷是否為200          // 擷取伺服器的響應內容      var text = xmlHttp.responseText;      }  };====================================================================================第二例:發送POST請求(如果發送請求時需要帶有參數,一般都用POST請求)* open:xmlHttp.open("POST" ....);* 添加一步:設定Content-Type要求標頭:  > xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");* send:xmlHttp.send("username=zhangSan&password=123");//發送請求時指定請求體====================================================================================第三例:註冊表單之校正使用者是否註冊!1. 編寫頁面:  * ajax3.jsp    > 給出註冊表單頁面    > 給使用者名稱文字框添加onblur事件的監聽    > 擷取文字框的內容,通過ajax4步發送給伺服器,得到響應結果      * 如果為1:在文字框後顯示“使用者名稱已被註冊”      * 如果為0:什麼都不做!2. 編寫Servlet  * ValidateUsernameServlet    > 擷取用戶端傳遞的使用者名稱參數    > 判斷是否為itcast      * 是:返回1      * 否:返回0====================================================================================響應內容為xml資料  * 伺服器端:    > 設定回應標頭:ContentType,其值為:text/xml;charset=utf-8  * 用戶端:    > var doc = xmlHttp.responseXML;//得到的是Document對象!=====================第四例:響應內容為xml資料====================================================================================第五例:省市聯動1. 頁面  <select name="province">    <option>===請選擇省份===</option>  </select>  <select name="city">    <option>===請選擇城市===</option>    </select>2. ProvinceServlet  * ProvinceServlet:當頁面載入完畢後馬上請求這個Servlet!    > 它需要載入china.xml檔案,把所有的省的名稱使用字串發送給用戶端!3. 頁面的工作  * 擷取這個字串,使用逗號分隔,得到數組  * 迴圈遍曆每個字串(省份的名稱),使用每個字串建立一個<option>元素添加到<select name="province">這個元素中4. CityServlet  * CityServlet:當頁面選擇某個省時,發送請求!  * 得到省份的名稱,載入china.xml檔案,查詢出該省份對應的元素對象!,把這個元素轉換成xml字串,發送給用戶端5. 頁面的工作  * 把<select name="city">中的所有子項目刪除,但不要刪除<option>===請選擇城市===</option>  * 得到伺服器的響應結果:doc!!!  * 擷取所有的<city>子項目,迴圈遍曆,得到<city>的內容  * 使用每個<city>的內容建立一個<option>元素,添加到<select name="city">====================================================================================XStream1. 什麼作用  * 可以把JavaBean轉換為(序列化為)xml2. XStream的jar包  * 核心JAR包:xstream-1.4.7.jar;  * 必須依賴包:xpp3_min-1.1.4c(XML Pull Parser,一款速度很快的XML解析器);3. 使用步驟  * XStream xstream = new XStream();  * String xmlStr = xstream.toXML(javabean);4. 使用細節  * 別名:把類型對應的元素名修改了    > xstream.alias("china", List.class):讓List類型產生的元素名為china    > xstream.alias("province", Province.class):讓Province類型產生的元素名為province  * 使用為屬性:預設類的成員,產生的是元素的子項目!我們希望讓類的成員產生元素的屬性    > xstream.useAttributeFor(Province.class, "name"):把Province類的名為name成員,產生<province>元素的name屬性  * 去除Collection類型的成名:我們只需要Collection的內容,而不希望Collection本身也產生一個元素    > xstream.addImplicitCollection(Province.class, "cities"):讓Province類的名為cities(它是List類型的,它的內容還會產生元素)的成名不產生元素  * 去除類的指定成名,讓其不產生xml元素    > xstream.omitField(City.class, "description"):在產生的xml中不會出現City類的名為description的對應的元素!====================================================================================JSON1. json是什麼  * 它是js提供的一種資料交換格式!2. json的文法  * {}:是對象!    > 屬性名稱必須使用雙引號括起來!單引不行!!!    > 屬性值:      * null      * 數值      * 字串      * 數組:使用[]括起來      * boolean值:true和false3. 應用json  * var person = {"name":"zhangSan", "age":18, "sex":"male"};4. json與xml比較* 可讀性:XML勝出* 解析難度:JSON本身就是JS對象(主場作戰),所以簡單很多* 流行度:XML已經流行好多年,但在AJAX領域,JSON更受歡迎。-----------------------------------json-lib1. 是什嗎?  * 它可以把javabean轉換成json串2. jar包  * 略3. 核心類  * JSONObject --> Map    > toString();    > JSONObject map = JSONObject.fromObject(person):把對象轉換成JSONObject對象  * JSONArray --> List    > toString()    > JSONArray jsonArray = JSONObject.fromObject(list):把list轉換成JSONArray對象

 

Ajax 及裡面的XStream《黑馬程式員_超全面的JavaWeb視頻教程vedio》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.