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

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

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





  • 相关阅读:
    hdu 5007 水题 (2014西安网赛A题)
    hdu 1698 线段树(成段替换 区间求和)
    poj 3468 线段树 成段增减 区间求和
    hdu 2795 公告板 (单点最值)
    UVaLive 6833 Miscalculation (表达式计算)
    UVaLive 6832 Bit String Reordering (模拟)
    CodeForces 124C Prime Permutation (数论+贪心)
    SPOJ BALNUM (数位DP)
    CodeForces 628D Magic Numbers (数位DP)
    POJ 3252 Round Numbers (数位DP)
  • 原文地址:https://www.cnblogs.com/wangting888/p/9701642.html
Copyright © 2011-2022 走看看