柚子快報(bào)激活碼778899分享:ajax 查詢(xún)所有實(shí)現(xiàn)
柚子快報(bào)激活碼778899分享:ajax 查詢(xún)所有實(shí)現(xiàn)
public class User {
private Integer id;
private String name;
private String password;
private Date birthday;
3、使用FastJson工具類(lèi)轉(zhuǎn)換對(duì)象
(1)單個(gè)java對(duì)象轉(zhuǎn)換為JSON串
/**
轉(zhuǎn)換單個(gè)對(duì)象
*/
@Test
public void FastJson() {
//1.創(chuàng)建一個(gè)對(duì)象
User user = new User(1, “王恒杰”, “123456”, new Date());
// 打印對(duì)象
System.out.println(“User對(duì)象”+user);
/**
使用fastJson將User對(duì)象轉(zhuǎn)換為json形式的字符串 參數(shù):要轉(zhuǎn)化的對(duì)象 返回值:json字符串
*/
String json = JSONObject.toJSONString(user);
System.out.println(“json串”+json);
}
轉(zhuǎn)換后結(jié)果
注:我們會(huì)發(fā)現(xiàn)對(duì)象轉(zhuǎn)換為JSON串時(shí),日期轉(zhuǎn)化不會(huì)正常顯示 ,他會(huì)顯示為毫秒!FastJson專(zhuān)門(mén)提供一個(gè)API解決日期格式轉(zhuǎn)化 問(wèn)題!
(2)java對(duì)象轉(zhuǎn)換為JSON串日期轉(zhuǎn)化方案
/**
java對(duì)象轉(zhuǎn)換為JSON串日期轉(zhuǎn)化方案
*/
@Test
public void FastJson() {
//1.創(chuàng)建一個(gè)對(duì)象
User user = new User(1, “王恒杰”, “123456”, new Date());
// 打印對(duì)象
System.out.println(“User對(duì)象”+user);
/**
2.使用fastJson將User對(duì)象轉(zhuǎn)換為json形式的字符串 參數(shù):要轉(zhuǎn)化的對(duì)象 返回值:json字符串
*/
String json1 = JSONObject.toJSONString(user);
System.out.println(“json串”+json1);
/**
3.fastJson日期格式轉(zhuǎn)化API 參數(shù)1:要轉(zhuǎn)化的對(duì)象 參數(shù)2:日期轉(zhuǎn)化 可以寫(xiě)成 yyy-mm-dd && yyyy-mm-dd hh:mm:ss兩種 返回值:日期格式化后的json串
*/
String json2 = JSONObject.toJSONStringWithDateFormat(user, “yyyy-mm-dd hh:mm:ss”);
System.out.println(“日期格式化后的json串”+json2);
}
轉(zhuǎn)換后結(jié)果
(3)List集合對(duì)象轉(zhuǎn)換為JSON串
@Test
public void ListByFastJsonTest(){
//1.創(chuàng)建List集合
ArrayList list = new ArrayList<>();
//2,添加數(shù)據(jù)
list.add(new User(1, “王恒杰1”, “123456”, new Date()));
list.add(new User(2, “王恒杰2”, “123456”, new Date()));
list.add(new User(3, “王恒杰3”, “123456”, new Date()));
list.add(new User(4, “王恒杰4”, “123456”, new Date()));
//通過(guò)fastJson將List集合轉(zhuǎn)換為json串
String listUser = JSONObject.toJSONStringWithDateFormat(list, “yyyy-mm-dd”);
System.out.println(listUser);
}
轉(zhuǎn)換后結(jié)果
(4)map集合對(duì)象轉(zhuǎn)換為JSON串
@Test
public void MapByFastJsonTest() {
//1.創(chuàng)建map集合
Map
//2,添加數(shù)據(jù)
map.put(“1號(hào)選手”, “王恒杰1”);
map.put(“2號(hào)選手”, “王恒杰2”);
map.put(“3號(hào)選手”, “王恒杰3”);
map.put(“4號(hào)選手”, “王恒杰4”);
//通過(guò)fastJson將map集合轉(zhuǎn)換為json串
String json = JSONObject.toJSONString(map);
System.out.println(json);
}
轉(zhuǎn)換后結(jié)果
(5)使用注解的方法解決日期格式
實(shí)體類(lèi)User:
測(cè)試方法:
@Test
public void DateByFastJsonTest(){
User user = new User();
user.setBirthday(new Date());
String json = JSONObject.toJSONString(user);
System.out.println(json);
}
轉(zhuǎn)換后結(jié)果
七、Google的Gson 的使用(功能最全 )
===================================================================================================
先對(duì)與fastJson來(lái)說(shuō):Gson在功能上面無(wú)可挑剔,但是性能上面比FastJson有所差距。因?yàn)槲液苌偈褂?,所以Gson我就測(cè)試了一個(gè)!
1、在maven項(xiàng)目中導(dǎo)入Fastjson 的依賴(lài)
com.google.code.gson
gson
2.8.5
2、創(chuàng)建實(shí)體類(lèi)User
public class User {
private Integer id;
private String name;
private String password;
private Date birthday;
3、單個(gè)java對(duì)象轉(zhuǎn)換為JSON串:toJson
/**
Gson轉(zhuǎn)換單個(gè)對(duì)象
*/
@Test
public void Gson() {
//1.創(chuàng)建一個(gè)對(duì)象
User user = new User(1, “王恒杰”, “123456”, new Date());
// 打印對(duì)象
System.out.println(“User對(duì)象” + user);
/**
2.使用Gson將User對(duì)象轉(zhuǎn)換為json形式的字符串
*/
Gson gson = new Gson();
String json = gson.toJson(user);
System.out.println(json);
}
轉(zhuǎn)換后結(jié)果
4、java對(duì)象轉(zhuǎn)換為JSON串日期轉(zhuǎn)化方案
@Test
public void DateGson() {
//1.創(chuàng)建一個(gè)對(duì)象
User user = new User(1, “王恒杰”, “123456”, new Date());
// 打印對(duì)象
System.out.println(“User對(duì)象” + user);
/**
2.使用Gson將User對(duì)象轉(zhuǎn)換為json形式的字符串
*/
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.setDateFormat(“yyyy-mm-dd”).create();
String json = gson.toJson(user);
System.out.println(json);
}
轉(zhuǎn)換后結(jié)果
五、如何選擇Gson || FastJson
=========================================================================================
在項(xiàng)目選型的時(shí)候可以使用Google的Gson和阿里巴巴的FastJson兩種并行使用,
如果只是功能 要求,沒(méi)有性能 要求,可以使用google的Gson,
如果有性能上面的要求可以使用Gson將bean轉(zhuǎn)換json確保數(shù)據(jù)的正確,使用FastJson將Json轉(zhuǎn)換Bean
六、前端將json串轉(zhuǎn)換為js中的json對(duì)象
==========================================================================================
//json形式字符串:xhr.responseText
轉(zhuǎn)換方式1: var JsJsonObject=JSON.parse(xhr.responseText); 轉(zhuǎn)換方式2: var JsJsonObject=eval(“+(xhr.responseText)+”);
JSJsonObject屬性名 獲取對(duì)應(yīng)屬性值
前后端json轉(zhuǎn)化總結(jié):
java對(duì)象:使用json轉(zhuǎn)換工具(FastJson) 將對(duì)象轉(zhuǎn)換為json串 再進(jìn)行轉(zhuǎn)換 js: 將接收到的json字符串轉(zhuǎn)換為js中的json對(duì)象
七、FastJson實(shí)用案例
=================================================================================
1、案例要求:?jiǎn)螕粽故締蝹€(gè)用戶(hù)信息 & 驗(yàn)證用戶(hù)名是否存在
2、具體實(shí)現(xiàn)
(1)技術(shù)選型:
Servlet+html+Ajax+js(主要展示ajax&FastJson效果),Ajax我們使用的是原生js實(shí)現(xiàn)
(2)所需要依賴(lài)
javax.servlet
javax.servlet-api
3.1.0
provided
javax.servlet.jsp
jsp-api
2.1
com.alibaba
fastjson
1.2.47
(3)實(shí)體類(lèi)User
public class User {
private Integer id;
private String name;
private String password;
private Date birthday;
(3)html
用戶(hù)名:
(4)ajax實(shí)現(xiàn)數(shù)據(jù)傳輸
(5)servlet實(shí)現(xiàn)后端
單擊展示單個(gè)用戶(hù)信息
@WebServlet(“/checkName”)
public class CheckServlet extends HttpServlet {
@Override
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//統(tǒng)一編碼格式
request.setCharacterEncoding(“utf-8”);
response.setContentType(“text/html;setchar=utf-8”);
response.setCharacterEncoding(“utf-8”);
//接收數(shù)據(jù)
String name = request.getParameter(“name”);
User user = new User(1, “王恒杰”, “123456”, new Date());
//處理業(yè)務(wù)
if (user.getName().equals(name)) {
response.getWriter().print(“用戶(hù)可以被查詢(xún)到!”);
} else {
//驗(yàn)證用戶(hù)名是否存在
response.getWriter().print(“用戶(hù)不存在”);
}
}
}
驗(yàn)證用戶(hù)名是否存在
@WebServlet(“/user”)
public class UserServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//統(tǒng)一編碼格式
request.setCharacterEncoding(“utf-8”);
response.setContentType(“text/html;setchar=utf-8”);
response.setCharacterEncoding(“utf-8”);
//接收數(shù)據(jù)
String name = request.getParameter(“name”);
User user = new User(1, “王恒杰”, “123456”, new Date());
//處理業(yè)務(wù)
// 響應(yīng)輸出流 向客戶(hù)端響應(yīng)內(nèi)容
String jsonUser = JSONObject.toJSONStringWithDateFormat(user, “yyyy-mm-dd”);
response.getWriter().print(jsonUser);
}
}
效果展示:
八、Ajax發(fā)送請(qǐng)求處理多個(gè)數(shù)據(jù)
===================================================================================
1、實(shí)現(xiàn)步驟:
1.給按鈕添加單擊事件
2.發(fā)送請(qǐng)求查詢(xún)多個(gè)用戶(hù)
前端Ajax實(shí)現(xiàn):
var btn=document.getElementById(“btn”);
btn.οnclick=function(){
//發(fā)送請(qǐng)求查詢(xún)多個(gè)用戶(hù)
var xhr=new XmlHttpRequest();
xhr.open(“get|post”,“/xxx/queryAllServlet”);
//[post需要添加]xhr.setRequestHeader(“content-type”,“app…”);
xhr.send();
on.onreadystatechange=funtion(){
if(xhr.readyState=4&&xhr.status==200){
//響應(yīng)數(shù)據(jù)
//xhr.responseText;//json字符串
var users=JSON.parse(xhr.responseText);//json形式j(luò)s對(duì)象
//var users=eval(“(”+xhr.responseText+“)”)//json形式j(luò)s對(duì)象
//遍歷
for(var i=0;i //js操作頁(yè)面結(jié)構(gòu) } } } } 后端用Servelt|Struts2實(shí)現(xiàn): queryAll{ //接收數(shù)據(jù) //調(diào)用業(yè)務(wù) List users=new UserServicce.queryAll(); //將users轉(zhuǎn)換為json形式字符串(fastJson實(shí)現(xiàn)) String JsonUsers=JSONObject.JSONString(users); //響應(yīng)數(shù)據(jù) response.getWriter().pront(jsonUsers); } 2、不同的瀏覽器版本發(fā)送異步請(qǐng)求 屬性:XMLHttpRequest 布爾值 true:WebKit內(nèi)核 false:IE內(nèi)核 js瀏覽器差異 IE內(nèi)核 WebKit內(nèi)核 3、Ajax實(shí)現(xiàn)前端: %@ page contentType=“text/html;charset=UTF-8” language=“java” isELIgnored=“false” %> 查詢(xún)所有實(shí)現(xiàn) 4、Servlet實(shí)現(xiàn)后端 @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ArrayList list = new ArrayList<>(); //2,添加數(shù)據(jù) list.add(new User(1, “王恒杰1”, “123456”, new Date())); list.add(new User(2, “王恒杰2”, “123456”, new Date())); list.add(new User(3, “王恒杰3”, “123456”, new Date())); list.add(new User(4, “王恒杰4”, “123456”, new Date())); String usersJson = JSONObject.toJSONStringWithDateFormat(list, “YYYY-MM-DD”); response.setCharacterEncoding(“utf-8”); response.getWriter().print(usersJson); } 十、JQuery的Ajax請(qǐng)求 ================================================================================== 1、javaScript實(shí)現(xiàn)Ajax請(qǐng)求發(fā)送出現(xiàn)的問(wèn)題 編碼冗余 考慮瀏覽器差異問(wèn)題 2、Jquery實(shí)現(xiàn)Ajax請(qǐng)求發(fā)送 Jquery框架天生支持Ajax請(qǐng)求 使用Ajax發(fā)送請(qǐng)求,必須要引入對(duì)應(yīng)的js文件 <%-- 引入jquery對(duì)應(yīng)文件–%> 3、怎么樣使用jquery發(fā)送Ajax請(qǐng)求? (1)get請(qǐng)求方式 $.get(url,[data],[callback],[type])=jquery.get(url,[data],[callback],[type]); 參數(shù):url 請(qǐng)求發(fā)送的目標(biāo)地址 “/xxx/xxAction” data 要向服務(wù)端傳遞的數(shù)據(jù) “name=whj&…” 3.callback 回調(diào)函數(shù) 表示響應(yīng)解析完成并且正確情況下 你需要執(zhí)行的功能 返回內(nèi)容格式 xml,html,script json 通過(guò)type可以設(shè)置響應(yīng)回來(lái)的響應(yīng)類(lèi)型 text:返回?cái)?shù)據(jù)類(lèi)型字符串 json:會(huì)自動(dòng)將返回的數(shù)據(jù)封裝成json對(duì)象(相當(dāng)于 JSON.parse()); *使用場(chǎng)景: 發(fā)送請(qǐng)求,不處理響應(yīng) $.get(“url”) 發(fā)送請(qǐng)求,傳遞數(shù)據(jù),不處理響應(yīng) $.get(“url”,“name=whj”) 發(fā)送請(qǐng)求,不傳遞數(shù)據(jù),處理響應(yīng) $.get(“url”,function(){}) 發(fā)送請(qǐng)求,傳遞數(shù)據(jù),處理響應(yīng) $.get(“url”,“name=whj”,function({})); 發(fā)送請(qǐng)求,傳遞數(shù)據(jù),處理響應(yīng),同時(shí)設(shè)置返回類(lèi)型 $.get(“url”,“name=whj”,function({}),“json”); *注意:調(diào)用jquery語(yǔ)法時(shí)jquery=$ 用get請(qǐng)求方式給按鈕綁定單機(jī)事件獲取多個(gè)數(shù)據(jù) <%@ page contentType=“text/html;charset=UTF-8” language=“java” isELIgnored=“false” %> <%-- 引入jquery對(duì)應(yīng)文件–%> 效果展示 (2)post方式請(qǐng)求 $post(url,[data],[callback],[type]) 1.url:請(qǐng)求的資源路徑。 data:發(fā)送給服務(wù)器端的請(qǐng)求參數(shù),格式可以是key=value,也可以是 js 對(duì)象。 callback:當(dāng)請(qǐng)求成功后的回調(diào)函數(shù),可以在函數(shù)中編寫(xiě)我們的邏輯代碼。 type:預(yù)期的返回?cái)?shù)據(jù)的類(lèi)型,取值可以是 xml, html, js, json, text等。 用post請(qǐng)求方式給按鈕綁定單機(jī)事件獲取多個(gè)數(shù)據(jù) <%@ page contentType=“text/html;charset=UTF-8” language=“java” isELIgnored=“false” %> <%-- 引入jquery對(duì)應(yīng)文件–%> 柚子快報(bào)激活碼778899分享:ajax 查詢(xún)所有實(shí)現(xiàn) 文章來(lái)源
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。