Servlet处理JSON字符串传输问题

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

一、request.getParameter()方法问题

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

二、Java解析json问题

2.1 实现方法

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

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

实现方法以下:app

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进行管理。框架

相关文章
相关标签/搜索