封装springmvc处理ajax请求结果

原文链接: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

福利二:微信小程序入门与实战全套详细视频教程

领取方式:
如果需要学习视频,欢迎关注 【编程微刊】微信公众号,回复【领取资源】一键领取以下所有干货资源,获取更多有用技术干货、文档资料。所有文档会持续更新,欢迎关注一起成长!





posted @ 2018-03-21 13:59  前端视听  阅读(124)  评论(0编辑  收藏  举报