1. Ajax
(1)概念:ASynchronous JavaScript And XML 異步的JavaScript 和 XML
異步和同步:客戶端和服務器端相互通信的基礎上
* 客戶端必須等待服務器端的響應。在等待的期間客戶端不能做其他操作。
* 客戶端不需要等待服務器端的響應。在服務器處理請求的過程中,客戶端可以進行其他的操作。
Ajax 是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術。 [1]
通過在后臺與服務器進行少量數據交換,Ajax 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
傳統的網頁(不使用 Ajax)如果需要更新內容,必須重載整個網頁頁面。
(2)jquery實現ajax方式
<1>$.ajax()
應用案例
html頁面
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script src="js/jquery-3.3.1.min.js"></script> <script> //定義方法 function fun() { //使用$.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"http://設置接受到的響應數據的格式 }); } </script> </head><body> <input type="button" value="發送異步請求" onclick="fun();"> <input></body></html>
servlet頁面
package servlet;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet("/ajaxServlet")public class AjaxServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.獲取請求參數 String username = request.getParameter("username"); /* //處理業務邏輯。耗時 try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); }*/ //2.打印username System.out.println(username); //3.響應 response.getWriter().write("hello : " + username); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); }}
<2>$.get() 發送get請求
* 語法:$.get(url, [data], [callback], [type])
* 參數:
* url:請求路徑
* data:請求參數
* callback:回調函數
* type:響應結果的類型
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script src="js/jquery-3.3.1.min.js"></script> <script> //定義方法 function fun() { //使用$.ajax()發送異步請求 $.get("ajaxServlet",{username:"rose"},function (data) { alert(data); },"text"); } </script> </head><body> <input type="button" value="發送異步請求" onclick="fun();"> <input></body></html>
<3>$.post() 發送post請求
* 語法:$.post(url, [data], [callback], [type])
* 參數:
* url:請求路徑
* data:請求參數
* callback:回調函數
* type:響應結果的類型
2.JSON
(1)json概念: 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. 遍歷
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> //1.定義基本格式 var person = {"name": "張三", age: 23, 'gender': true}; //獲取name的值 //var name = person.name; var name = person["name"]; // alert(name); //alert(person); //2.嵌套格式 {}———> [] var persons = { "persons": [ {"name": "張三", "age": 23, "gender": true}, {"name": "李四", "age": 24, "gender": true}, {"name": "王五", "age": 25, "gender": false} ] }; // alert(persons); //獲取王五值 var name1 = persons.persons[2].name; // alert(name1); //2.嵌套格式 []———> {} var ps = [{"name": "張三", "age": 23, "gender": true}, {"name": "李四", "age": 24, "gender": true}, {"name": "王五", "age": 25, "gender": false}]; //獲取李四值 //alert(ps); alert(ps[1].name); </script></head><body></body></html>
(3) JSON數據和Java對象的相互轉換
<1> JSON解析器:
* 常見的解析器:Jsonlib,Gson,fastjson,jackson
Jackson解析的速度算是同類框架中最快的,同時也是Spring MVC中內置使用的解析方式。
<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字符串
演示案例1:
jackson測試類:
package test;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import domain.Person;import org.junit.Test;import java.io.File;import java.io.FileWriter;public class JacksonTest01 { //java對象轉為JSon字符串 //使用junit注解進行測試 @Test public void test01() throws Exception { //1.創建Person對象 Person person=new Person(); person.setName("lucky"); person.setAge(25); person.setGender("man"); //2.創建Jackson的核心對象 ObjectMapper objectMapper=new ObjectMapper(); //3.轉換 /* * 轉換方法: * writeValue(參數1,obj) * 參數1: File:將obj對象轉換為JSON字符串,并保存到指定的文件中 Writer:將obj對象轉換為JSON字符串,并將json數據填充到字符輸出流中 OutputStream:將obj對象轉換為JSON字符串,并將json數據填充到字節輸出流中 * writeValue(obj) 將對象轉為json字符串 */ String json = objectMapper.writeValueAsString(person); System.out.println(json); //控制臺輸出: {"name":"lucky","age":25,"gender":"man"} //將數據寫到指定的路徑中 objectMapper.writeValue(new File("d://jsonoutput_file.txt"),person); //將數據關聯到writer中 objectMapper.writeValue(new FileWriter("d://jsonoutput_writer.txt"),person); //將數據關聯到outputstream中 objectMapper.writeValue(new FileWriter("d://jsonoutput_outputstream.txt"),person); }}
Person類
package domain;public class Person { private String name; private int age; private String gender; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", gender='" + gender + '\'' + '}'; }}
2. 注解:
1. @JsonIgnore:排除屬性。
2. @JsonFormat:屬性值得格式化
* @JsonFormat(pattern = "yyyy-MM-dd")
3. 復雜java對象轉換
1. List:數組
2. Map:對象格式一致
演示案例2:
package test;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import domain.Person;import org.junit.Test;import java.io.File;import java.io.FileWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class JacksonTest01 { //java對象轉為JSon字符串 //使用junit注解進行測試 @Test public void test01() throws Exception { //1.創建Person對象 Person person=new Person(); person.setName("lucky"); person.setAge(25); person.setGender("man"); //2.創建Jackson的核心對象 ObjectMapper objectMapper=new ObjectMapper(); //3.轉換 /* * 轉換方法: * writeValue(參數1,obj) * 參數1: File:將obj對象轉換為JSON字符串,并保存到指定的文件中 Writer:將obj對象轉換為JSON字符串,并將json數據填充到字符輸出流中 OutputStream:將obj對象轉換為JSON字符串,并將json數據填充到字節輸出流中 * writeValue(obj) 將對象轉為json字符串 */ String json = objectMapper.writeValueAsString(person); System.out.println(json); //控制臺輸出: {"name":"lucky","age":25,"gender":"man"} //將數據寫到指定的路徑中 objectMapper.writeValue(new File("d://jsonoutput_file.txt"),person); //將數據關聯到writer中 objectMapper.writeValue(new FileWriter("d://jsonoutput_writer.txt"),person); //將數據關聯到outputstream中 objectMapper.writeValue(new FileWriter("d://jsonoutput_outputstream.txt"),person); } @Test public void test02() throws Exception { //1.創建Person對象 Person person=new Person(); person.setName("lucky"); person.setAge(25); person.setGender("man"); Person person1=new Person(); person1.setName("linda"); person1.setAge(28); person1.setGender("woman"); Person person2=new Person(); person2.setName("tom"); person2.setAge(31); person2.setGender("man"); List<Person> list=new ArrayList<>(); list.add(person); list.add(person1); list.add(person2); //2.創建Jackson的核心對象,List集合轉為json ObjectMapper objectMapper=new ObjectMapper(); String json_list = objectMapper.writeValueAsString(list); System.out.println(json_list); //控制臺輸出為: //[{"name":"lucky","age":25,"gender":"man"},{"name":"linda","age":28,"gender":"woman"},{"name":"tom","age":31,"gender":"man"}] } @Test public void test03() throws Exception { Map<String,Object> map=new HashMap<>(); map.put("name","lucky"); map.put("age",25); map.put("gender","man"); //Map轉換json ObjectMapper mapper=new ObjectMapper(); String json = mapper.writeValueAsString(map); System.out.println(json); //控制臺輸出: //{"gender":"man","name":"lucky","age":25} }}
<3>JSON轉為Java對象
1. 導入jackson的相關jar包
2. 創建Jackson核心對象 ObjectMapper
3. 調用ObjectMapper的相關方法進行轉換
1. readValue(json字符串數據,Class)
@Test public void test04() throws Exception { //1.初始化json數據 String json="{\"gender\":\"man\",\"name\":\"lucky\",\"age\":25}"; //2.創建Jackson的核心對象 ObjectMapper objectMapper=new ObjectMapper(); //3.轉換為java對象 Person person = objectMapper.readValue(json, Person.class); System.out.println(person); //控制臺輸出: //Person{name='lucky', age=25, gender='man'} }
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
北京有幾個長途汽車站?北京有10個長途站,四惠長途站在東四環四惠橋東南角的汽車總站東側,是一個很大的。六里橋長途站在六里橋西南3400米,很大。趙公口長途站在南三環趙公口橋西南角,很大的一個。木樨園長途站在南三環木樨園立交橋南4500米,路的東側,比較大。李澤橋是位于西三環李澤橋東北角的一座中型長途車站。八分是一個中型的長途車站,在大望路大望橋南3400米,路的東側。蓮花池是六里橋東300米路北側...
蘋果怎樣添加軟件源?1. 越獄后第一次打開Cydia需要很長時間才能加載,等待設備重新啟動后再打開Cydia;2。打開Cydia后,單擊下面的“軟件源”;3。單擊右上角的“編輯添加”;4。在輸入框中輸入源地址。如果輸入ACE assistant的源地址:apt.so/I4工具輸入后,單擊添加源;5。將驗證URL,并在通過后自動安裝源代碼。等待完成后,點擊“返回Cydia”6。添加之后,您可以在軟件...
700Bike創始人社交平臺曝光飛機鄰座要求其道歉,你怎么看?張向東,換個說法吧。如果你是對方,為了炒作你的狗屁自行車,借口考慮所有乘客的安全,你可以發展微博,侵犯對方肖像權,你哪里能高貴?不過,飛機上帶手機的人也確實是先搞錯了700Bike創始人發博曝光領座女,飛機上用手機到底有多大影響?手機發射無線電波!飛機在飛行中通過無線電通信塔導航,手機無線電會干擾飛機的無線電波,干擾GPS!飛機在空中飛...