使用post方法实现json往返传输数据的方法
作者:徐刘根 发布时间:2024-04-18 09:28:23
标签:json,post,往返传输数据
问题所在:
当我们想让应用层和http之间的所有接口都采用json,这样,客户端代码就可以纯碎用javascript的对象来编写,服务器打啊也可以纯粹的用Java的对象来编写。
我们使用的是post请求的方法,有些不同于get的方法!
客户端html代码:
<html>
<head>
<title>Hello Ajax version 5a</title>
<style type='text/css'>
* { font-family: Tahoma, Arial, sans-serif; }
#helloTitle{ color: #48f; }
.sidebar{
background-color: #adf;
color: navy;
border: solid blue 1px;
width: 180px;
height: 200px;
padding: 2px;
margin: 3px;
float: left;
}
</style>
<script type='text/javascript' src='prototype.js'></script>
<script type='text/javascript' src='json.js'></script>
<script type='text/javascript'>
window.onload=function(){
$('helloBtn').onclick=function(){
var name=$('helloTxt').value;
new Ajax.Request(
"hello5a.jsp",
{
postBody:JSON.stringify({name:name}),
onComplete:function(xhr){
var responseObj=JSON.parse(xhr.responseText);
update(responseObj);
}
}
);
}
}
function update(obj){
$('helloTitle').innerHTML="<h1>Hello, <b><i>"+obj.name+"</i></b></h1>";
var likesHTML='<h5>'+obj.initial+' likes...</h5><hr/>';
for (var i=0;i<obj.likes.length;i++){
likesHTML+=obj.likes[i]+"<br/>";
}
$('likesList').innerHTML=likesHTML;
var recipeHTML='<h5>'+obj.initial+'\'s favourite recipe</h5>';
for (key in obj.ingredients){
recipeHTML+=key+" : "+obj.ingredients[key]+"<br/>";
}
$('ingrList').innerHTML=recipeHTML;
}
</script>
</head>
<body>
<div id='likesList' class='sidebar'>
<h5>Likes</h5><hr/>
</div>
<div id='ingrList' class='sidebar'>
<h5>Ingredients</h5><hr/>
</div>
<div>
<div id='helloTitle'>
<h1>Hello, stranger</h1>
</div>
<p>Please introduce yourself by entering your name in the box below</p>
<input type='text' size='24' id='helloTxt'></input> <button id='helloBtn'>Submit</button>
</div>
</body>
</html>
jsp代码:
<jsp:directive.page contentType="application/javascript" import="java.util.*,net.sf.json.*"/>
<%
//read the request body
String json=request.getReader().readLine(); //读取post请求主体
JSONObject jsonObj=new JSONObject(json);//解析json字符串
String name=(String)(jsonObj.get("name"));//读取解析后的对象
jsonObj.put("initial",name.substring(0,1).toUpperCase()); //添加新的值
String[] likes=new String[]{ "JavaScript", "Skiing", "Apple Pie" };
jsonObj.put("likes",likes);
Map ingredients=new HashMap();
ingredients.put("apples","3kg");
ingredients.put("sugar","1kg");
ingredients.put("pastry","2.4kg");
ingredients.put("bestEaten","outdoors");
jsonObj.put("ingredients",ingredients);
%><%=jsonObj%>
<!--以json的形式输出对象-->
另外我们还要用到包装集:
prototype.js
和json.js
效果如下:
来源:https://blog.csdn.net/xlgen157387/article/details/22956699
0
投稿
猜你喜欢
- 1.下载MySQL下载地址,选择要下载的版本,建议选择DMG安装包,用着比较方便。2.解压并安装DMG包中的mysql-5.6.12-osx
- element-ui form或table lable换行问题今天在写项目,突然遇到个需求,需要将form里面的lable换行,百度了下,发
- 这里简单介绍下两种安装docker-compose的方式,第一种方式相对简单,但是由于网络问题,常常安装不上,并且经常会断开,第二种方式略微
- 很久没写blog,太忙了。没什么时间写复杂的东西,重新把颜色渐变效果写一遍。关于颜色的效果一般就两个,颜色梯度变化和样式的颜色渐变,前者在i
- 希望在自己的机器模拟一下公司中微服务的构建,使用docker部署了mysql实例,使用spring boot进行了CRUD(增删改查)操作进
- 使用Python解析各种格式的数据都很方便,比如json、txt、xml、csv等。用于处理简单的数据完全足够用了,而且代码简单易懂。前段时
- Transact-SQL(又称T-SQL),是在Microsoft SQL Server和Sybase SQL
- 进行编程时,一般我们会给一个函数或者变量起一个名字,该名称是用于引用或寻址函数变量。但是有一个低调的函数,你不需要赋予它名字,因此该函数也叫
- 本文实例讲述了Python常见工厂函数用法。分享给大家供大家参考,具体如下:工厂函数:能够产生类实例的内建函数。 工厂函数是指这些
- 我就废话不多说了,大家还是看代码吧! import PyPDF2 import repdf_file = open('xxx.pdf
- 今天在安装SQL2005开发版时遇到了这样的一个问题:选择的功能中没有任何功能可以安装或升级,这是怎么回事呀?我已经选择了相应的组件,怎么还
- 数组都是从0开始。javascript是arrayname[i],而vbscript是arrayname(i) javascript的字符串
- collections是实现了特定目标的容器,以提供Python标准内建容器 dict , list , set , 和 tuple 的替代
- 当用人问你MySQL 查询条件中 in 会不会用到索引,你该怎么回答?答案:可能会用到索引 动手来测试下1.创建一张表,给字段port建立索
- 1. JWT 介绍jwt( JSON Web Tokens ),是一种开发的行业标准 RFC 7519 ,用于安全的表示双方之间的声明。目前
- 前言jieba 基于Python的中文分词工具,安装使用非常方便,直接pip即可,2/3都可以,功能强悍,十分推荐。中文分词(Chinese
- 题目描述目录hw1下的图像是一些胶片的照片,请将其进行度量矫正。推荐流程:采用Canny算子,检测边缘点;采用Hough直线检测,根据边缘点
- execute、executeUpdate、executeQuery三者的区别(及返回值)一、boolean execute(String
- 在讲解Configurable之前,我们首先来看一道面试题:a = 1;console.log( window.a ); // 1conso
- Matplotlib实现单画布绘制多个子图最近研究Python数据分析,需要利用Matplotlib绘制图表,并将多个图表绘制在一张图中,经