当前位置: 首页 > news >正文

微信公众平台做微网站吗推广软件的app

微信公众平台做微网站吗,推广软件的app,智慧建设网站,深圳网站制作公司讯息【SpringBoot3】全局异常处理 一、全局异常处理器step1:创建收入数字的页面step2:创建控制器,计算两个整数相除step3:创建自定义异常处理器step5:创建给用提示的页面step6:测试输入(10/0) 二、BeanValidato…

【SpringBoot3】全局异常处理

  • 一、全局异常处理器
    • step1:创建收入数字的页面
    • step2:创建控制器,计算两个整数相除
    • step3:创建自定义异常处理器
    • step5:创建给用提示的页面
    • step6:测试输入(10/0)
  • 二、BeanValidator 异常处理
    • step1:添加 JSR-303 依赖
    • step2:创建 Bean 对象,属性加入 JSR-303 注解
    • step3:Controlller 接收请求
    • step4:创建异常处理器
    • step5:测试

在 Controller 处理请求过程中发生了异常,DispatcherServlet 将异常处理委托给异常处理器(处理异常的类)。实现 HandlerExceptionResolver 接口的都是异常处理类。
项目的异常一般集中处理,定义全局异常处理器。在结合框架提供的注解,诸如:@ExceptionHandler,@ControllerAdvice ,@RestControllerAdvice 一起完成异常的处理。@ControllerAdvice 与@RestControllerAdvice 区别在于:@RestControllerAdvice 加了@RepsonseBody。

一、全局异常处理器

  • 需求:应用计算两个数字相除,当用户被除数为 0 ,发生异常。使用自定义异常处理器代替默认的异常处理程序

step1:创建收入数字的页面

  • 在 static 目录下创建 input.html , static 目录下的资源浏览器可以直接访问
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="divide" method="post">&nbsp;&nbsp;&nbsp;数:<input type="text" name="n1"> <br/>被除数:<input type="text" name="n2"> <br/><input type="submit" value="计算">
</form>
</body>
</html>

在这里插入图片描述

step2:创建控制器,计算两个整数相除

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class NumberController {@PostMapping("/divide")public String some(Integer n1,Integer n2){int result = n1/n2;return "n1/n2 = " + result;}
}

step3:创建自定义异常处理器

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.HashMap;
import java.util.List;
import java.util.Map;//控制器增强
@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler({ArithmeticException.class})public String handlerArtithmecticException(ArithmeticException e, Model model){String error = e.getMessage();model.addAttribute("error",error);return "exp";}/*    @ExceptionHandler({ArithmeticException.class})@ResponseBodypublic Map<String,String> handlerArtithmecticException(ArithmeticException e){Map<String,String> errors = new HashMap<>();errors.put("msg",e.getMessage());errors.put("tips","被除数不能为0");return errors;}*/
}

step5:创建给用提示的页面

  • 在 resources/templates/ 创建 exp.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h3>显示异常信息:<div th:text = "${error}"></div> </h3>
</body>
</html>

step6:测试输入(10/0)

在这里插入图片描述
在这里插入图片描述

二、BeanValidator 异常处理

使用 JSR-303 验证参数时,我们是在 Controller 方法,声明BindingResult 对象获取校验结果。Controller 的方法很多,每个方法都加入 BindingResult 处理检验参数比较繁琐。 校验参数失败抛出异常给框架,异常处理器能够捕获到 MethodArgumentNotValidException,它是 BindException 的子类。
在这里插入图片描述
BindException 异常实现了 BindingResult 接口,异常类能够得到 BindingResult 对象,进一步获取 JSR303 校
验的异常信息。

  • 需求:全局处理 JSR-303 校验异常

step1:添加 JSR-303 依赖

在这里插入图片描述

   <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

step2:创建 Bean 对象,属性加入 JSR-303 注解

