当前位置: 首页 > news >正文

使用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.οnlοad=function(){
  $('helloBtn').οnclick=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


效果如下:


相关文章:

  • ubuntu下没有中文输入法的解决办法!
  • 【jQuery 遍历】 - map() 方法
  • HTML中的Meta http-equiv属性详解(转)
  • 【jQuery 】参考手册 - 遍历
  • 在构造方法中存在异常的惯用处理法
  • 在Ajax中使用XML通信
  • 平衡二叉树旋转
  • 用XPath和XSLT来更好的处理XML
  • sublime text3主题透明
  • JAR文件包及jar命令详解
  • String和Integer的特例
  • 卸载 Microsoft SQL Server 2008(亲身实践过的,完全可以卸载干净!)
  • Java项目打包工具安装失败解决方法
  • phpstorm+Xdebug断点调试PHP
  • java项目使用exe4j打包成exe文件
  • angular学习第一篇-----环境搭建
  • eclipse(luna)创建web工程
  • git 常用命令
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • linux学习笔记
  • Terraform入门 - 1. 安装Terraform
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 测试如何在敏捷团队中工作?
  • 代理模式
  • 解析 Webpack中import、require、按需加载的执行过程
  • 爬虫模拟登陆 SegmentFault
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 深入 Nginx 之配置篇
  • 数据可视化之 Sankey 桑基图的实现
  • 怎样选择前端框架
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #数学建模# 线性规划问题的Matlab求解
  • (C语言)字符分类函数
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)c52学习之旅-简单了解单片机
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (汇总)os模块以及shutil模块对文件的操作
  • (理论篇)httpmoudle和httphandler一览
  • (十一)手动添加用户和文件的特殊权限
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (未解决)macOS matplotlib 中文是方框
  • (转)Mysql的优化设置
  • (转)shell调试方法
  • (转)创业家杂志:UCWEB天使第一步
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .htaccess配置重写url引擎
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET Framework杂记
  • .NET MVC第三章、三种传值方式
  • .net web项目 调用webService
  • @ModelAttribute 注解
  • [20171113]修改表结构删除列相关问题4.txt
  • [BZOJ2208][Jsoi2010]连通数