柚子快報(bào)邀請(qǐng)碼778899分享:json ajax 筆記 全查
柚子快報(bào)邀請(qǐng)碼778899分享:json ajax 筆記 全查
}
2.2 利用Jackson解析JSON
一個(gè)能夠?qū)ava對(duì)象序列化為JSON字符串,同樣可以將JSON字符串反序列化為Java對(duì)象;方法為:readValue和writeValue;
2.2.1 Jackson的三個(gè)jar包
需要在lib文件夾下導(dǎo)入jackjson-annotations、jackson-core、jackson-databind三個(gè)jar包;
jackson-core jar:流的處理,定義了底層的streaming API和實(shí)現(xiàn)了Json特性;
jackson-annotations jar:包含了標(biāo)準(zhǔn)的Jackson注解;
jackson-databind jar:實(shí)現(xiàn)了數(shù)據(jù)綁定和對(duì)象序列化,它依賴(lài)于streaming和annotations的包;
2.2.2 處理Json
Jackson提供了三種可選的Json處理方法:
Streaming API:是效率最高的處理方式(開(kāi)銷(xiāo)低、讀寫(xiě)速度快,但程序編寫(xiě)復(fù)雜度高)
Tree Model:樹(shù)模型是最靈活的處理方式
Data Binding:數(shù)據(jù)綁定是最常用的處理方式
2.2.3 Data Binding處理方式
主要使用ObjectMapper來(lái)操作Json,如果是解析就必須要有setters,且setters必須是public修飾的,否則屬性的值將會(huì)為null。
如果是生成那么必須有g(shù)etters,且getters必須是public修飾的。 如果屬性不是private修飾,那么可以不用有g(shù)etters和setters;
要點(diǎn):
ObjectMapper mapper = new ObjectMapper(); :獲取JackSon主操作類(lèi)對(duì)象
mapper.writeValue(obj); :將傳入的對(duì)象序列化為json,返回給調(diào)用者
mapper.writeValueAsString(Object obj):String:將java對(duì)象數(shù)組轉(zhuǎn)成json,傳入的對(duì)象序列化為json,返回給調(diào)用
mapper.readValue(jsonFile, Bean.class/Collection< Bean >);:將字符串對(duì)象轉(zhuǎn)成java對(duì)象
mapper.readValue(jsonString . TypeReference >):List< T >:返回List集合
特點(diǎn):在java中使用jack轉(zhuǎn)json時(shí)java字符串需要使用雙引號(hào),建議使用轉(zhuǎn)義字符;
2.2.4 案例
package com.sx.kaka.test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sx.kaka.entity.Student;
public class JacksonTest {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
new JacksonTest().fromStringToJavaObj();
new JacksonTest().fromStringArrayToJavaArray();
new JacksonTest().fromJavaObjToJson();
new JacksonTest().fromJavaObjArrayToJson();
}
//將字符串對(duì)象轉(zhuǎn)成java對(duì)象
public void fromStringToJavaObj() throws JsonParseException, JsonMappingException, IOException{
//編寫(xiě)JSON字符串
String jsonStr=“{“id”:1001,“name”:“kaka”,“sex”:“man”,“age”: 23}”;
//獲取JackSon主操作類(lèi)對(duì)象
ObjectMapper mapper = new ObjectMapper();
Student stu = mapper.readValue(jsonStr, Student.class);
System.out.println(stu);
}
//將字符串?dāng)?shù)組轉(zhuǎn)java數(shù)組
public void fromStringArrayToJavaArray() throws JsonParseException, JsonMappingException, IOException{
//編寫(xiě)JSON數(shù)組字符串
String jsonStringArray = “[“kaka0”,“kaka1”,“kaka2”]”;
//獲取JackSon主操作類(lèi)對(duì)象
ObjectMapper mapper = new ObjectMapper();
//第一個(gè)參數(shù):json字符串
//第二個(gè)參數(shù):類(lèi)型引用的抽象類(lèi),需要?jiǎng)討B(tài)創(chuàng)建一個(gè)他的指定類(lèi)型(List)對(duì)象
ArrayList readValue = mapper.readValue(jsonStringArray, new TypeReference(){});
System.out.println(readValue);
}
//將java對(duì)象轉(zhuǎn)成json字符串
public void fromJavaObjToJson() throws JsonProcessingException{
Student stu = new Student(1001,“kaka”,“man”,23);
//獲取JackSon主操作類(lèi)對(duì)象
ObjectMapper mapper = new ObjectMapper();
String string = mapper.writeValueAsString(stu);
System.out.println(string);
}
//將java對(duì)象數(shù)組轉(zhuǎn)成json字符串
public void fromJavaObjArrayToJson() throws JsonProcessingException{
List list = new ArrayList<>();
for(int i = 0; i< 5; i++){
list.add(new Student(1001+i,“kaka”+i,“man”,20+i));
}
//獲取JackSon主操作類(lèi)對(duì)象
ObjectMapper mapper = new ObjectMapper();
String string = mapper.writeValueAsString(list);
System.out.println(string);
}
}
2.3 瀏覽器(JS)處理JSON對(duì)象
JSON.stringify():把js對(duì)象轉(zhuǎn)成json字符串的
JSON.parse():把json字符串轉(zhuǎn)成js對(duì)象的
2.3.1 案例
JS解析JSON
3. AJAX
===========================================================================
AJAX全稱(chēng)Asynchronous JavaScript and XML(異步的 JavaScript 和 XML),AJAX 不是新的編程語(yǔ)言,而是一種使用現(xiàn)有標(biāo)準(zhǔn)的新方法;不需要任何瀏覽器插件,但需要用戶(hù)在允許JavaScript的瀏覽器上執(zhí)行;
AJAX 最大的優(yōu)點(diǎn)是在不重新加載整個(gè)頁(yè)面的情況下,可以與服務(wù)器交換數(shù)據(jù)并更新部分網(wǎng)頁(yè)內(nèi)容。
3.1 工作原理
瀏覽器創(chuàng)建XMLHttpRequest對(duì)象;
瀏覽器初始化XMLHttpRequest對(duì)象;
由XMLHttpRequest對(duì)象向服務(wù)器發(fā)出請(qǐng)求;
瀏覽器接收其他用戶(hù)的操作;
服務(wù)器接到請(qǐng)求后調(diào)用業(yè)務(wù)模型處理并給XMLHttpRequest一個(gè)響應(yīng)的結(jié)果;
XMLHttpRequest對(duì)象收到響應(yīng)結(jié)果并進(jìn)行處理;
利用修改dom模型節(jié)點(diǎn)特征來(lái)更新頁(yè)面局部從而實(shí)現(xiàn)局部刷新;
3.2 Ajax應(yīng)用場(chǎng)景
運(yùn)用XHTML+CSS來(lái)表達(dá)資訊;
運(yùn)用JavaScript操作DOM(Document Object Model)來(lái)執(zhí)行動(dòng)態(tài)效果;
運(yùn)用XML和XSLT操作資料;
3.3 Ajax編程
步驟:
創(chuàng)建XmlHttpRequest對(duì)象;
var xmlhttp = new XMLHttpRequest();
微軟版本的:var xmlhttp = new ActiveXObject(“Microsoft.XMLHttp”);
初始化XmlHttpRequest對(duì)象;
* **使用open方法設(shè)定請(qǐng)求參數(shù);**
open(method,url,async)
* **使用onreadystatechange設(shè)定回調(diào)函數(shù);**
存儲(chǔ)函數(shù)或者函數(shù)名,當(dāng)readyState屬性改變時(shí),就會(huì)調(diào)用該函數(shù);
readState:存有XmlHttpRequest的狀態(tài),從0~4發(fā)生變化
* 0:請(qǐng)求未初始化
* 1:服務(wù)器連接已經(jīng)建立
* 2:請(qǐng)求已接收
* 3:請(qǐng)求處理中
* 4:請(qǐng)求已完成且響應(yīng)已就緒狀態(tài)為200
使用send方法發(fā)送請(qǐng)求;
send(String):參數(shù)為String時(shí)僅用于POST請(qǐng)求
在回調(diào)函數(shù)中處理響應(yīng)結(jié)果,更新局部;
responseText:獲取字符串形式的響應(yīng)數(shù)據(jù);
responseXML:獲得XML形式的響應(yīng)數(shù)據(jù);
3.3.1 案例
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
AJAX
username:
發(fā)送Ajax
Ajax的局部展示
package com.sx.kaka.controller;
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{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println(“doGet…”);
String username = req.getParameter(“username”);
PrintWriter out = resp.getWriter();
//業(yè)務(wù)處理
if(username.equals(“admin”)){
out.print(“failure”);
}else{
out.print(“success”);
}
out.flush();
out.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
3.4 ajax實(shí)現(xiàn)全查
步驟:
編寫(xiě)鏈接發(fā)送ajax請(qǐng)求 (html)
查詢(xún)數(shù)據(jù)庫(kù)獲取數(shù)據(jù)集合;(servlet)
將數(shù)據(jù)集合轉(zhuǎn)成json字符串;(servlet)
使用打印流響應(yīng)到xhr里;(servlet)
回調(diào)函數(shù)獲得響應(yīng)數(shù)據(jù),將字符串轉(zhuǎn)成json對(duì)象;(html)
遍歷數(shù)組輸出到div中(html)
3.4.1 JSP頁(yè)面
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
全查
全查
3.4.2 Servlet頁(yè)面
package com.sx.kaka.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過(guò),也去過(guò)華為、OPPO等大廠(chǎng),18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)Java工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年Java開(kāi)發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Java開(kāi)發(fā)知識(shí)點(diǎn),真正體系化!
由于文件比較大,這里只是將部分目錄截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠(chǎng)面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且會(huì)持續(xù)更新!
如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以?huà)叽a獲取?。。▊渥ava獲?。?/p>
最后
面試是跳槽漲薪最直接有效的方式,馬上金九銀十來(lái)了,各位做好面試造飛機(jī),工作擰螺絲的準(zhǔn)備了嗎?
掌握了這些知識(shí)點(diǎn),面試時(shí)在候選人中又可以?shī)Z目不少,暴擊9999點(diǎn)。機(jī)會(huì)都是留給有準(zhǔn)備的人,只有充足的準(zhǔn)備,才可能讓自己可以在候選人中脫穎而出。
《互聯(lián)網(wǎng)大廠(chǎng)面試真題解析、進(jìn)階開(kāi)發(fā)核心學(xué)習(xí)筆記、全套講解視頻、實(shí)戰(zhàn)項(xiàng)目源碼講義》點(diǎn)擊傳送門(mén)即可獲??! 希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。**[外鏈圖片轉(zhuǎn)存中…(img-PSROtGmy-1713207399247)]
[外鏈圖片轉(zhuǎn)存中…(img-UkWJuK76-1713207399247)]
[外鏈圖片轉(zhuǎn)存中…(img-hgyV8zp0-1713207399248)]
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Java開(kāi)發(fā)知識(shí)點(diǎn),真正體系化!
由于文件比較大,這里只是將部分目錄截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠(chǎng)面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且會(huì)持續(xù)更新!
如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以?huà)叽a獲?。。。▊渥ava獲取)
最后
面試是跳槽漲薪最直接有效的方式,馬上金九銀十來(lái)了,各位做好面試造飛機(jī),工作擰螺絲的準(zhǔn)備了嗎?
掌握了這些知識(shí)點(diǎn),面試時(shí)在候選人中又可以?shī)Z目不少,暴擊9999點(diǎn)。機(jī)會(huì)都是留給有準(zhǔn)備的人,只有充足的準(zhǔn)備,才可能讓自己可以在候選人中脫穎而出。
[外鏈圖片轉(zhuǎn)存中…(img-jm8tnLQQ-1713207399248)]
[外鏈圖片轉(zhuǎn)存中…(img-vVQbhwus-1713207399248)]
《互聯(lián)網(wǎng)大廠(chǎng)面試真題解析、進(jìn)階開(kāi)發(fā)核心學(xué)習(xí)筆記、全套講解視頻、實(shí)戰(zhàn)項(xiàng)目源碼講義》點(diǎn)擊傳送門(mén)即可獲??!
柚子快報(bào)邀請(qǐng)碼778899分享:json ajax 筆記 全查
文章來(lái)源
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀(guān)點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。