AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和XML

异步和同步:客户端和服务器端相互通信的基础上

同步:客户端操作后必须等待服务器端的响应,在等待的期间客户端不能做其他操作

异步:客户端操作后,不需要等待服务器端的响应,在服务器处理请求的过程中,客户端可以进行其他的操作

JQuery对AJAX实现

实现异步的方式

使用$.ajax()发送异步请求

<!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(){
//使用JQuery的方式实现异步请求
$.ajax({
url:"ajaxServlet1",//必选参数
type:"POST",//请求方式,可选参数
data:{"username":"jack","age":23},//请求参数,可选
success:function(data){
alert(data);//data变量是服务器响应给会的结果值
},//响应成功后的回调函数,可选
error:function(){
alert("出错啦...");
},//请求响应出现错误,会执行的回调函数
dataType:"text"//设置接受到的响应数据的格式
});
}
</script>
</head>
<body>
<input type="button" value="发送异步请求" onclick="fun();">
<input>
</body>
</html>
package com.data.ajax;

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("/ajaxServlet1")
public class AjaxServlet1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求参数
String username = request.getParameter("username");
String age = request.getParameter("age");
System.out.println(username);
//响应请求请求
response.getWriter().write("hello :" + username+age);
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}

使用$.get()和$.post()发送异步请求

$.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() {
$.get("ajaxServlet1",{"username":"zhangsan"},function (data) {
alert(data)
})
}
</script>
</head>
<body>
<input type="button" value="发送异步请求" onclick="fun();">
<input>
</body>
</html>

$.post(url,[data],[callback],[type])

JSON:

1.概念:JavaScript Object Notation JavaScript对象表示法

json现在多用于存储和交换文本信息的语法

进行数据的传输

JSON比XML更小,更快,更易解析

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
var person1={"name":"张三",age:23,'gender':"true"};
//遍历对象
for(key in person1){
alert(key+":"+person1[key]);
}
//获取name的值
var name1 = person1.name;
alert(name1)
//嵌套格式{}->[]
var person2 = {
"person":[
{"name":"张三","age":23,"gender":true},
{"name":"李四","age":24,"gender":true},
{"name":"王五","age":25,"gender":false},
]
};
//嵌套格式 []-{}
var person3=[
{"name":"张三","age":23,"gender":true},
{"name":"李四","age":24,"gender":true},
{"name":"王五","age":25,"gender":false},
]
alert("===============")
//遍历数组person3
for(var i=0;i<person3.length;i++){
var l=person3[i];
for(key in l ){
alert(key+l[key]);
}
}
</script>
</head>
<body>
</body>
</html>

JSON解释器--jackson

常见JSON解释器:Jsonlib,Gson,fastjson,jackson

把Java对象转换为JSON对象

注解:@JsonIgnore:排除不需要的属性,@JsonFormat:属性值格式化

复杂java对象转换

1.List:转换出来的是数组

3.Map:转换出来结果与对象格式一致

package com.data.domain;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.util.Date;

