封裝springmvc處理ajax請求結果

weixin_30639719發表於2020-04-05

原文連結:http://blog.csdn.net/qq_37936542/article/details/79064818

需求描述:ajax向後臺發起請求,springmvc在處理完請求後返回的結果型別不能夠統一,int/String/Map/List等等,這裡我自定義一個類,封裝返回結果


一:封裝主類 AjaxResponse

  1. package com.debo.common;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. public class AjaxResponse {  
  7.   
  8.     private ReturnState returnState;  
  9.   
  10.     private String returnMsg;  
  11.   
  12.     private Map<String, Object> returnData = new HashMap<String, Object>();  
  13.   
  14.     public AjaxResponse() {  
  15.         this(ReturnState.OK, "");  
  16.     }  
  17.   
  18.     public AjaxResponse(String returnMsg) {  
  19.         this(ReturnState.OK, returnMsg);  
  20.     }  
  21.   
  22.     public AjaxResponse(ReturnState returnState, String returnMsg) {  
  23.         this.returnState = returnState;  
  24.         this.returnMsg = returnMsg;  
  25.     }  
  26.   
  27.     public AjaxResponse(String attributeName, Object attributeValue) {  
  28.         this();  
  29.         addAttribute(attributeName, attributeValue);  
  30.     }  
  31.   
  32.     public static AjaxResponse getInstanceByResult(boolean result) {  
  33.         if (result) {  
  34.             return new AjaxResponse(Constant.OPERATE_SUCCESS);  
  35.         } else {  
  36.             return new AjaxResponse(ReturnState.ERROR, Constant.OPERATE_ERROR);  
  37.         }  
  38.     }  
  39.   
  40.     public ReturnState getReturnState() {  
  41.         return returnState;  
  42.     }  
  43.   
  44.     public void setReturnState(ReturnState returnState) {  
  45.         this.returnState = returnState;  
  46.     }  
  47.   
  48.     public String getReturnMsg() {  
  49.         return returnMsg;  
  50.     }  
  51.   
  52.     public void setReturnMsg(String returnMsg) {  
  53.         this.returnMsg = returnMsg;  
  54.     }  
  55.   
  56.     public Map<String, Object> getReturnData() {  
  57.         if (returnData == null) {  
  58.             returnData = new HashMap<String, Object>();  
  59.         }  
  60.         return returnData;  
  61.     }  
  62.   
  63.     public void setReturnData(Map<String, Object> returnData) {  
  64.         this.returnData = returnData;  
  65.     }  
  66.   
  67.     public AjaxResponse addAttribute(String attributeName, Object attributeValue) {  
  68.         getReturnData().put(attributeName, attributeValue);  
  69.         return this;  
  70.     }  
  71. }  


二:返回狀態列舉 ReturnState

  1. package com.debo.common;  
  2.   
  3. /**  
  4.  * Ajax返回狀態  
  5.  *  
  6.  * @author lzg  
  7.  */  
  8. public enum ReturnState {  
  9.     OK,  
  10.     WARNING,  
  11.     ERROR  
  12. }  


三:系統常用常量 Constant

  1. package com.debo.common;  
  2.   
  3.   
  4. public class Constant {  
  5.     public static final int ZERO = 0;  
  6.     public static final String SUCCESS = "success";  
  7.     public static final String ERROR = "error";  
  8.     public static final String OPERATE_SUCCESS = "操作成功!";  
  9.     public static final String OPERATE_ERROR = "操作失敗!";  
  10.     public static final String NOT_PERMITTED = "許可權不足!";  
  11.     public static final String STATE1 = "1";  
  12.     public static final String STATE2 = "2";  
  13.     public static final int AFFECTED_LINE_0 = 0;  
  14.     public static final int AFFECTED_LINE_1 = 1;  
  15. }  


四:後臺測試程式碼

  1. package com.debo.common;  
  2.   
  3. import org.springframework.stereotype.Controller;  
  4. import org.springframework.web.bind.annotation.RequestMapping;  
  5. import org.springframework.web.bind.annotation.ResponseBody;  
  6.   
  7. @Controller  
  8. public class Test {  
  9.       
  10.     @RequestMapping("/test")  
  11.     @ResponseBody  
  12.     public AjaxResponse demo(){  
  13.           
  14.         //操作正確時,返回正確資訊  
  15.         //return new AjaxResponse(ReturnState.OK,"操作成功");  
  16.         //return new AjaxResponse("操作成功");  
  17.         //return AjaxResponse.getInstanceByResult(true);  
  18.           
  19.         //操作失敗,返回失敗資訊  
  20.         //return new AjaxResponse(ReturnState.ERROR,"登入名已存在");  
  21.         //return AjaxResponse.getInstanceByResult(false);  
  22.           
  23.         //返回一個物件、集合或map  
  24.         //return new AjaxResponse("returnDate", map/List/物件);  
  25.           
  26.         //返回多個物件、map、集合  
  27.         //AjaxResponse ajaxResponse = new AjaxResponse();  
  28.         //ajaxResponse.addAttribute("aaa", map);  
  29.         //ajaxResponse.addAttribute("bbb", list);  
  30.         //ajaxResponse.addAttribute("ccc", 物件);  
  31.           
  32.         //預設操作成功,無返回資訊  
  33.         return new AjaxResponse();  
  34.     }  
  35. }  



五:前端ajax程式碼
  1. $.ajax({  
  2.     url : "test",  
  3.     type : "get",  
  4.     dataType : "json",  
  5.     success : function(data) {  
  6.         //返回狀態  
  7.         //alert(data.returnState);  
  8.         //返回資訊  
  9.         //alert(data.returnMsg)  
  10.         //返回的物件/集合/map  
  11.         alert(data.returnData.aaa)  
  12.         }  
  13. });  

文末福利:

福利一:前端,Java,產品經理,微信小程式,Python等8G資源合集大放送:https://www.jianshu.com/p/e8197d4d9880

福利二:微信小程式入門與實戰全套詳細視訊教程

領取方式:
如果需要學習視訊,歡迎關注 【程式設計微刊】微信公眾號,回覆【領取資源】一鍵領取以下所有乾貨資源,獲取更多有用技術乾貨、文件資料。所有文件會持續更新,歡迎關注一起成長!





轉載於:https://www.cnblogs.com/ting6/p/9725646.html

相關文章