需要加入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. 【题解】 bzoj1076: [SCOI2008]奖励关 (装压+期望dp)

    题面戳我 Solution 并不会做,看了下题解大概了解了.期望这个东西好难搞啊qwq 我们定义\(dp[i][j]\)表示第\(i\)步,拿到宝物前的状态为\(j\). 正着来会有很多不合法的情况, ...

  2. 洛谷 P2515 [HAOI2010]软件安装 解题报告

    P2515 [HAOI2010]软件安装 题目描述 现在我们的手头有\(N\)个软件,对于一个软件\(i\),它要占用\(W_i\)的磁盘空间,它的价值为\(V_i\).我们希望从中选择一些软件安装到 ...

  3. python 线程间事件通知

    这是线程间最简单的通信机制:一个线程发送事件,其他线程等待事件事件机制使用一个内部的标志,使用set方法进行使能为True,使用clear清除为falsewait方法将会阻塞当前线程知道标记为True ...

  4. [HEOI2013]SAO ——计数问题

    题目大意: Welcome to SAO ( Strange and Abnormal Online).这是一个 VR MMORPG, 含有 n 个关卡.但是,挑战不同关卡的顺序是一个很大的问题. 有 ...

  5. 有趣的filter

    js中的filter就是过滤的意思,比如,我们以什么样的方式进行过滤,得到我们想要的结果. 对,我们要的就是这个结果. 给定一个数组,我们要的是Burger(汉堡) const restaurants ...

  6. Java 多线程间通信

    JDK 1.5 以后, 将同步和锁封装成了对象, 并将操作锁的隐式方法定义到了该对象中, 将隐式动作变成了显示动作. Lock 接口 Lock 接口, 位于 java.util.concurrent. ...

  7. python 数据类型 datatype

    python  数据类型 datatype 列表list 元组tuple 集合set 字典dictionary 字符串string 一.列表list list :python的一种数据类型.是可变的, ...

  8. npm脚本

    在package.json的script里面我们可以写很多npm脚本,下面我来总结一下一些日常遇到的知识点: 1.npm_lifecycle_event npm 提供一个npm_lifecycle_e ...

  9. Hadoop生态圈-离线方式部署Cloudera Manager5.15.1

    Hadoop生态圈-离线方式部署Cloudera Manager5.15.1 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 到目前位置,Cloudera Manager和CDH最新 ...

  10. xgboost应用

    在业务中,我们经常需要对数据建模并预测.简单的情况下,我们采用 if else 判断(一棵树)即可.但如果预测结果与众多因素有关,而每一个特征的权重又不尽相同. 所以我们如何把这些特征的权重合理的找出 ...