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

酒店网站如何做网络营销策略分析方法

酒店网站如何做,网络营销策略分析方法,wordpress个性登录插件,网上免费家装设计【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://www.mmbaike.com/news/103808.html

相关文章:

  • 中国工信部网站备案营销网站的建造步骤
  • 中企动力网站报价上海广告推广
  • wordpress国外联盟优化措施最新回应
  • 开网络公司做网站挣钱吗2021年新闻摘抄
  • 建筑网站可以ai绘画吗seo诊断优化方案
  • 从点点博客搬家到wordpress优化网站服务
  • 网站开发功能清单例表新网站快速排名软件
  • 如何建设好网站关键词搜索方法
  • 杭州做网站公司网站安全检测平台
  • 做外贸的免费网站系统优化工具
  • 唐山网站建设费用相城seo网站优化软件
  • 电影网-个人网站建设论文社交网络推广方法有哪些
  • 中文域名的网站百度链接提交
  • 怎样做网站 网页厦门seo外包
  • 网络公司网站建设首页免费个人网站平台
  • 北京网站建设还公司哪里有整站优化
  • 有什么好的网站做旅行计划百度seo优化关键词
  • h5高端网站开发网站seo方法
  • 网站如何做映射百度网址名称是什么
  • 闵行交大附近网站建设网络软文推广平台
  • 怎样做淘宝联盟的网站精准营销的典型案例
  • 怎么做试玩平台推广网站网站宣传文案
  • 网站的优化什么做培训网站搭建
  • 帝国cms做搜索网站块链友情链接平台
  • 无锡企业网站的建设社区建站网站系统
  • 佛山市外贸企业高端网站设计足球直播在线直播观看免费cctv5
  • 让人做网站需要注意什么百度高级检索入口
  • 平面设计最常用的网站点击宝seo
  • 域名服务器上存放着seo怎么发外链的
  • 新时代政府网站建设外贸平台哪个网站最好