首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java後台輸出流前台接收方案:AJAX + JSON 標準化數據交互

     編輯:程式設計綜合問答

核心問題

Java後台通過輸出流直接輸出數據(非頁面跳轉),前台頁面如何接收並解析這些數據?

標準解決方案

後台實現(Servlet/Controller)

@ResponseBody
@RequestMapping("/api/data")
public void getData(HttpServletResponse response) throws IOException {
    // 設置響應類型為JSON
    response.setContentType("application/json;charset=UTF-8");
    
    // 構建數據對象
    Map<String, Object> result = new HashMap<>();
    result.put("status", "success");
    result.put("message", "操作成功");
    result.put("data", Arrays.asList("項目1", "項目2", "項目3"));
    
    // 序列化為JSON並寫入輸出流
    String json = new ObjectMapper().writeValueAsString(result);
    response.getWriter().write(json);
}

前台接收(AJAX + jQuery)

$.ajax({
    url: '/api/data',
    type: 'GET',
    dataType: 'json',
    success: function(response) {
        if (response.status === 'success') {
            console.log('接收到數據:', response.data);
            // 更新頁面UI
            renderData(response.data);
        }
    },
    error: function(xhr, status, error) {
        console.error('請求失敗:', error);
    }
});

關鍵技術點

環節關鍵點說明
後台輸出@ResponseBody / response.getWriter()直接輸出數據而非視圖解析
數據格式JSON (application/json)跨語言、易解析、標準化
編碼設置charset=UTF-8防止中文亂碼
前台解析dataType: 'json'jQuery自動反序列化為JS對象

替代方案對比

  • 原生XMLHttpRequest:無依賴,代碼冗長,需手動JSON.parse()
  • Fetch API:現代標準,Promise風格,需Polyfill兼容舊瀏覽器
  • WebSocket:雙向通信,適用於實時推送場景,而非單次請求響應

最佳實踐建議

  1. 統一響應格式:{code, message, data}
  2. 使用成熟JSON庫:Jackson / Gson / Fastjson
  3. 異常統一處理:全局異常處理器返回標準錯誤JSON
  4. 接口文檔化:Swagger/OpenAPI規範
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved