前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Servlet处理JSON字符串传输问题

Servlet处理JSON字符串传输问题

作者头像
SuperHeroes
发布2019-03-12 14:50:05
1.5K0
发布2019-03-12 14:50:05
举报
文章被收录于专栏:云霄雨霁云霄雨霁

前些时候做学校的实践周项目,因为功能比较简单,没有采用框架直接用Servlet实现。过程中遇到了一些问题,其中就出现了Json字符串传输问题。

1、request.getParameter()方法问题

刚开始前端通过get请求传输数据,后端采用request.getParameter()方法接收数据。但后来有了局部刷新需求,前端改用Ajax发送json请求后,request.getParameter()接收不到数据。然后同学告诉我是因为json数据是通过request body(请求体)传送的,而request.getParameter()只能获取request head(请求头)中的数据,所以原来的方法无效。

2、Java解析json问题

2.1 实现方法

放弃request.getParameter()方法,采用流的方式读取request body中的json串。然后将json字符串转为JSONObject对象,最后将JSONPObject对象转为Java对象。

这里需要导入json支持包,一共有6个包,必不可少。

实现方法如下:

代码语言:javascript
复制
try {
    BufferedReader br = new BufferedReader(new InputStreamReader( 
                                 (ServletInputStream)request.getInputStream(), "utf-8"));  
    StringBuffer sb = new StringBuffer("");  
    String temp;  
    while ((temp = br.readLine()) != null) {  
        sb.append(temp);  
    }  
    br.close(); 
    //获取到的json字符串 
    String acceptjson = sb.toString();  
    //将json字符串转为jsonobject对象
	JSONObject json = JSONObject.fromObject(acceptjson);
    //将jsonobject对象转为java对象
    Client client = (Client)JSONObject.toBean(json,Client.class);
    System.out.println(client);
} catch (Exception e) {  
    e.printStackTrace();    
}

2.2 遇到的问题

导入包的版本不对。这是一个教导人使用Maven的很好的例子,如果使用Maven就不会有这些问题了。错误的包可能不含有相关方法,在程序运行的时候会报空错误。当时是换了好几个不同版本的包才把报错解决掉,所以最好还是使用Maven进行管理。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/07/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、request.getParameter()方法问题
  • 2、Java解析json问题
    • 2.1 实现方法
      • 2.2 遇到的问题
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档