原文链接:http://blog.csdn.net/qq_37936542/article/details/79064818

需求描述:ajax向后台发起请求,springmvc在处理完请求后返回的结果类型不能够统一,int/String/Map/List等等,这里我自定义一个类,封装返回结果

一:封装主类 AjaxResponse

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

二:返回状态枚举 ReturnState

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

三:系统常用常量 Constant

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

四:后台测试代码

  1. package com.debo.common;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.ResponseBody;
  5. @Controller
  6. public class Test {
  7. @RequestMapping("/test")
  8. @ResponseBody
  9. public AjaxResponse demo(){
  10. //操作正确时,返回正确信息
  11. //return new AjaxResponse(ReturnState.OK,"操作成功");
  12. //return new AjaxResponse("操作成功");
  13. //return AjaxResponse.getInstanceByResult(true);
  14. //操作失败,返回失败信息
  15. //return new AjaxResponse(ReturnState.ERROR,"登录名已存在");
  16. //return AjaxResponse.getInstanceByResult(false);
  17. //返回一个对象、集合或map
  18. //return new AjaxResponse("returnDate", map/List/对象);
  19. //返回多个对象、map、集合
  20. //AjaxResponse ajaxResponse = new AjaxResponse();
  21. //ajaxResponse.addAttribute("aaa", map);
  22. //ajaxResponse.addAttribute("bbb", list);
  23. //ajaxResponse.addAttribute("ccc", 对象);
  24. //默认操作成功,无返回信息
  25. return new AjaxResponse();
  26. }
  27. }

五:前端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

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

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

封装springmvc处理ajax请求结果的更多相关文章

  1. SpringMVC的AJAX请求报406错误

    SpringMVC的AJAX请求报406错误原因有两种:1.jackson包没有引入 2.如果已经引入jackson包了还报406的错误,那么就有可能是请求的url路径是.html结尾,但是返回的数据 ...

  2. SpringMVC响应Ajax请求(@Responsebody注解返回页面)

    项目需求描述:page1中的ajax请求Controller,Controller负责将service返回的数据填充到page2中,并将page2整个页面返回到page1中ajax的回调函数. 一句话 ...

  3. SpringMVC下Ajax请求的方法,@Responsebody如果返回的是布尔值,ajax不会接到任何回传数据

    SpringMVC框架下,如果用ajax向后台请求得方法如果使用@Responsebody返回布尔值的话,ajax得不到任何的回传数据. 但是如果返回String类型,就是正常的. 测试了下代码写得没 ...

  4. SpringMVC进行Ajax请求页面显示乱码

    最近在项目的使用过程中发现在springmvc的项目中,使用返回页面的请求方式,数据都能正常显示,但是对于ajax的请求,始终显示乱码. 首先第一种是因为我们在web.xml中配置了spring的字符 ...

  5. SpringMVC 03: 请求和响应的乱码解决 + SpringMVC响应Ajax请求

    请求或响应的中文乱码问题 tomcat9解决了get请求和响应的中文乱码问题,但是没有解决post请求或响应的中文乱码问题 tomcat10解决了get和post请求以及响应的中文乱码问题 考虑到实际 ...

  6. SpringMVC经典系列-13使用SpringMVC处理Ajax请求---【LinusZhu】

    注意:此文章是个人原创,希望有转载须要的朋友们标明文章出处,假设各位朋友们认为写的还好,就给个赞哈,你的鼓舞是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linusz ...

  7. SpringMVC处理ajax请求的注意事项

    .首先要知道ajax请求的核心是JavaScrip对象和XmlHttpRequest,而浏览器请求的核心是浏览器 ajax请求 浏览器请求 场景一:使用ajax获取session中的user 从上图可 ...

  8. 使用es6的then()方法封装jquery的ajax请求

    使用场景: jsp页面中使用jquery的ajax请求比较频繁,以前vue框架的项目用过axios,所以就想着用then()封装一个公共请求的方法,这样每次请求就不用那么麻烦的写一大堆请求参数了. 示 ...

  9. SpringMVC处理ajax请求的跨域问题和注意事项

    .首先要知道ajax请求的核心是JavaScrip对象和XmlHttpRequest,而浏览器请求的核心是浏览器我的个人博客(基于SSM,Redis,Tomcat集群的后台架构) github:htt ...

随机推荐

  1. GeoServer 常见问题总结 (转)

    geoserver在部署发布服务时,经常会遇到如下问题,现总结如下: 1.忘记了GeoServer Web Admin Page的登陆用户名和密码怎么办?存储位置:C:\Program Files\G ...

  2. POJ——T2271 Guardian of Decency

    http://poj.org/problem?id=2771 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5932   A ...

  3. 如何让Apache不显示服务器信息

    如何让Apache不显示服务器信息 Apache的默认配置是会显示服务器信息的,比如访问一个服务器上不存在的页面,Apache会返回"Not Found"的错误,这个错误页面的最下 ...

  4. libcurl 通过http协议下载文件并显示下载进度

    vc6 测试工程下载地址:http://download.csdn.net/detail/mtour/8068053 代码如下: size_t my_write_func(void *ptr, siz ...

  5. 【Codeforces Round #432 (Div. 1) A】 Five Dimensional Points

    [链接]点击打开链接 [题意] 给你n个5维的点. 然后让你以其中的某一个点作为起点a. 另选两个点b,c. 组成向量a->b,a->c 如果所有的a->b和a->c的夹角都是 ...

  6. iOS开发RunLoop学习:一:RunLoop简单介绍

    一:RunLoop的简单介绍 #import "ViewController.h" @interface ViewController () @end @implementatio ...

  7. nyoj999 师傅又被妖怪抓走了 (预处理+bfs+状态压缩)

    题目999 题目信息 执行结果 本题排行 讨论区 师傅又被妖怪抓走了 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 话说唐僧复得了孙行者,师徒们一心同体,共诣西方.自宝 ...

  8. (转)DOS批处理的字符串功能

    批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集.批处理中可实现的字符串处理功能有:截取字符串内容.替换字符串特定字段.合并字符串.扩充字符串等功能.下面对这些功能一一进 ...

  9. 【AtCoder Beginner Contest 074 D】Restoring Road Network

    [链接]h在这里写链接 [题意] 给你任意两点之间的最短路. 让你求出原图. 或者输出原图不存在. 输出原图的边长总和的最小值. [题解] floyd算法. 先在原有的矩阵上. 做一遍floyd. 如 ...

  10. C++卷积神经网络实例:tiny_cnn代码具体解释(8)——partial_connected_layer层结构类分析(上)

    在之前的博文中我们已经将顶层的网络结构都介绍完毕,包括卷积层.下採样层.全连接层,在这篇博文中主要有两个任务.一是总体贯通一下卷积神经网络在对图像进行卷积处理的整个流程,二是继续我们的类分析.这次须要 ...