需要加入jar包

Struts的JSON帮助我们自动将对象解析为JSON对象,不用我门借助第三方进行JSON的解析

。具体的使用机制如下:

1.Action类

package StrutsJSON;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map; import com.opensymphony.xwork2.Action; import freemarker.template.utility.NormalizeNewlines; public class JSONtest { private Map<String,Object> map;
private String name;
private String password;
List<User> list ; public List<User> getList() {
return list;
} public void setList(List<User> list) {
this.list = list;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public Map<String, Object> getMap() {
return map;
} public void setMap(Map<String, Object> map) {
this.map = map;
} public String execute(){
System.out.println(11);
System.out.println(name+" "+password);
map = new LinkedHashMap<String,Object>();
// 测试布尔类型
map.put("boob", 222);
// 测试集合类型
list = new ArrayList<>();
list.add(new User("qlq", "123456"));
list.add(new User("qz", "78910"));
map.put("list", list);
// 测试字符串类型
map.put("str", "20");
this.setMap(map);
// 测试对象
map.put("obj", new User("wlw", "22222"));
return Action.SUCCESS;
}
}

xml配置(注意package继承json-default,json-default已经继承struts-default)

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.devMode" value="true"></constant> <package name="test" extends="json-default"> <action name="jsontest" class="StrutsJSON.JSONtest">
<result type="json">
<param name="root">map</param>
</result>
</action> </package> </struts>

2.HTML通过ajax请求JSON数据

 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试JSON的页面</title>
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
function fun1() {
alert("开始请求数据");
$.get("jsontest.action", //请求地址
//"name=qlq&password=qlq", //请求参数
{
"name" : "qlq",
"password" : "nicai"
}, //请求传递的参数,也可以是JSON
function(data) { //data表示传递回来的数据,只有在成功的时候才有
alert(data);
}, "text" //表示返回内容的格式,json会将传回来的自动解析成json对象
);
}
</script>
</head>
<body> <input type="button" value="请求JSON数据" onclick="fun1()"> </body>
</html>

首先测试的是返回的数据格式,打印结果如下

将上面ajax请求返回数据格式改为json后再进行测试,

修改后HTML代码:

 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试JSON的页面</title>
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
function fun1() {
alert("开始请求数据");
$.get("jsontest.action", //请求地址
//"name=qlq&password=qlq", //请求参数
{
"name" : "qlq",
"password" : "nicai"
}, //请求传递的参数,也可以是JSON
function(data) { //data表示传递回来的数据,只有在成功的时候才有
/* 测试json数组 */
alert(data.list[0].name+" "+data.list[0].password);
/* 测试json对象与单个属性 */
alert(data.obj.name+" "+data.str);
}, "json" //表示返回内容的格式,json会将传回来的自动解析成json对象
);
}
</script>
</head>
<body> <input type="button" value="请求JSON数据" onclick="fun1()"> </body>
</html>

结果如下:

                                 

Struts的JSON机制的更多相关文章

  1. struts中json机制与普通页面跳转机制混用(全局结果集配置返回json)

    package继承json-default与struts-default 返回结果是add的话将addResult属性转换为json返回(addResult属性有getter,setter方法),返回 ...

  2. Ajax异步请求struts的JSON机制(省市区三级联动)

    1.struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts P ...

  3. struts返回json数据

    想要在struts中返回json格式数据有两种办法. 1.使用servlet的输出流 实际上就是在struts中获取response对象的输出流.然后写入你要返回的json数据,本质和用servlet ...

  4. 深入理解struts的运行机制

    扫码关注公众号,不定期更新干活 在此申明本博文并非原创,原文:http://blog.csdn.net/lenotang/article/details/3336623,本文章是在此文章基础上进行优化 ...

  5. struts token令牌机制

    利用Struts同步令牌(Token)机制来解决Web应用中的重复提交问题.该方法的基本原理是:服务器端在处理到达的request之前,会将request中的Token值与保存在当前用户session ...

  6. Hibernate+struts+JqueryAjax+jSON实现无刷新三级联动

    看网上JqueryAjax三级联动的例子讲不是很全,代码也给的不是很全,给初学者带来一定的难度.小弟自己写了一个,可能有些地方不是很好,希望大家能够提出建议. 用的是Hibernate+struts2 ...

  7. 【自制工具类】struts返回json数据包装格式类

    自己写的一个给struts返回的json数据包装格式类,不喜勿喷,原创,需在项目中引入com.alibaba.fastjson的jar包 先看下效果(这里没有使用msg,有兴趣的往下看): 上demo ...

  8. 关于Struts传递json给easyui的随笔

    今天在公司写测试代码,由于公司用的是ssh框架做的商城项目,我想先实现下简单的增删改查,奈何没有很好的后台页面(毕竟不能测试代码直接在他的项目里改啊) 所以想到了淘淘商城中有这个后台的管理页面,打算一 ...

  9. Struts Ajax Json

    一.包 struts2与json的依赖包:struts2-json-plugin-2.2.3.jar 二.过程: ①引入json依赖包 ②编写action类 ③配置struts.xml ④编写页面 ⑤ ...

随机推荐

  1. lambda 分类抽取N条

    从每个分类中,按照比例抽取 lista中percent是比例,按照这个比例抽取. static List<A> lista = new List<A>() { new A(){ ...

  2. python3.5 opencv3显示视频fps

    由于要进行多路视频的处理,所以fps就很重要 fps介绍 模板: 1.获取某一时刻的fps import time while True: start_time = time.time() # sta ...

  3. MT【46】不动点,稳定点几何直观

    评:不动点概念在数列的一类题中也是非常有用的.

  4. WebSocket安卓客户端实现详解(三)–服务端主动通知

    WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 We ...

  5. 【BZOJ3821/UOJ46】玄学(二进制分组,线段树)

    [BZOJ3821/UOJ46]玄学(二进制分组,线段树) 题面 BZOJ UOJ 题解 呜,很好的题目啊QwQ. 离线做法大概可以线段树分治,或者直接点记录左右两次操作时的结果,两个除一下就可以直接 ...

  6. 洛谷 P4475 巧克力王国 解题报告

    P4475 巧克力王国 题目描述 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力. 对于每一块巧克力,我们设 \(x\) 和 \( ...

  7. P1856 矩形周长

    哇!这小破题坑了我好久. 扫描线+线段树 这题数据范围小,没离散化.真要离散化我还搞不好呢. 具体的看这个博客吧. 主要是这个坑爹的c,len把我搞了,其他的还好. 代码: #include < ...

  8. SIFT算法详解

    尺度不变特征变换匹配算法详解Scale Invariant Feature Transform(SIFT)Just For Fun zdd  zddmail@gmail.com or (zddhub@ ...

  9. 惊喜的gift

    情侣的饰品吧!我之前在淘宝上买了一套,挺好的,很好看呢!男的手链,女的项链,手链需要项链的钥匙才能打得开,女孩子应该都会很喜欢的吧!至少我很喜欢!而且价格也不贵,150块人民币都不到,很适合当生日礼物 ...

  10. STM32 --- 断言(assert_param)的开启和使用

    默认,STM32的assert_param是没有开启检测,需要 #define USE_FULL_ASSERT 开启后,才能检测形参是否符合要求 // #define assert_param(exp ...