⭕MappingJackson2JsonView作用

原本ModelAndView会返回视图,并且可以携带数据展示到视图中
MappingJackson2JsonView可以让ModelAndView不返回视图,仅仅返回JSON数据,


目录

  • ⏹一. 前台
  • ⏹二. 后台业务层
  • ⏹三. 后台自定义校验异常
  • ⏹四. 后台全局异常捕获
  • ⚡五. 效果

⏹一. 前台

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>MappingJackson2JsonView的使用</title>
</head>
<body><button id="btn">点击发送请求</button>
</body>
<script src="/js/public/jquery-3.6.0.min.js"></script>
<script th:inline="javascript">function doAjax(url, data, callback) {$.ajax({url: url,type: 'POST',data: JSON.stringify(data),contentType : 'application/json;charset=utf-8',dataType: 'json',success: function (data, status, xhr) {if (!!callback) {callback(data);}},error: function (xhr, textStatus, errorMessage) {if (xhr.status !== 400) {location.href = "系统错误页面URL";}// 获取错误信息,根据错误ID将画面上的错误信息标记红色const data = xhr.responseJSON;console.log(data.errors);}});}$("#btn").click(() => {const url = "http://localhost:8080/test3/check";// 错误的数据,from的值不应该比to还要大const info = {from: 100,to: 10};doAjax(url, info, function (data) {if (!data.result) {return;}console.log(data);});});
</script>
</html>

⏹二. 后台业务层

@Controller
@RequestMapping("/test3")
public class Test3Controller {@Autowiredprivate Test3Service service;@PostMapping("/check")public void check(@RequestBody Test3Form form) {service.check(form);}
}
// ------------------------------------------------------@Service
public class Test3Service {public void check(Test3Form form) {// 如果from的值比to还要大的话,就抛出自定义异常if (form.getFrom() > form.getTo()) {List<ErrorItemEntity> errors = Collections.singletonList(ErrorItemEntity.of("大小不对", "id名称"));throw new ValidationException(errors);}}
}

⏹三. 后台自定义校验异常

import lombok.Data;
import lombok.EqualsAndHashCode;import java.util.ArrayList;
import java.util.List;@Data
@EqualsAndHashCode(callSuper = true)
public class ValidationException extends RuntimeException {// 错误信息private List<ErrorItemEntity> errors;/*** 生成ValidationException异常对象** @param errors 业务异常信息*/public ValidationException(List<ErrorItemEntity> errors) {super();this.errors = errors;}
}

⏹四. 后台全局异常捕获

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@ControllerAdvice
public class GlobalExceptionHandler {// 捕获我们自定义的校验异常@ExceptionHandler(ValidationException.class)public ModelAndView handleException(ValidationException ex, HttpServletRequest request, HttpServletResponse response) {// 自定义结果封装类ResultEntity resultEntity = ResultEntity.ng();// 校验失败,返回400的状态码response.setStatus(HttpServletResponse.SC_BAD_REQUEST);if (ex.getErrors() != null) {resultEntity.setErrors(ex.getErrors());}// 如果是Ajax请求的话if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {// 												

Spring MappingJackson2JsonView的使用相关推荐

  1. 转 spring配置文件

    spring配置文件 pom文件: <properties><commons-lang.version>2.6</commons-lang.version>< ...

  2. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

  3. [Spring MVC起步]我的第一个MVC

    2019独角兽企业重金招聘Python工程师标准>>> pom.xml,代码,一些是多余的 Spring-framework-bom解决spring的不同模块依赖版本不同问题 < ...

  4. 27道高频Spring面试题,你能答对几个?

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 坚持看完,文末福利等你 本文节选自 <Spring 5核心原理与30个类手写实战> ...

  5. Spring 4 官方文档学习(十一)Web MVC 框架之异常处理

    1.HandlerExceptionResolver Spring HandlerExceptionResolver的实现们会处理controller执行过程中发送的unexpected except ...

  6. Spring 梳理 - ContentNegotiatingViewResolver

    ContentNegotiatingViewResolver,这个视图解析器允许你用同样的内容数据来呈现不同的view.它支持如下面描述的三种方式: 1)使用扩展名 http://localhost: ...

  7. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)...

    Spring MVC 学习总结(九)--Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务) 目录 一.JSON 1.1.概要 1.2.使用ModelAndView ...

  8. 25个经典的Spring面试问答

    为什么80%的码农都做不了架构师?>>>    本人收集了一些在大家在面试时被经常问及的关于Spring的主要问题,这些问题有可能在你下次面试时就会被问到.对于本文中未提及的Spri ...

  9. Spring4.1新特性——Spring MVC增强

    2019独角兽企业重金招聘Python工程师标准>>> 1.GroovyWebApplicationContext  在Spring 4.1之前没有提供Web集成的Applicati ...

最新文章

  1. 单链表-在带头结点的单链表L中删除一个最小值结点(四指针)
  2. 海蜘蛛如何手工升级到最新版
  3. python中set函数是什么数据类型_阿博Python之路-详解Set数据类型
  4. 中国移动基于ARM/x86服务器的Ceph性能对比
  5. Leetcode题库 136.只出现一次的数字(异或 C实现)
  6. 使用itextpdf操作pdf
  7. app inventor离线版_小鸡漫画app手机版下载_小鸡漫画好看的漫画手机版下载
  8. MyBatis学习总结(21)——自定义MyBatis Generator插件
  9. Sun公司开源游戏服务器Project Darkstar Server——(Sun game server , 简称 sgs)学习笔记(二):多人游戏...
  10. 【汇编语言】【ARM扩展资料】汇编语言开发
  11. apache服务通常启动,但打不开网页,提示Try using the Win32DisableAcceptEx directive (转)...
  12. css基础--滤镜特效
  13. 反馈抑制器使用场景与市场
  14. php php拼接字符串函数_PHP_PHP开发中常用的字符串操作函数,1,拼接字符串 拼接字符串是最 - phpStudy...
  15. java 200以内的素数_Java——200以内的质数
  16. 北京市朝阳区 办理 驾驶证期满换证 自助体检 的流程
  17. CSS3中设置元素转换中心点
  18. Java环境配置 win10教程
  19. 关于聪明与努力的文章.
  20. R: 每年发表基因简单分析

热门文章

  1. 正则表达式验证可发短信的号码,如手机号和小灵通号码(106+区号+号码)
  2. 用java实现三层BP神经网络算法
  3. 你可以不懂财务,但要知道怎样做财务预算
  4. 从分布式应用架构看 SOA、微服务和云原生
  5. .DS_store 文件冲突
  6. Nature子刊:支持人类情景记忆编码的振荡信号与基因表达的相关性
  7. 论文相关知识:集合论中关于偏序关系、偏序集、覆盖等关系
  8. ODI Studio(问题2)
  9. jupyter notebook安装后不能运行问题
  10. 开源项目推荐:3D点云处理开源库PCL/Cilantro/Open3d/Easy3D/PDAL/LAStools