JSON主要创建如下两种数据对象:

  • 由JSON格式字符串创建,转换成JavaScript的Object对象;
  • 由JSON格式字符串创建,转换成JavaScript的List或数组链表对象。

更多关于JSON的信息,请参考:JSON概述及其在JavaScript与Java中的应用(整理)

1. JSP页面中将对象转换为JSON字符串提交

1.1 创建JSP文件(convertObject2Json.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script type="text/javascript" src="../../js/json2.js"></script><script type="text/javascript">function ajaxTransferText(){var BigText = document.getElementById("BigText").value;var ajaxTransferObjectRef = new ajaxTransferObject("张三", "密码11", 10, BigText);var JSONString = JSON.stringify(ajaxTransferObjectRef);if (window.ActiveXObject) {myAjaxObject = new ActiveXObject("Microsoft.XMLHTTP");}else {myAjaxObject = new XMLHttpRequest();}var urlString = "jsonString=" + JSONString;alert(urlString);myAjaxObject.open("POST", "postJson.action"+"?timestamp=" + new Date().getTime(), true);myAjaxObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");myAjaxObject.send(urlString);}function ajaxTransferObject(username, password, age, BigText){this.username = username;this.password = password;this.age = age;this.BigText = BigText;}</script></head><body><textarea name="textarea" id="BigText" cols="45" rows="5">需要提交的信息主体...</textarea><br/><input type="button" value="提交试试" onclick="ajaxTransferText()"/></body>
</html>

1.2 创建后台处理Action类

package com.clzhang.ssh.demo6;import net.sf.json.JSONObject;import com.opensymphony.xwork2.ActionSupport;/*** 获取前台提交的JSON数据* @author Administrator**/
public class PostJSONAction extends ActionSupport {public static final long serialVersionUID = 1;private String jsonString;public String getJsonString() {return jsonString;}public void setJsonString(String jsonString) {this.jsonString = jsonString;}public String execute() {System.out.println(jsonString);JSONObject json = JSONObject.fromObject(jsonString);System.out.println("username=" + json.get("username"));System.out.println("username=" + json.get("password"));System.out.println("username=" + json.get("age"));System.out.println("username=" + json.get("BigText"));return null;}
}

1.3 修改配置文件struts.xml

        <action name="postJson" class="com.clzhang.ssh.demo6.PostJSONAction"></action>

1.4 测试

打开IE,输入地址:http://127.0.0.1:8080/st/ssh/demo6/convertObject2Json.jsp

结果如下:

确定后,后台显示:

2. JSP页面获取后台Response返回的JSON对象

2.1 创建JSP文件(getJsonFromResp.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script type="text/javascript" src="../../js/json2.js"></script><script type="text/javascript">var myAjaxObject;//在List中存字符串function getListString(){if (window.ActiveXObject) {myAjaxObject = new ActiveXObject("Microsoft.XMLHTTP");}else {myAjaxObject = new XMLHttpRequest();}myAjaxObject.open("GET", "getJson!listString.action?date=" + new Date().getTime(), true);myAjaxObject.onreadystatechange = retrunListString;myAjaxObject.send();}function retrunListString(){if (myAjaxObject.readyState == 4) {if (myAjaxObject.status == 200) {var returnJSONString = myAjaxObject.responseText;var returnJSON = JSON.parse(returnJSONString);var showString = "";for (var i = 0; i < returnJSON.length; i++) {showString = showString + returnJSON[i] + " ";}alert(showString);}}}//在List中存Bean            function getListBean(){if (window.ActiveXObject) {myAjaxObject = new ActiveXObject("Microsoft.XMLHTTP");}else {myAjaxObject = new XMLHttpRequest();}myAjaxObject.open("GET", "getJson!listBean.action?date=" + new Date().getTime(), true);myAjaxObject.onreadystatechange = retrunListBean;myAjaxObject.send();}function retrunListBean(){if (myAjaxObject.readyState == 4) {if (myAjaxObject.status == 200) {var returnJSONString = myAjaxObject.responseText;var returnJSON = JSON.parse(returnJSONString);var showString = "";for (var i = 0; i < returnJSON.length; i++) {showString = showString + returnJSON[i].username + " " + returnJSON[i].password + " " + returnJSON[i].age + " " + returnJSON[i].createDate + "\n";}alert(showString);}}}//在Map中存字符串            function getMapString(){if (window.ActiveXObject) {myAjaxObject = new ActiveXObject("Microsoft.XMLHTTP");}else {myAjaxObject = new XMLHttpRequest();}myAjaxObject.open("GET", "getJson!mapString.action?date=" + new Date().getTime(), true);myAjaxObject.onreadystatechange = retrunMapString;myAjaxObject.send();}function retrunMapString(){if (myAjaxObject.readyState == 4) {if (myAjaxObject.status == 200) {var returnJSONString = myAjaxObject.responseText;var returnJSON = JSON.parse(returnJSONString);var showString = "";for (var i in returnJSON[0]) {showString = showString + "key=" + i + " value=" + returnJSON[0][i] + "\n";}alert(showString);}}}//在Map中存Bean            function getMapBean(){if (window.ActiveXObject) {myAjaxObject = new ActiveXObject("Microsoft.XMLHTTP");}else {myAjaxObject = new XMLHttpRequest();}myAjaxObject.open("GET", "getJson!mapBean.action?date=" + new Date().getTime(), true);myAjaxObject.onreadystatechange = retrunMapBean;myAjaxObject.send();}function retrunMapBean(){if (myAjaxObject.readyState == 4) {if (myAjaxObject.status == 200) {var returnJSONString = myAjaxObject.responseText;var returnJSON = JSON.parse(returnJSONString);var showString = "";for (var i in returnJSON[0]) {showString = showString + "key=" + i + " username=" + returnJSON[0][i].username + " password=" + returnJSON[0][i].password + " age=" + returnJSON[0][i].age + " createDate=" + returnJSON[0][i].createDate + "\n";}alert(showString);}}}</script></head><body><input type="button" value="返回List中存String类型的JSON" onclick="getListString()"/><br/><br/><input type="button" value="返回List中存Bean类型的JSON" onclick="getListBean()"/><br/><br/><input type="button" value="返回Map中存String类型的JSON" onclick="getMapString()"/><br/><br/><input type="button" value="返回Map中存Bean类型的JSON" onclick="getMapBean()"/><br/></body>
</html>

View Code

2.2 创建后台处理Action类

package com.clzhang.ssh.demo6;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;import net.sf.json.JSONArray;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;/*** 返回给前台JSON数据,以四种方式 * @author Administrator**/
public class ReturnJSONAction extends ActionSupport {public static final long serialVersionUID = 1;private List<String> lstString = new ArrayList<String>();public ReturnJSONAction() {lstString.add("你今天吃了吗?");lstString.add("吃了多吃点");lstString.add("没吃回家吃去");lstString.add("好好学习");lstString.add("天天向上");}public String listString() throws IOException {JSONArray json = JSONArray.fromObject(lstString);System.out.println(json.toString());ServletActionContext.getResponse().setContentType("text/html");ServletActionContext.getResponse().setCharacterEncoding("utf-8");ServletActionContext.getResponse().getWriter().printf(json.toString());ServletActionContext.getResponse().getWriter().flush();ServletActionContext.getResponse().getWriter().close();return null;}public String listBean() throws IOException {List<UserInfo> listBean = new ArrayList<UserInfo>();for(String str: lstString) {UserInfo userInfo1 = new UserInfo();userInfo1.setUsername(str);userInfo1.setPassword("P" + Math.random());userInfo1.setAge((int)(Math.random()*10));userInfo1.setCreateDate(new SimpleDateFormat("yyyy-MM-dd hh-mm-ss").format(new Date()));listBean.add(userInfo1);}JSONArray json = JSONArray.fromObject(listBean);System.out.println(json.toString());ServletActionContext.getResponse().setContentType("text/html");ServletActionContext.getResponse().setCharacterEncoding("utf-8");ServletActionContext.getResponse().getWriter().printf(json.toString());ServletActionContext.getResponse().getWriter().flush();ServletActionContext.getResponse().getWriter().close();return null;}public String mapString() throws Exception {LinkedHashMap<String, String> mapString = new LinkedHashMap<String, String>();int count = 1;for(String str: lstString) {mapString.put(""+count++, str+count);}JSONArray json = JSONArray.fromObject(mapString);System.out.println(json.toString());ServletActionContext.getResponse().setContentType("text/html");ServletActionContext.getResponse().setCharacterEncoding("utf-8");ServletActionContext.getResponse().getWriter().printf(json.toString());ServletActionContext.getResponse().getWriter().flush();ServletActionContext.getResponse().getWriter().close();return null;}public String mapBean() throws Exception {LinkedHashMap<String, UserInfo> mapString = new LinkedHashMap<String, UserInfo>();int count = 1;for(String str: lstString) {UserInfo userInfo1 = new UserInfo();userInfo1.setUsername(str);userInfo1.setPassword("P" + Math.random());userInfo1.setAge((int)(Math.random()*10));userInfo1.setCreateDate(new SimpleDateFormat("yyyy-MM-dd hh-mm-ss").format(new Date()));mapString.put(""+count++, userInfo1);}JSONArray json = JSONArray.fromObject(mapString);System.out.println(json.toString());ServletActionContext.getResponse().setContentType("text/html");ServletActionContext.getResponse().setCharacterEncoding("utf-8");ServletActionContext.getResponse().getWriter().printf(json.toString());ServletActionContext.getResponse().getWriter().flush();ServletActionContext.getResponse().getWriter().close();return null;}public String execute() throws IOException {return null;}
}

View Code

2.3 修改配置文件struts.xml

        <action name="getJson" class="com.clzhang.ssh.demo6.ReturnJSONAction"></action>

2.4 测试

打开IE,输入地址:http://127.0.0.1:8080/st/ssh/demo6/getJsonFromResp.jsp

2.4.1 按下“返回List中存String类型的JSON”按钮

2.4.2 按下“返回List中存Bean类型的JSON”按钮

2.4.3 按下“返回Map中存String类型的JSON”按钮

2.4.4 按下“返回Map中存Bean类型的JSON”按钮

转载于:https://www.cnblogs.com/nayitian/p/3461478.html

struts2:JSON在struts中的应用(JSP页面中将对象转换为JSON字符串提交、JSP页面中获取后台Response返回的JSON对象)...相关推荐

  1. php如何表格中的变为超链接,php中将网址转换为超链接的函数

    php中将网址转换为超链接的函数 复制代码 代码如下: function showtext($text){ $search = array('|(http://[^ ]+)|', '|(https:/ ...

  2. JS前端取得并解析后台服务器返回的JSON数据的方法

    摘要:主要介绍:使用eval函数解析JSON数据:$.getJSON()方法获得服务器返回的JSON数据 JavaScript eval() 函数 eval(string) 函数可计算某个字符串,并执 ...

  3. ssm把后端数据传到前端_ssm框架中前端jsp页面的数据除了表单提交以外如何传到后台?...

    ssm框架里面,前端页面的数据是怎么绑定的,如果我不用表单提交的话,我该怎么在后台去取值?用表单提交,添加没问题,换成现在的就不行了? ssm框架里面,前端页面的数据是怎么绑定的,如果我不用表单提交的 ...

  4. c语言中将十六进制数转换为十进制数程序,C语言中十六进制转十进制两种实现方法...

    C语言中十六进制转十进制两种实现方法 C语言 · 十六进制转十进制 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英 ...

  5. HTML中将px转换为em的语法,在JavaScript中转换EM为PX(并获得默认字体大小)

    CommunityChannel72提出了一个问题:Converting em to px in Javascript (and getting default font size),或许与您遇到的问 ...

  6. ajax spring mvc 接收json数据,easyui ajax请求获取SpringMVC @ResponseBody返回的Json数据为什么非得eval才能通过对象获取值?...

    是这样的,问题是不是比较郁闷, Spring代码@RequestMapping(value="/UserModel/createUser.html") @ResponseBody ...

  7. java json转换xml格式_在Java中将JSON对象转换为XML格式?

    JSON是一种轻量级的数据交换格式,并且JSON的格式类似于键值对.我们可以使用org.json.XML类将JSONObject转换为XML格式,这提供了将XML文本转换为JSONObject并将JS ...

  8. 修改软件服务器json返回数据格式,AngularJS处理服务器端返回的JSON数据的格式问题...

    用ng的$http服务发起ajax请求,php返回的JSON数据格式要正确! 一开始我的php页面是这样返回数据的: if($result){ $oid = mysqli_insert_id($con ...

  9. ajax调取json接口,通过 Ajax 调取后台接口将返回的 json 数据绑定在页面上

    第一步: 编写基础的 html 框架内容,并引入 jquery: 测试Ajax 第二步: 在 " " 中间插入要点击的按钮和用来显示数据的 标签,并编写对应的 function: ...

最新文章

  1. 三个可能会被计算机视觉技术改变的行业
  2. 想学Python,怎么开始才好呢?
  3. 异常“只能在执行Render()的过程中调用RegisterForEventValidation”的解决办法(转)...
  4. 【Prince2科普】Prince2七大流程概论
  5. 【SQL Server】阿里云CentOS安装SQL Server教程 含破解3.5G内存的限制、win端远程连接
  6. SINOCES 2011
  7. 表单内如何直接贴图而不用上传图片_表单如何添加图片?
  8. windows 下启动zookeeper的zkServer.cmd服务闪退
  9. oracle java javapath_系统找不到C:\ProgramData\Oracle\Java\javapath\java.exe问题及解决方案...
  10. MySQL 字符集问题及安全的更新操作
  11. I2C总线协议的简要说明
  12. nginx虚拟机无法访问解决
  13. c语言挂科 合工大,合工大计算机学院程序设计01程序设计与C语言初步.ppt
  14. SEO新手一分钟入门教程
  15. 哪个蓝牙耳机好?盘点2022年600元左右的蓝牙耳机
  16. C++ MFC 导出ListControl数据到Excel
  17. python入门(三)列表、元组、range()、字典
  18. 什么是老域名?选择老域名要注意什么?
  19. python笛卡尔坐标系_将GPS的WGS84坐标(大地坐标系)转换为平面坐标(笛卡尔坐标系)的方法...
  20. 商品折扣后的最终价格

热门文章

  1. 图片浏览器每次只能打开一张图片_好嗨哟!微信图片批量提取下载,我只用了3秒钟~...
  2. 基于共享内存的聊天室服务程序
  3. selenium在eclipse中的使用(详细介绍)
  4. OpenCV--读取图像中任意点的像素值,并显示坐标
  5. 一个XML Schema及XML文档(联系人)
  6. JQuery EasyUI入门
  7. 【小程序】【Tips】image 组件中 null 和 undefined 的区别和对策
  8. 【环境搭建003】UBUNTU + ECLIPS + ANDROID 嵌入式系统编译环境搭建遇到的稀奇古怪的问题集合
  9. python文件是怎么打开_python file怎么打开
  10. php3级分类,关于php非递归三级分类输出json数据