八、異步請求技術節點訓練
1. 掌握JSON數據格式
2. 掌握JSON格式數據的操作
3. 能夠使用AJAX實現異步請求
資源下載:
1.[本次用到JSON的jar包鏈接: ](http://h.yiniuedu.com/jackson.zip)
2.[本次jar包](http://h.yiniuedu.com/jar%E5%8C%85.rar)
備用下載鏈接: https://pan.baidu.com/s/11Mf_mlpg43g3R5OPQZmnhQ 提取碼: 5wcf
## 今日內容
~~~
1. AJAX:
2. JSON
~~~
# AJAX:
~~~
1. 概念: ASynchronous JavaScript And XML 異步的JavaScript 和 XML
1. 異步和同步:客戶端和服務器端相互通信的基礎上
* 客戶端必須等待服務器端的響應。在等待的期間客戶端不能做其他操作。
* 客戶端不需要等待服務器端的響應。在服務器處理請求的過程中,客戶端可以進行其他的操作。
?
Ajax 是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術。 [1]
通過在后臺與服務器進行少量數據交換,Ajax 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
傳統的網頁(不使用 Ajax)如果需要更新內容,必須重載整個網頁頁面。
?
提升用戶的體驗
?
2. 實現方式:
1. 原生的JS實現方式(了解)
//1.創建核心對象
? ? ? ? ? var xmlhttp;
? ? ? ? ? if (window.XMLHttpRequest)
? ? ? ? ? {// code for IE7+, Firefox, Chrome, Opera, Safari
? ? ? ? ? ? ? xmlhttp=new XMLHttpRequest();
? ? ? ? ? }
? ? ? ? ? else
? ? ? ? ? {// code for IE6, IE5
? ? ? ? ? ? ? xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
? ? ? ? ? }
? ? ? ? ? //2. 建立連接
? ? ? ? ? /*
? ? ? ? ? ? ? 參數:
? ? ? ? ? ? ? ? ? 1. 請求方式:GET、POST
? ? ? ? ? ? ? ? ? ? ? * get方式,請求參數在URL后邊拼接。send方法為空參
? ? ? ? ? ? ? ? ? ? ? * post方式,請求參數在send方法中定義
? ? ? ? ? ? ? ? ? 2. 請求的URL:
? ? ? ? ? ? ? ? ? 3. 同步或異步請求:true(異步)或 false(同步)
? ? ? ? ? ? */
? ? ? ? ? xmlhttp.open("GET","ajaxServlet?username=tom",true);
? ? ? ? ? //3.發送請求
? ? ? ? ? xmlhttp.send();
? ? ? ? ? //4.接受并處理來自服務器的響應結果
? ? ? ? ? //獲取方式 :xmlhttp.responseText
? ? ? ? ? //什么時候獲取?當服務器響應成功后再獲取
? ? ? ? ? //當xmlhttp對象的就緒狀態改變時,觸發事件onreadystatechange。
? ? ? ? ? xmlhttp.onreadystatechange=function()
? ? ? ? ? {
? ? ? ? ? ? ? //判斷readyState就緒狀態是否為4,判斷status響應狀態碼是否為200
? ? ? ? ? ? ? if (xmlhttp.readyState==4 && xmlhttp.status==200)
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? //獲取服務器的響應結果
? ? ? ? ? ? ? ? ? var responseText = xmlhttp.responseText;
? ? ? ? ? ? ? ? ? alert(responseText);
? ? ? ? ? ? ? }
? ? ? ? ? }
2. JQuery實現方式
1. $.ajax()
* 語法:$.ajax({鍵值對});
//使用$.ajax()發送異步請求
? ? ? ? ? $.ajax({
? ? ? ? ? ? ? url:"ajaxServlet" , // 請求路徑
? ? ? ? ? ? ? type:"POST" , //請求方式
? ? ? ? ? ? ? //data: "username=jack&age=23",//請求參數
? ? ? ? ? ? ? data:{"username":"jack","age":23},
? ? ? ? ? ? ? success:function (data) {
? ? ? ? ? ? ? ? ? alert(data);
? ? ? ? ? ? ? },//響應成功后的回調函數
? ? ? ? ? ? ? error:function () {
? ? ? ? ? ? ? ? ? alert("出錯啦...")
? ? ? ? ? ? ? },//表示如果請求響應出現錯誤,會執行的回調函數
? ? ? ? ? ? ? dataType:"text"//設置接受到的響應數據的格式
? ? ? ? ? });
2. $.get():發送get請求
* 語法:$.get(url, [data], [callback], [type])
* 參數:
* url:請求路徑
* data:請求參數
* callback:回調函數
* type:響應結果的類型
?
3. $.post():發送post請求
* 語法:$.post(url, [data], [callback], [type])
* 參數:
* url:請求路徑
* data:請求參數
* callback:回調函數
* type:響應結果的類型
~~~
# JSON:
~~~
1. 概念: JavaScript Object Notation JavaScript對象表示法
Person p = new Person();
p.setName("張三");
p.setAge(23);
p.setGender("男");
?
var p = {"name":"張三","age":23,"gender":"男"};
?
* json現在多用于存儲和交換文本信息的語法
* 進行數據的傳輸
* JSON 比 XML 更小、更快,更易解析。
?
2. 語法:
1. 基本規則
* 數據在名稱/值對中:json數據是由鍵值對構成的
* 鍵用引號(單雙都行)引起來,也可以不使用引號
* 值得取值類型:
1. 數字(整數或浮點數)
2. 字符串(在雙引號中)
3. 邏輯值(true 或 false)
4. 數組(在方括號中) {"persons":[{},{}]}
5. 對象(在花括號中) {"address":{"province":"陜西"....}}
6. null
* 數據由逗號分隔:多個鍵值對由逗號分隔
* 花括號保存對象:使用{}定義json 格式
* 方括號保存數組:[]
2. 獲取數據:
1. json對象.鍵名
2. json對象["鍵名"]
3. 數組對象[索引]
4. 遍歷
//1.定義基本格式
? ? ? var person = {"name": "張三", age: 23, 'gender': true};
? ? ? var ps = [{"name": "張三", "age": 23, "gender": true},
? ? ? ? ? {"name": "李四", "age": 24, "gender": true},
? ? ? ? ? {"name": "王五", "age": 25, "gender": false}];
~~~
~~~
? ? ? //獲取person對象中所有的鍵和值
? ? ? //for in 循環
? ? ? /* for(var key in person){
? ? ? ? ? //這樣的方式獲取不行。因為相當于 person."name"
? ? ? ? ? //alert(key + ":" + person.key);
? ? ? ? ? alert(key+":"+person[key]);
? ? ? }*/
? ? ? //獲取ps中的所有值
? ? ? for (var i = 0; i < ps.length; i++) {
? ? ? ? ? var p = ps[i];
? ? ? ? ? for(var key in p){
? ? ? ? ? ? ? alert(key+":"+p[key]);
? ? ? ? ? }
? ? ? }
~~~
~~~
3. JSON數據和Java對象的相互轉換
?
* JSON解析器:
* 常見的解析器:Jsonlib,Gson,fastjson,jackson
1. JSON轉為Java對象
1. 導入jackson的相關jar包
2. 創建Jackson核心對象 ObjectMapper
3. 調用ObjectMapper的相關方法進行轉換
1. readValue(json字符串數據,Class)
2. Java對象轉換JSON
1. 使用步驟:
1. 導入jackson的相關jar包
2. 創建Jackson核心對象 ObjectMapper
3. 調用ObjectMapper的相關方法進行轉換
1. 轉換方法:
* writeValue(參數1,obj):
? ? ? ? ? ? ? ? ? 參數1:
? ? ? ? ? ? ? ? ? ? ? File:將obj對象轉換為JSON字符串,并保存到指定的文件中
? ? ? ? ? ? ? ? ? ? ? Writer:將obj對象轉換為JSON字符串,并將json數據填充到字符輸出流中
? ? ? ? ? ? ? ? ? ? ? OutputStream:將obj對象轉換為JSON字符串,并將json數據填充到字節輸出流中
? ? ? ? ? ? ? * writeValueAsString(obj):將對象轉為json字符串
?
2. 注解:
1. @JsonIgnore:排除屬性。
2. @JsonFormat:屬性值得格式化
* @JsonFormat(pattern = "yyyy-MM-dd")
?
3. 復雜java對象轉換
1. List:數組
2. Map:對象格式一致
~~~
# 案例:
~~~
* 校驗用戶名是否存在
1. 服務器響應的數據,在客戶端使用時,要想當做json數據格式使用。有兩種解決方案:
1. $.get(type):將最后一個參數type指定為"json"
2. 在服務器端設置MIME類型
response.setContentType("application/json;charset=utf-8");
~~~
- Java Web項目開發學習手冊
- 一、B/S開發環境搭建
- 1.1 tomcat服務器目錄結構及作用
- 1.2 在IDE開發工具上配置tomcat服務器
- 1.3 簡單web項目在tomcat服務器上運行的方法
- 1.4 開發工具設置
- 1.5 總結
- 二、Servlet技術應用
- 2.1 HttpServlet中的主要方法及應用
- 2.1.1 基于Eclipse完成一個JavaWeb項目
- 2.2 HttpRequest,HttpResponse的應用
- 2.2.1客戶端請求
- 2.2.2服務器響應
- 2.2.3Servlet HTTP 狀態碼
- 2.2.4圖片驗證碼類
- 2.2.5注冊模擬實現(帶驗證碼)
- 2.3 ServletConfig對象和ServletContext對象的概念
- 2.4 總結
- 三、JSP技術應用
- 3.1 JSP基本語法
- 3.2 JSP標簽和指令
- 3.3 JSP中的隱式對象
- 3.4 常用應用操作
- 3.4.1 JSP客戶端請求
- 3.4.2 JSP服務器響應
- 3.4.3 HTTP狀態碼
- 3.4.4 表單處理
- 3.4.5 過濾器
- 3.4.6 Cookie處理
- 3.4.7 Session處理
- 3.4.8 文件上傳
- 3.4.9 日期處理
- 3.4.10 頁面重定向
- 3.4.11 點擊量統計
- 3.4.12 自動刷新
- 3.4.13 發送郵件
- 3.5 JSP高級應用
- 3.5.1 JSP標準標簽庫(JSTL)
- 3.5.2 JSP連接數據庫
- 3.5.3 JSP XML數據處理
- 3.5.4 JSP JavaBean
- 3.5.5 自定義標簽
- 3.5.6 表達式語言
- 3.5.7 異常處理
- 3.5.8 調試
- 3.5.9 JSP國際化
- 3.6 實踐代碼
- 3.6.1 實踐代碼
- 3.6.2 項目實戰
- 3.7 總結
- 四、MVC思想的理解和搭建MVC
- 4.1 MVC設計模式的思想
- 4.2 MVC設計模式的實現步驟
- 4.3 項目實踐
- 4.4 總結
- 五、EL表達式和JSTL技術
- 5.1 EL表達式及其應用
- 5.2 常用的JSTL標簽的應用
- 5.3 項目實踐
- 5.4 總結
- 六、Cookie和Session
- 6.1 cookie對象的概念和應用
- 6.2 session對象的概念和應用
- 6.3 項目實踐
- 6.4 總結
- 七、過濾器技術應用
- 7.1 Filter的概念及應用
- 7.2 Filter、FilterChain、FilterConfig 介紹
- 7.3 用戶登錄過濾案例
- 7.4 項目實戰
- 7.5總結
- 八、異步請求技術
- 8.1 JSON數據格式
- 8.2 使用AJAX實現異步請求
- 8.3 用戶名校驗案例
- 8.4小結
- 綜合項目技術實訓
- 1.BS項目開發項目實戰
- 2.項目需求分析和系統設計
- 2.1需求分析
- 2.2類型模型設計
- 2.3原型設計
- 3.項目數據庫分析和系統設計
- 4.BS項目編程實現
- 4.1搭建框架和命名規約
- 4.2實現步驟
- 4.2.1創建實體類
- 4.2.2創建過濾器類
- 4.2.3創建工具類
- 4.2.4創建DAO接口及其實現類
- 4.2.5創建Service接口及其實現類
- 4.2.6創建測試類
- 4.2.7創建控制器類
- 5.企業開發流程規范
- 6.總結
- 九、練習題及答案
- 企業開發常用技術
- 1.Maven技術
- Java命名規范解讀
- 參考資料
- 開發中常用的應用服務器和Web服務器