java web ajax json_Java Web ajax与json

ajax的概念:

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

ajax运行原理:

页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到      服务器端,在这段时间里,客户端可以任意进行任意操作,直到服务器端将数据返回      给Ajax引擎后,会触发你设置的事件,从而执行自定义的js逻辑代码完成某种页面功能。

主要分为js原生的ajax 技术:

js原生的Ajax其实就是围绕浏览器内内置的Ajax引擎对象进行学习的,要使用js原生的Ajax完成异步操作,有如下几个步骤:

1)创建Ajax引擎对象

2)为Ajax引擎对象绑定监听(监听服务器已将数据响应给引擎)

3)绑定提交地址

4)发送请求

5)接受响应数据

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1

2

3

4

5

Insert title here

6

7

8

9 functionfn1(){10 //get方法

11 //1、创建ajax引擎对象 ---- 所有的操作都是通过引擎对象

12 varxmlHttp= newXMLHttpRequest();13 //2、绑定监听 ---- 监听服务器是否已经返回相应数据

14 xmlHttp.onreadystatechange= function(){15 if(xmlHttp.readyState==4&&xmlHttp.status==200){16 //5、接受相应数据

17 varres=xmlHttp.responseText;18 document.getElementById("span1").innerHTML=res;19 }20 }21 //3、绑定地址

22 xmlHttp.open("GET","ajaxServlet?name=lisi",true);23 //4、发送请求

24 xmlHttp.send();25

26 }27 functionfn2(){28 //post 方法

29 //1、创建ajax引擎对象 ---- 所有的操作都是通过引擎对象

30 varxmlHttp= newXMLHttpRequest();31 //2、绑定监听 ---- 监听服务器是否已经返回相应数据

32 xmlHttp.onreadystatechange= function(){33 if(xmlHttp.readyState==4&&xmlHttp.status==200){34 //5、接受相应数据

35 varres=xmlHttp.responseText;36 document.getElementById("span2").innerHTML=res;37 }38 }39 //3、绑定地址

40 xmlHttp.open("POST","ajaxServlet",false);41 //4、发送请求 post方法传递参数 必须调用下面的代码才能传递成功

42 xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");43 xmlHttp.send("name=wangwu");44

45 }46

47

48

49

50

51

52

53

54

55

56

57

58

post 和 get 方法测试

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom;2

3 importjava.io.IOException;4 importjavax.servlet.ServletException;5 importjavax.servlet.annotation.WebServlet;6 importjavax.servlet.http.HttpServlet;7 importjavax.servlet.http.HttpServletRequest;8 importjavax.servlet.http.HttpServletResponse;9

10 /**

11 * Servlet implementation class AjaxServlet12 */

13 @WebServlet("/ajaxServlet")14 public class AjaxServlet extendsHttpServlet {15 private static final long serialVersionUID = 1L;16

17 /**

18 *@seeHttpServlet#HttpServlet()19 */

20 publicAjaxServlet() {21 super();22 //TODO Auto-generated constructor stub

23 }24

25 /**

26 *@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)27 */

28 protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {29 //TODO Auto-generated method stub30

31 //response.getWriter().write("zhangsan");

32

33 try{34 //睡眠5秒 可以看出异步与同步的区别

35 Thread.sleep(5000);36 } catch(InterruptedException e) {37 e.printStackTrace();38 }39

40 String parameter = request.getParameter("name");41

42 response.getWriter().write(Math.random()+parameter);43

44 }45

46 /**

47 *@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)48 */

49 protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {50 //TODO Auto-generated method stub

51 doGet(request, response);52 }53

54 }

ajaxServlet

Jquery 的Ajax 技术:

jquery 是一个js框架,自然对js原生的ajax 进行了封装,封装后的ajax 操作方法更简洁,功能更强大,

常用的有三种方式:

1.$.get(url,[data],[callback],[type])

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

其中:

url:代表请求的服务器端地址

data:代表请求服务器端的数据(可以是key=value形式也可以是json格式)

callback:表示服务器端成功响应所触发的函数(只有正常成功返回才执行)

type:表示服务器端返回的数据类型(jquery会根据指定的类型自动类型转换)

常用的返回类型:text、json、html等

3. $.ajax({option1:value,opiton2:value2...})

常用的option有如下:

async:是否异步,默认是true代表异步

data:发送到服务器的参数,建议使用json格式

dataType:服务器端返回的数据类型,常用text和json

success:成功响应执行的函数,对应的类型是function类型

type:请求方式,POST/GET

url:请求服务器端地址

示例代码:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1

2

3

4

5

Insert title here

6

7

8

9

10 functionfn1(){11 //get异步访问

12 $.get(13 "ajaxServlet01",//url地址

14 {"name":"张三","age":25},//请求参数

15 function(data){//执行成功后的回调函数

16 //{\"name\":\"tom\",\"age\":21}

17 alert(data.name);18 },19 "json"

20 );21 }22 functionfn2(){23 //post异步访问

24 $.post(25 "ajaxServlet01",//url地址

26 {"name":"李四","age":25},//请求参数

27 function(data){//执行成功后的回调函数

28 alert(data.name);29 },30 "json"

31 );32 }33

34

