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

网站织梦做网站四百全包

网站织梦,做网站四百全包,这几年做哪些网站能致富,高端网站定制站🛠️ 一、JSR 303是什么? JSR 303(Java Specification Requests 303)是Java EE 6的子规范,全称​​Bean Validation​​。它通过注解方式对JavaBean的属性值进行标准化校验,例如检查非空、长度、格式等规则…

🛠️ 一、JSR 303是什么?

JSR 303(Java Specification Requests 303)是Java EE 6的子规范,全称​​Bean Validation​​。它通过注解方式对JavaBean的属性值进行标准化校验,例如检查非空、长度、格式等规则。其参考实现是​​Hibernate Validator​​(与Hibernate ORM无关)

​核心价值​​:
✅ 将校验逻辑从业务代码剥离,提升代码可维护性
✅ 统一校验规则,避免重复编码
✅ 支持编译时和运行时校验,增强数据安全性(防止恶意绕过前端校验)


⚙️ 二、快速入门:基础使用

1️⃣ 环境搭建
  • ​Spring Boot项目​​:添加依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</dependency>
  • ​非Spring项目​​:需手动引入validation-apihibernate-validator
2️⃣ 常用内置注解
注解适用类型说明示例
@NotNull任意值不能为null@NotNull(message="ID不能为空")
@NotBlankString非null且去除空格后长度>0@NotBlank(message="用户名必填")
@Size集合/String长度在指定范围内@Size(min=6, max=20, message="密码需6-20位")
@EmailString邮箱格式校验@Email(message="邮箱格式无效")
@PatternString正则表达式匹配@Pattern(regexp="^1[3-9]\\d{9}$", message="手机号格式错误")
@Min/@Max数字类型数值范围限制@Min(value=18, message="年龄需≥18")
3️⃣ 在Controller中使用

通过@Valid@Validated触发校验:

@PostMapping("/user")
public ResponseEntity<String> createUser(@Valid @RequestBody UserDTO user) {// 校验通过才执行业务逻辑return ResponseEntity.ok("创建成功");
}
  • 校验失败会抛出MethodArgumentNotValidException,需全局异常处理

⚡ 三、进阶技巧

1️⃣ 分组校验

解决同一字段在不同场景(如新增/修改)下的差异化校验需求:

// 定义分组接口
public interface AddGroup {}
public interface UpdateGroup {}// 实体类中使用
public class User {@Null(groups = AddGroup.class, message = "新增时ID必须为空")@NotNull(groups = UpdateGroup.class, message = "修改时ID不能为空")private Long id;
}// Controller指定分组
@PostMapping("/update")
public R update(@Validated(UpdateGroup.class) @RequestBody User user) {// ...
}

注:未分组的注解在分组校验中不生效

2️⃣ 自定义校验

​步骤​​:

  1. ​定义注解​​:
    @Target({ElementType.FIELD})
    @Retention(RetentionPolicy.RUNTIME)
    @Constraint(validatedBy = ListValueConstraintValidator.class)
    public @interface ListValue {String message() default "值不在可选范围内";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};int[] vals() default {};  // 允许的值列表,如[0,1]
    }

  2. ​实现校验器​​:
    public class ListValueConstraintValidator implements ConstraintValidator<ListValue, Integer> {private Set<Integer> set = new HashSet<>();@Overridepublic void initialize(ListValue constraintAnnotation) {for (int val : constraintAnnotation.vals()) {set.add(val);}}@Overridepublic boolean isValid(Integer value, ConstraintValidatorContext context) {return set.contains(value);}
    }

  3. ​使用自定义注解​​:
    @ListValue(vals = {0, 1}, message = "状态只能是0或1")
    private Integer status;


💎 四、常见问题

  • ​Q:@Valid vs @Validated?​

    • @Valid(JSR标准):不支持分组,可嵌套校验字段。
    • @Validated(Spring扩展):支持分组,不可用于字段
  • ​Q:校验失败如何获取具体错误?​
    在Controller参数中添加BindingResult result,通过result.getFieldErrors()遍历错误详情

  • ​Q:为什么int类型推荐用Integer?​
    @Min等注解在基本类型(如int)上无法处理空值,而Integer可兼容null校验


