需要加入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. MT【9】绝对值二次函数

    解答: 评:容易用绝对值不等式证明当$x\in[1,5]$时$|x^2+px+q|\ge2$

  2. MT【7】伯努利不等式

    评:伯努利不等式: 若$r\le0$或者$r\ge1$,$(1+x)^r\ge1+rx$, 若$0\le r\le1$,$(1+x)^r\le1+rx$

  3. 自学工业控制网络之路1.4-典型的现场总线介绍CAN

    返回 自学工业控制网络之路 自学工业控制网络之路1.4-典型的现场总线介绍CAN 1991年3月,发布了CAN技术贵干v2.0,包含了A.B两部分.CAN2.0A给出报文标准格式,CAN2.0B给出了 ...

  4. USACO 好题汇总

    背景 这里主要是用来针对USACO上的题目的二次汇总,因为我在刷题的过程中,有的题目我是可以很快想到解决方案的,对于这种题目,就没有必要深究了.但是有一些题目对于我来说还是有一些挑战的,可能用朴素的算 ...

  5. 【51Nod1405】树上距离和 二次扫描与换根法

    题目大意:给定一棵 N 个点的边权均为 1 的树,依次输出每个点到其他各个点的距离和. 题解:首先任意选定一个节点为根节点,比如 1,第一遍 dfs 遍历树求出子树大小.树上前缀和.第二遍 dfs 遍 ...

  6. ReactNative系列组件用法(一)

    首先我们来认识view 改变一些特性,再来看看项目的变化 我们新增flex布局的一些属性,再来看看项目的变化 接下来我们来看看如果获取屏幕的分辨率 关于图片的用法,reactNative这里也是很神奇 ...

  7. 《CSS揭秘》笔记(一)

    前言 我们在现代 CSS 中所面临的挑战已经不在于如何绕过这些转瞬即逝的浏览器 bug.如今的挑战是,在保证 DRY ① .可维护.灵活性.轻量级并且尽可能符合标准的前提下,把我们手中的这些CSS特性 ...

  8. codeblocks 支持多个exe同时执行

    如果看总时间,没什么用,因为总资源是一样的. 但是可以做到:吃饭前,执行多个程序,吃完饭,所有程序执行完.

  9. CENTOS 6.6初始化SHELL脚本

    时间:2016-02-24 00:30来源:blog.51cto.com 作者:“xxlixin” 博客 举报 点击:1717次 这个脚本是在刚安装完CENTOS6.6后可能需要进行的操作.在学习CE ...

  10. Swing的特性

    1.Swing组件的多样化 2.MVC(model-view-controller)体系结构 3.可存取性支持 4.支持键盘代替鼠标的操作 5.设置边框 6.使用图标 ———————————————— ...