35 functionfn3(){36 $.ajax({37 //url 地址

38 url:"ajaxServlet01",39 //是否异步 默认为异步

40 async:true,41 //请求方式,POST/GET

42 type:"POST",43 //发送到服务器的参数,建议使用json格式

44 data:{"name":"lucy","age":18},45 //成功响应执行的函数,对应的类型是function类型

46 success:function(data){47 alert(data.name);48 },49 //错误响应执行的函数,对应的类型是function类型

50 error:function(){51 alert("请求失败");52 },53 //服务器端返回的数据类型,常用text和json

54 dataType:"json"

55 });56 }57

58

59

60

61

62

63

64

65

66

67

68

jquery 的ajax 方法

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom;2

3 importjava.io.IOException;4 importjavax.servlet.ServletException;5 importjavax.servlet.annotation.WebServlet;6 importjavax.servlet.http.HttpServlet;7 importjavax.servlet.http.HttpServletRequest;8 importjavax.servlet.http.HttpServletResponse;9

10 /**

11 * Servlet implementation class AjaxServlet0112 */

13 @WebServlet("/ajaxServlet01")14 public class AjaxServlet01 extendsHttpServlet {15 private static final long serialVersionUID = 1L;16

17 /**

18 *@seeHttpServlet#HttpServlet()19 */

20 publicAjaxServlet01() {21 super();22 //TODO Auto-generated constructor stub

23 }24

25 /**

26 *@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)27 */

28 protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {29 //TODO Auto-generated method stub

30 request.setCharacterEncoding("UTF-8");31

32 String name = request.getParameter("name");33 String age = request.getParameter("age");34

35 System.out.println(name+" "+age);36

37

38 //java代码只能返回一个json格式的字符串 编码格式 避免乱码

39 response.setContentType("text/html;charset=UTF-8");40 //传递json的方式要特别记录一下 要添加下划线41 //传递成功返回的json 类型数据

42 response.getWriter().write("{\"name\":\"汤姆\",\"age\":21}");43

44 }45

46 /**

47 *@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)48 */

49 protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {50 //TODO Auto-generated method stub

51 doGet(request, response);52 }53

54 }

ajaxServlet

json 格式:

1.对象格式: {"key":obj,"key2":obj,....}

2.数组格式:[obj,obj,obj....]

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 1.2

3 /**

4 * 案例一5 * {key:value,key:value}6 *7 * class Person{8 * String firstname = "张";9 * String lastname = "三丰";10 * Integer age = 100;11 * }12 *13 * Person p = new Person();14 * System.out.println(p.firstname);15 */

16

17 var person = {"firstname":"张","lastname":"三丰","age":100};18

19 //取出lastname

20 alert(person.lastname);21 //取出age

22 alert(person.age);23

24

25

26

27

28

29

30 2.31

32

33 /**

34 * 案例二35 * [{key:value,key:value},{key:value,key:value}]36 *37 */

38

39 var persons =[40 {"firstname":"张","lastname":"三丰","age":100},41 {"firstname":"李","lastname":"四","age":25}42 ];43

44 //取出 firstname=李

45 alert(persons[1].firstname);46 //取100

47 alert(persons[0].age);48

49

50

51

52 3.53

54

55 /**

56 * 案例三57 * {58 * "param":[{key:value,key:value},{key:value,key:value}]59 * }60 *61 *62 */

63

64 var json ={65 "baobao":[66 {"name":"小双","age":28,"addr":"扬州"},67 {"name":"建宁","age":18,"addr":"紫禁城"},68 {"name":"阿珂","age":10,"addr":"山西"},69 ]70 };71

72 //娶name = 建宁

73 alert(json.baobao[1].name);74

75 //取addr 山西

76 alert(json.baobao[2].addr);77

78

79

80

81 4.82

83

84 /**

85 * 案例四86 * {87 * "param1":[{key:value,key:value},{key:value,key:value}],88 * "param2":[{key:value,key:value},{key:value,key:value}],89 * "param3":[{key:value,key:value},{key:value,key:value}]90 * }91 *92 *93 */

94 var json ={95 "baobao":[96 {"name":"小双","age":28,"addr":"扬州"},97 {"name":"建宁","age":18,"addr":"紫禁城"},98 {"name":"阿珂","age":10,"addr":"山西"},99 ],100 "haohao":[101 {"name":"张爽","age":25,"addr":"吉林"},102 {"name":"舒洁","age":23,"addr":"赤峰"}103 ]104 };105

106 alert(json.haohao[1].name);107

108

109

110

111

112 5.113

114 /**

115 * 案例五116 * {117 * "param1":"value1",118 * "param2":{},119 * "param3":[{key:value,key:value},{key:value,key:value}]120 * }121 *122 *123 */

124

125 var json ={126 "key1":"value1",127 "key2":{"firstname":"张","lastname":"三丰","age":100},128 "key3":[129 {"name":"小双","age":28,"addr":"扬州"},130 {"name":"建宁","age":18,"addr":"紫禁城"},131 {"name":"阿珂","age":10,"addr":"山西"},132 ]133 };134

135 alert(json.key2.lastname);136

137 alert(json.key3[2].name);138

139

140

View Code

json 插件的转换

将java的对象或集合转成json形式字符串

json的转换插件是通过java的一些工具,直接将java对象或集合转换成json字符串。

常用的json转换工具有如下几种:

1)jsonlib

2)Gson:google

3)fastjson:阿里巴巴

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值