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

相關文章
相關標籤/搜索