struts2:JSON在struts中的应用(JSP页面中将对象转换为JSON字符串提交、JSP页面中获取后台Response返回的JSON对象)...
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对象)...相关推荐
- php如何表格中的变为超链接,php中将网址转换为超链接的函数
php中将网址转换为超链接的函数 复制代码 代码如下: function showtext($text){ $search = array('|(http://[^ ]+)|', '|(https:/ ...
- JS前端取得并解析后台服务器返回的JSON数据的方法
摘要:主要介绍:使用eval函数解析JSON数据:$.getJSON()方法获得服务器返回的JSON数据 JavaScript eval() 函数 eval(string) 函数可计算某个字符串,并执 ...
- ssm把后端数据传到前端_ssm框架中前端jsp页面的数据除了表单提交以外如何传到后台?...
ssm框架里面,前端页面的数据是怎么绑定的,如果我不用表单提交的话,我该怎么在后台去取值?用表单提交,添加没问题,换成现在的就不行了? ssm框架里面,前端页面的数据是怎么绑定的,如果我不用表单提交的 ...
- c语言中将十六进制数转换为十进制数程序,C语言中十六进制转十进制两种实现方法...
C语言中十六进制转十进制两种实现方法 C语言 · 十六进制转十进制 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英 ...
- HTML中将px转换为em的语法,在JavaScript中转换EM为PX(并获得默认字体大小)
CommunityChannel72提出了一个问题:Converting em to px in Javascript (and getting default font size),或许与您遇到的问 ...
- ajax spring mvc 接收json数据,easyui ajax请求获取SpringMVC @ResponseBody返回的Json数据为什么非得eval才能通过对象获取值?...
是这样的,问题是不是比较郁闷, Spring代码@RequestMapping(value="/UserModel/createUser.html") @ResponseBody ...
- java json转换xml格式_在Java中将JSON对象转换为XML格式?
JSON是一种轻量级的数据交换格式,并且JSON的格式类似于键值对.我们可以使用org.json.XML类将JSONObject转换为XML格式,这提供了将XML文本转换为JSONObject并将JS ...
- 修改软件服务器json返回数据格式,AngularJS处理服务器端返回的JSON数据的格式问题...
用ng的$http服务发起ajax请求,php返回的JSON数据格式要正确! 一开始我的php页面是这样返回数据的: if($result){ $oid = mysqli_insert_id($con ...
- ajax调取json接口,通过 Ajax 调取后台接口将返回的 json 数据绑定在页面上
第一步: 编写基础的 html 框架内容,并引入 jquery: 测试Ajax 第二步: 在 " " 中间插入要点击的按钮和用来显示数据的 标签,并编写对应的 function: ...
最新文章
- 三个可能会被计算机视觉技术改变的行业
- 想学Python,怎么开始才好呢?
- 异常“只能在执行Render()的过程中调用RegisterForEventValidation”的解决办法(转)...
- 【Prince2科普】Prince2七大流程概论
- 【SQL Server】阿里云CentOS安装SQL Server教程 含破解3.5G内存的限制、win端远程连接
- SINOCES 2011
- 表单内如何直接贴图而不用上传图片_表单如何添加图片?
- windows 下启动zookeeper的zkServer.cmd服务闪退
- oracle java javapath_系统找不到C:\ProgramData\Oracle\Java\javapath\java.exe问题及解决方案...
- MySQL 字符集问题及安全的更新操作
- I2C总线协议的简要说明
- nginx虚拟机无法访问解决
- c语言挂科 合工大,合工大计算机学院程序设计01程序设计与C语言初步.ppt
- SEO新手一分钟入门教程
- 哪个蓝牙耳机好?盘点2022年600元左右的蓝牙耳机
- C++ MFC 导出ListControl数据到Excel
- python入门(三)列表、元组、range()、字典
- 什么是老域名?选择老域名要注意什么?
- python笛卡尔坐标系_将GPS的WGS84坐标(大地坐标系)转换为平面坐标(笛卡尔坐标系)的方法...
- 商品折扣后的最终价格
热门文章
- 图片浏览器每次只能打开一张图片_好嗨哟!微信图片批量提取下载,我只用了3秒钟~...
- 基于共享内存的聊天室服务程序
- selenium在eclipse中的使用(详细介绍)
- OpenCV--读取图像中任意点的像素值,并显示坐标
- 一个XML Schema及XML文档(联系人)
- JQuery EasyUI入门
- 【小程序】【Tips】image 组件中 null 和 undefined 的区别和对策
- 【环境搭建003】UBUNTU + ECLIPS + ANDROID 嵌入式系统编译环境搭建遇到的稀奇古怪的问题集合
- python文件是怎么打开_python file怎么打开
- php3级分类,关于php非递归三级分类输出json数据