zoukankan      html  css  js  c++  java
  • 封装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

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

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





  • 相关阅读:
    svn安装教程
    六、数组类的创建
    五、顺序存储线性表分析
    四、StaticList 和 DynamicList
    三、顺序存储结构的抽象实现
    二、线性表的顺序存储结构
    一、线性表的本质和操作
    专题五:局部变量、全局变量global、导入模块变量
    专题四:文件基础知识、字符编码
    专题3-2:列表基础知识:二维list排序、获取下标和处理txt文本实例
  • 原文地址:https://www.cnblogs.com/wangting888/p/9701642.html
Copyright © 2011-2022 走看看