public class Person {
private String name;
private String gender;
private int age;
@JsonFormat(pattern = "yyyy-MM-dd")//设置指定格式
private Date birthday; public Person(String name, String gender, int age, Date birthday) {
this.name = name;
this.gender = gender;
this.age = age;
this.birthday = birthday;
}
public Person(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
} public Person() { } @Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
", birthday=" + birthday +
'}';
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getGender() {
return gender;
} public void setGender(String gender) {
this.gender = gender;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
package com.data.test;

import com.data.domain.Person;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import java.io.File;
import java.util.*; public class TestDemo1 {
//把Java对象转化为JSON对象
@Test
public void test1() throws Exception {
Person person = new Person("张三","男",20);
//创建Jackson的核心对象,ObjectMapper
ObjectMapper mapper = new ObjectMapper();
/*
writeValueAsString(obj):将对象转为json字符串
转换方法:writeValue(参数1,obj):该方法有很多重载方法
参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将Obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中 */
String s = mapper.writeValueAsString(person);
System.out.println(s);//{"name":"张三","gender":"男","age":20}
//将JSON写入文件
mapper.writeValue(new File("e://a.txt"),person);
}
@Test
public void test2() throws Exception {
Person person = new Person("张三","男",20, new Date());
ObjectMapper mapper = new ObjectMapper();
String s = mapper.writeValueAsString(person);
System.out.println(s);
}
//List集合转JSON对象
@Test
public void test3() throws Exception {
Person person1 = new Person("张三","男",20, new Date());
Person person2 = new Person("李四","女",22, new Date());
Person person3 = new Person("王五","男",23, new Date());
Person person4 = new Person("赵六","女",24, new Date());
//创建List集合
List<Person> list = new ArrayList<>();
list.add(person1);
list.add(person2);
list.add(person3);
list.add(person4);
//把List集合转换为JSON对象
ObjectMapper mapper = new ObjectMapper();
String s = mapper.writeValueAsString(list);
System.out.println(s);
} @Test
public void test5() throws Exception {
Map<String,Object> map = new HashMap<>();
map.put("name","张三");
map.put("age",22);
map.put("gender","男");
ObjectMapper mapper = new ObjectMapper();
String s = mapper.writeValueAsString(map);
System.out.println(s);
}
//把JSON对象转换为java对象
@Test
public void test6() throws Exception {
//初始化JSON字符串
String json = "{\"gender\":\"男\",\"name\":\"张三\",\"age\":22}";
ObjectMapper mapper = new ObjectMapper();
Person s = mapper.readValue(json,Person.class);
System.out.println(s);
} }

笔记-JavaWeb学习之旅18的更多相关文章

  1. 笔记-JavaWeb学习之旅5

    CP30的演示 package cn.itcast.datasourcejdbc; import com.mchange.v2.c3p0.ComboPooledDataSource; import j ...

  2. 笔记-JavaWeb学习之旅13

    验证码案列 昨天晚上出现的500错误原因在于验证码没有获取到,获取验证码是应该获取的是共享域中的验证码,而我把获取值得键给写成了jsp中的键,而不是内存生成图片中,然后把图片上传到共享域中的键.这两个 ...

  3. 笔记-JavaWeb学习之旅9

    XML Extensible Markup Language 可扩展标记语言 功能:配置文件,在网络中传输 基本语法 1.xml文档的后缀名.xml 2.xml第一行必须定义为文档声明 3.xml文档 ...

  4. 笔记-JavaWeb学习之旅7

    JavaScript基础 概念:一门客户端脚本语言,运行在客户端浏览器中,每一个浏览器都有JavaScript的解析引擎,是一个脚本语言,不需要编译,直接就可以被浏览器解析执行. JavaScript ...

  5. 笔记-JavaWeb学习之旅19

    Redis:redis是一款高性能的NOSQL系列的非关系型数据库 NOSQL: Not Only SQL ,意即"不仅仅是SQL",是一项全新的数据库理念,泛指非关系型数据库 r ...

  6. 笔记-JavaWeb学习之旅17

    1.过滤选择器 首元素选择器:first 获得选择的元素中的第一个元素 尾元素选择器:last获得选择元素中的最后一个元素 非元素选择器:not(selector) 不包括指定内容的元素 偶数选择器: ...

  7. 笔记-JavaWeb学习之旅16

    增强对象的功能 动态代理:在内存中形成代理类 实现步骤: 代理对象和真实对象实现相同的接口 代理对象 = Proxy.newProxyInstance(); 使用代理对象调用真实对象的方法 增强方法 ...

  8. 笔记-JavaWeb学习之旅15

    Filter:过滤器 概念:当访问服务器的资源是,过滤器可以将请求拦截下来,完成一些特殊的功能 快速入门: 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径 package com.d ...

  9. 笔记-JavaWeb学习之旅14

    JSTL:JavaServer Pages Tag Library JSP标准标签库 if标签 <%@ page import="java.util.ArrayList" % ...

随机推荐

  1. matlab之结构体数组struct

    以下内容来自于:https://blog.csdn.net/u010999396/article/details/54413615/ 要在MALTAB中实现比较复杂的编程,就不能不用struct类型. ...

  2. BZOJ 3251 树上三角形:LCA【构成三角形的结论】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3251 题意: 给你一棵树,n个节点,每个点的权值为w[i]. 接下来有m个形如(p,a,b ...

  3. Smarty模板重点汇总

    Smarty模板重点回顾:1.功能:前后端分离:2.实现方法:通过使用Smarty的核心类来实现,利用display方法来读取模板文 件,用正则进行替换,替换完保存到临时文件,再将临时文件加载到当前页 ...

  4. c# json 排版

    public static string PraseToJson(string json) { try { JsonSerializer s = new JsonSerializer(); JsonR ...

  5. GIT的Push和Pull,强制Pull覆盖本地命令

    连接命令: git remote add origin + 你Git库的地址 其中,origin是你对这个Git库地址的标识. 一. 把文件从本地上传到库中 第一步:使用命令 git add命令把文件 ...

  6. 开发工作之外的修炼Live笔记

    “开发工作之外的修炼”这期Live分享了下列话题: [1] 如何发现自己的兴趣 [2] 财富.资源与被动收入 [3] 目标管理 [4] 快速做选择 [5] 时间管理 [6] 如何投资自己 >&g ...

  7. MUI框架开发HTML5手机APP

    出处:http://www.cnblogs.com/jerehedu/p/7832808.html  前  言 JRedu 随着HTML5的不断发展,移动开发成为主流趋势!越来越多的公司开始选择使用H ...

  8. 国标28181sip开源库介绍(陆续补充完备)

    (1)osip一个基于 osip 库的 UAC 和 UAS 的代码整理http://blog.csdn.net/aflyeaglenku/article/details/51601270(2)pjsi ...

  9. DS:目录

    ylbtech-DS:目录 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   作者:ylbtech出处:http://ylbtech.cn ...

  10. 反射:newInstance()的使用方式

    通过反射创建新的类示例,有两种方式: Class.newInstance() Constructor.newInstance() 以下对两种调用方式给以比较说明: Class.newInstance( ...