Java後臺返回複雜資料、大資料給前端解決辦法(返回json資料分類簡化前段操作)
阿新 • • 發佈:2018-11-09
背景分析:
面對當前多種的業務需求和雜亂無章的資料堆放,Java後臺處理變得尤為重要。對於資訊系統開發而言,歸根到底是對資料的分類與處理。通過從伺服器獲取資料,客戶給出需求,形成怎樣的表格,多樣化的靜態圖和動態圖,各種各樣資原始檔,這些需求都不是簡單的從資料庫中取出來就可以直接使用的,往往需要進行對應的演算法歸類,類別劃分等。對於複雜的圖示,藉助開源的前段框架或者相應的畫圖外掛即可完成,只需要直接呼叫即可。
**問題匯入:**藉助CSDN為例子進行知識探討,僅進行學習與技術探討,如有侵權,請及時聯絡 QQ郵箱:[email protected]。
通過簡單的分析,上述網頁的1,2,3這三個部分肯定不是來源於一個數據庫,他們的格式,資料長短也大相徑庭。但是它們有一個相同點,需要同時獲取資料到本頁面
後臺具體思路:
1.依據需求和介面文件,從資料庫獲取原資料在後臺儲存起來。其中需要用到
①從伺服器獲取json資料
②json資料與String,ArrayList等資料格式之間的轉換
2.分析需求,將資料轉存為hashmap或者arraylist方便一起傳輸。其中注意需要進行演算法處理時,對下標,對應名稱要仔細檢查。
3.組合為一個字串或者其它格式傳遞給前端。(每一個模組應有對應的名稱,前端好直接獲取處理)
程式碼例項:
1.從資料庫連線路徑獲取資料(實測有用乾貨)
/** * json資料轉為字串 * @param url1 獲取json資料的URL地址 * @return messageString String型別的json字串 */ public String getHttpResult(String url1) { String messageString = null; try { URL url = new URL(url1); // 開啟連線 HttpURLConnection urlConnection = (HttpURLConnection) url .openConnection(); System.out.println(urlConnection); urlConnection.setConnectTimeout(8000);//連線超時 urlConnection.setReadTimeout(8000);//讀操作超時 if (200 == urlConnection.getResponseCode()) { // 得到輸入流 InputStream is = urlConnection.getInputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while (-1 != (len = is.read(buffer))) { baos.write(buffer, 0, len); baos.flush(); } // baos.toString("utf-8"); //System.out.println("獲取資料" + baos.toString("utf-8")); messageString = baos.toString("utf-8"); baos.close(); } } catch (IOException e) { e.printStackTrace(); } return messageString; }
2.傳遞引數儲存框架搭建
分析:對於要傳遞四個模組的資料使用map儲存方式用K,V將每一個內容和模組對應。
//總倉庫
static HashMap<String, Map<Integer,Map<String, String>>>result = new HashMap<String, Map<Integer,Map<String, String>>>();
//分倉庫
Map<Integer,Map<String, String>> TMmap = new LinkedHashMap<Integer,Map<String, String>>();
//倉庫子內容
Map<String, String> TMmap1 = new LinkedHashMap<String, String>();
3.對封裝好的資料進行型別轉換進行傳輸(靈活使用gson)
//其中BaseResponse類需要自己建立,依據需求設定類屬性
BaseResponse<HashMap<String, Map<Integer,Map<String, String>>>> mes = new BaseResponse<HashMap<String,Map<Integer,Map<String, String>>>>();
mes.setCode(1);
mes.setData(result);
mes.setMsg("ok");
Gson gson = new Gson();
String json = gson.toJson(mes);
return json;
4.介面測試,資料如果有差異,進行適當修改即可。