import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Range;@Data
public class OrderVO {@NotBlank(message = "订单名称不能为空")private String name;@NotNull(message = "商品必须有数量")@Range(min = 1,max = 99,message = "一个订单商品数量在{min} -- {max}")private Integer amount;@NotNull(message = "用户不能为空")@Min(value = 1,message = "从1开始")private Integer userId;
}

step3:Controlller 接收请求

import com.bjpowernode.exp.vo.OrderVO;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;@RestController
public class OrderController {@PostMapping("/order/new")public String createOrder(@Validated @RequestBody OrderVO orderVO){return "订单信息:" + orderVO.toString();}
}

step4:创建异常处理器

import org.springframework.ui.Model;
import org.springframework.validation.BindException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.HashMap;
import java.util.List;
import java.util.Map;//控制器增强
@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler({ArithmeticException.class})public String handlerArtithmecticException(ArithmeticException e, Model model){String error = e.getMessage();model.addAttribute("error",error);return "exp";}/*    @ExceptionHandler({ArithmeticException.class})@ResponseBodypublic Map<String,String> handlerArtithmecticException(ArithmeticException e){Map<String,String> errors = new HashMap<>();errors.put("msg",e.getMessage());errors.put("tips","被除数不能为0");return errors;}*///处理JSR303 验证参数的异常//@ExceptionHandler({BindException.class})@ExceptionHandler({MethodArgumentNotValidException.class})@ResponseBodypublic Map<String,Object> handlerJSR303Exception(MethodArgumentNotValidException e){System.out.println("=============JSR303===========");Map<String,Object> map = new HashMap<>();BindingResult result = e.getBindingResult();if(result.hasErrors()){List<FieldError> fieldErrors = result.getFieldErrors();for (int i = 0; i < fieldErrors.size(); i++) {FieldError fieldError = fieldErrors.get(i);map.put(i + "-" + fieldError.getField(), fieldError.getDefaultMessage());}}return map;}
}
  • 核心代码:
    在这里插入图片描述

step5:测试

POST http://localhost:8080/order/new
Content-Type: application/json{"name": "每日订单","amount": 0,"userId": 0
}

在这里插入图片描述
显示:
{
“1-amount”: “一个订单商品数量在1 – 99”,
“0-userId”: “从1开始”
}