📚 总结

JSR 303通过​​声明式注解​​简化数据校验。初学者可逐步掌握:
1️⃣ 基础注解 → 2️⃣ Controller集成 → 3️⃣ 分组/自定义校验 → 4️⃣ 全局异常处理
结合Spring生态(如Spring MVC)能极大提升开发效率和系统健壮性

更多实践参考:Hibernate Validator文档或Spring官方教程。


文章转载自:

http://tdt4NC6b.xczyj.cn
http://pTkSutXt.xczyj.cn
http://xmf8owWG.xczyj.cn
http://i0Ybj3uU.xczyj.cn
http://7Cf2RIBq.xczyj.cn
http://ugU6ynsD.xczyj.cn
http://kEMNz9I9.xczyj.cn
http://N5fe5K6N.xczyj.cn
http://u994dnD2.xczyj.cn
http://ft9bfUPq.xczyj.cn
http://sdpWE282.xczyj.cn
http://76xQa5ZQ.xczyj.cn
http://5qgPQPpL.xczyj.cn
http://Tp8ZWt0r.xczyj.cn
http://J4Z3SkGg.xczyj.cn
http://7vCgfS4s.xczyj.cn
http://FkOhbNtR.xczyj.cn
http://NHaeZc2Y.xczyj.cn
http://3JYsZu4V.xczyj.cn
http://1b3fDgkt.xczyj.cn
http://MlaXDiJo.xczyj.cn
http://uOqoRbc2.xczyj.cn
http://2m7cKi0v.xczyj.cn
http://DzjksRsG.xczyj.cn
http://o55hZDnh.xczyj.cn
http://DQgN03GA.xczyj.cn
http://xYSqqCry.xczyj.cn
http://fEvLIZfM.xczyj.cn
http://x8xLtA8A.xczyj.cn
http://ENBdHcwX.xczyj.cn
http://www.dtcms.com/wzjs/660174.html

相关文章:

  • 姑苏区住房和建设局网站西部域名网
  • 广州seo网站企业展厅设计公司大型
  • 网站建设公司主要维护网站多少钱
  • 网站后台安装做基因结构可以用哪个网站
  • 网站建设一般要多大空间专业网络推广外包
  • 低价网站建设哪个好网站建设项目中标通知
  • 用vs做网站教程如何建立公司的微信公众号
  • php 公司网站源码南京网站设计网站
  • 甘肃建设银行网站软件商店正版下载
  • 做网站域名费向哪里交唐山路北网站建设
  • 适合新手做的网站项目网站建设技术网站建
  • 深圳市网站建设单位十佳网线制作评分标准
  • 南安市住房和城乡建设部网站推广公司怎么找
  • 沈阳免费网站建站模板互联网推广是什么工作内容
  • 招聘网站有哪些平台京东企业的电子网站建设
  • 北京哪家网站建设公司好跨境电商平台建设方案
  • 网站建设与网页设计的区别wordpress分类使用不同模板
  • 有经验的常州手机网站怎么建免费论坛网站
  • 平台网站建设方案标书iis 创建网站
  • 宁波网站建设设计服务公司如何做wordpress文章页
  • 建筑网站ad网站建设管理成本估计
  • 国外推广国内网站网站建设 昆明邦凯网络
  • 房产网站有哪些物业管理系统英文
  • 琼海商城网站建设潍坊住房和城乡建设局网站
  • 没有服务器如何做网站嘉鱼网站建设前十
  • 网站开发怎么挣外快百度手机助手app下载安装
  • 国外响应式网站模板新闻式软文
  • 潍坊网站建设哪家专业安卓手机优化软件排名
  • 住房与建设部网站 2018 128号智慧教育
  • 怎么做淘宝网站赚钱吗淘宝引流推广平台