struts2框架--------JSON支持Ajax

什么是 JSON
JavaScript 对象表示法(JavaScript Object Notation

是一种轻量级的数据交换格式,类似于XML,基于JavaScript的一个子集
JSON XML 更小、更快,更易解析
JSON 独立于语言和平台。JSON解析器和 JSON库支持许多不同的编程语言
这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。


JSON的数据类型(格式)

json简单说就是javascript中的对象和数组,所以JSON就只有两种数据格式:

  1. JSON Object

  2.JSONArray

通过这两种结构可以表示各种复杂的结构


JSON对象

对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对

象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符

串、数组、对象几种。

比如一个json对象:var person={ “firstName”: “Brett”, “lastName”:“McLaughlin”,“email”: “aaaa” } 这个js变

量类似于OO语言表示一个Person类实例,该对象拥有firstName, lastName, email三个属性(成员变量)



JSON数组

数组在js中是中括号“[]”扩起来的内容,数据结构为 [“ java”,“javascript”,“vb”,...],取值方式和所有语言中一样,使

用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

比如:{ "people": [

{ "firstName":"Brett", "lastName":"McLaughlin","email": "aaaa" },

{ "firstName":"Jason", "lastName":"Hunter","email": "bbbb"},

{ "firstName":"Elliotte","lastName":"Harold","email": "cccc" }

]}

在这个示例中,只有一个名为 people的 变量,值是包含三个条目的 数组,每个条目是一个人的记录,其中包含名、姓和 电子邮件

经过对象、数组2种结构就可以组合成复杂的数据结构了


用JavaScript操作JSON

JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

赋值给变量:可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:

访问JSON

只需用点号表示法来访问元素。所以,要想访问 programmers列表的第一个条目的姓氏,只需在 JavaScript中使用下面这样的代

码:people.programmers[1].lastName;

注意, 数组索引是从零开始的。所以,这行代码首先访问 people 变量中的数据;然后移动到称为 programmers的条目(属性),再移

动到第2个记录([1]);最后,访问 lastName键的值。

varpeople = {"pName":"zs","programmers":

[

{"firstName":"ren","lastName":"jinghua"},

{"firstName":"liu","lastName":"dong"},

{"firstName":"ke","lastName":"zhang"}

]

}


修改数据

正如可以用点号和方括号访问数据,也可以按照同样的方式轻松地修改数据:

people.musicians[1].lastName = "Rachmaninov";

JSON对象转为字符串

如果不能将对象转换回本文提到的文本格式,那么所有 数据修改都没有太大的价值。在 JavaScript 中这种转换也很简单:

var newJSONtext = people.toJSONString();

这样就行了!现在就获得了一个可以在任何地方使用的 文本字符串,例如,可以将它用作 Ajax 应用程序中的请求字符串


字符串转变为JSON格式

Json格式的字符串可以通过使用eval()函数转变为一个json对象,用于读取或修改数据


JSON在Ajax中的应用

配合使用客户端的JSON JavaScript脚本和服务器端的JSON Java实现,我们可以在服务端将Java对象转换为JSON串发送到客户端,

从而简化数据的解析处理

通过导入json-lib-2.3-jdk15.jar实现在Java中使用JSON

这个框架里有两个核心对象

  net.sf.json.JSONObject—对应单个JSON对象

   net.sf.json.JSONArray—对应JSON数组


Servlet+JQUERY+JSON实现Ajax

把json-lib-2.3-jdk15.jar拷入到web项目下web-inf中的lib包中

在服务器端(servlet)中将封装数据的对象通过JSON API转为JSON相关对象

如果是单个对象,则转换为JSONObject, 如果是多个(数组,集合),则转换为JSONArray

同样通过response将相应对象发送到客户端

在客户端使用JQuery解析json对象或数组,完成局部刷新(jquery ajax函数中的dataType要设置为json类型)


Struts2整合JSON

在struts2中要使用Json需要在项目中加入相应的json插件struts2-json-plugin-2.3.4.1.jar

该插件本质上就是一些拦截器和struts2配置文件

它提供了一个json的返回结果类型(Result Type),只要为Action指定返回结果类型为json,那么这个响应结果就不需要返回给任何视

图层,JSON相关拦截器会将Action里的信息自动转换为JSON指定格式的数据,并将该数据返回给JAVASCRIPT,这样可以完成AJAX的应用

交互.


Struts应用JSON处理Ajax步骤

从struts2 安装文件包里把struts2-json-plugin-2.3.4.1.jar拷贝到项目的web-inf目录中的lib目录下

struts.xml中package 中extends=“json-default”  比如:

  <package name="json"namespace="/json" extends="json-default">

在需要返回json的action定义中,result type=json。

避免使用get开头的action业务方法。因为JSON插件会把所有包含getter方法的属性都序列化到返回结果中

不需要加入转换json数据格式的代码,Json插件会根据该action属性的getter自动转换,在Ajax回调函数中会取得当前Action中所

有暴露出来属性的值




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值