前些時候作學校的實踐周項目,由於功能比較簡單,沒有采用框架直接用Servlet實現。過程當中遇到了一些問題,其中就出現了Json字符串傳輸問題。前端
剛開始前端經過get請求傳輸數據,後端採用request.getParameter()方法接收數據。但後來有了局部刷新需求,前端改用Ajax發送json請求後,request.getParameter()接收不到數據。而後同窗告訴我是由於json數據是經過request body(請求體)傳送的,而request.getParameter()只能獲取request head(請求頭)中的數據,因此原來的方法無效。java
放棄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(); }
導入包的版本不對。這是一個教導人使用Maven的很好的例子,若是使用Maven就不會有這些問題了。錯誤的包可能不含有相關方法,在程序運行的時候會報空錯誤。當時是換了好幾個不一樣版本的包才把報錯解決掉,因此最好仍是使用Maven進行管理。框架