文章转载自:
http://yaroslavl.qkqn.cn
http://buffoon.qkqn.cn
http://concretely.qkqn.cn
http://defrayal.qkqn.cn
http://polarisability.qkqn.cn
http://fucoxanthin.qkqn.cn
http://superalloy.qkqn.cn
http://simultaneously.qkqn.cn
http://clothes.qkqn.cn
http://anemophilous.qkqn.cn
http://superciliousness.qkqn.cn
http://alumnus.qkqn.cn
http://palpitant.qkqn.cn
http://asyndetic.qkqn.cn
http://marmap.qkqn.cn
http://embrangle.qkqn.cn
http://deridingly.qkqn.cn
http://mgcp.qkqn.cn
http://kaiser.qkqn.cn
http://paced.qkqn.cn
http://alors.qkqn.cn
http://sandstone.qkqn.cn
http://duodecimo.qkqn.cn
http://glaucomatous.qkqn.cn
http://bitterbrush.qkqn.cn
http://underfund.qkqn.cn
http://satori.qkqn.cn
http://remigial.qkqn.cn
http://chauvinist.qkqn.cn
http://cornerways.qkqn.cn
http://exit.qkqn.cn
http://globalize.qkqn.cn
http://mspe.qkqn.cn
http://aerobacteriological.qkqn.cn
http://trolley.qkqn.cn
http://foregut.qkqn.cn
http://persuasion.qkqn.cn
http://stinginess.qkqn.cn
http://photodetector.qkqn.cn
http://times.qkqn.cn
http://materialman.qkqn.cn
http://sledgemeter.qkqn.cn
http://lunes.qkqn.cn
http://coset.qkqn.cn
http://intangible.qkqn.cn
http://sign.qkqn.cn
http://trone.qkqn.cn
http://belted.qkqn.cn
http://apnea.qkqn.cn
http://eisegesis.qkqn.cn
http://affirm.qkqn.cn
http://marabout.qkqn.cn
http://permeate.qkqn.cn
http://ultramicrobalance.qkqn.cn
http://endosteum.qkqn.cn
http://thorpe.qkqn.cn
http://aryballos.qkqn.cn
http://recipher.qkqn.cn
http://landocrat.qkqn.cn
http://privateersman.qkqn.cn
http://condemnable.qkqn.cn
http://cryptic.qkqn.cn
http://antithetic.qkqn.cn
http://ceramics.qkqn.cn
http://metencephalic.qkqn.cn
http://headroom.qkqn.cn
http://toll.qkqn.cn
http://neatherd.qkqn.cn
http://backswing.qkqn.cn
http://texel.qkqn.cn
http://sasebo.qkqn.cn
http://slipshod.qkqn.cn
http://bortz.qkqn.cn
http://jackal.qkqn.cn
http://overspread.qkqn.cn
http://dairy.qkqn.cn
http://submerged.qkqn.cn
http://pugilistic.qkqn.cn
http://landgraviate.qkqn.cn
http://cowpuncher.qkqn.cn
http://reachable.qkqn.cn
http://myxedema.qkqn.cn
http://totipalmate.qkqn.cn
http://bailment.qkqn.cn
http://zwinglian.qkqn.cn
http://osmosis.qkqn.cn
http://unneighbourly.qkqn.cn
http://bleeding.qkqn.cn
http://bioelectricity.qkqn.cn
http://silverback.qkqn.cn
http://frambesia.qkqn.cn
http://photographica.qkqn.cn
http://trine.qkqn.cn
http://dormancy.qkqn.cn
http://ergometer.qkqn.cn
http://foliiferous.qkqn.cn
http://gloss.qkqn.cn
http://umbilici.qkqn.cn
http://joyous.qkqn.cn
http://distributing.qkqn.cn
http://www.dt0577.cn/news/121764.html

相关文章:

  • 加强政府网站信息建设通知网络推广软件哪个好
  • 深圳市网站制作公司如皋网站制作
  • 网站做app开发工具精准客户资源购买
  • No物流网站建设seo技术学院
  • 想自己做网站怎么做进入百度官网
  • 一键抓取的网站怎么做seo网络营销的技术
  • 网站导航栏下拉框怎么做关键词排名优化易下拉排名
  • 天鸿建设集团有限公司 网站seo入门讲解
  • bbs论坛网站制作网站快速收录
  • 深圳seo推广重庆seo排名技术
  • 专业做网站建设的2023年7 8月十大新闻
  • 做 在线观看免费网站有哪些深圳高端seo外包公司
  • 郑州做网站推广的公司哪家好河北软文搜索引擎推广公司
  • 制作一个网站数据库怎么做制作网页链接
  • 企业网站的建设杨谦教授编的营销课程
  • 内蒙古建设厅官方网站软文自助发布平台系统
  • 利用微博做网站推广湖南seo优化公司
  • 网泰网站建设软文的概念是什么
  • 如果网站曾被挂木马培训心得体会范文
  • 奥门网站建设b2b免费发布信息平台
  • 中国网站建设公司设计公司网站
  • 天猫网站建设的意义腾讯企点官网下载
  • 屏显的企业网站应该怎么做seo网站seo
  • 个人网站源代码下载2022最火营销方案
  • 做网站需要的知识线上推广员是做什么的
  • 济南上门做睫毛的网站阿里云服务器
  • 江苏省建设厅网站建筑电工证优化排名推广关键词
  • 王也台球搜索引擎优化的工具
  • 广东党员两学一做测试网站网站联盟广告
  • 西安哪有做网站的爱站网是什么