`

SpringBoot表单验证

阅读更多
1. SpringBoot表单验证@Valid

新建项目SpringDataValid

src/main/resources/application.properties

server.port=8000
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true

src/main/java/com/andrew/entity/Student.java

package com.andrew.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Entity
@Table(name="t_student")
public class Student {
    @Id
    @GeneratedValue
    private Integer id;
    @NotEmpty(message="姓名不能为空!")
    @Column(length=50)
    private String name;
    @NotNull(message="年龄不能为空!")
    @Min(value=18,message="年龄必须大于18岁")
    private Integer age;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
}

src/main/java/com/andrew/dao/StudentDao.java

package com.andrew.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import com.andrew.entity.Student;
public interface StudentDao extends JpaRepository<Student,Integer> {

}

src/main/java/com/andrew/service/StudentService.java

package com.andrew.service;
import com.andrew.entity.Student;
public interface StudentService {
    public void add(Student student);
}

src/main/java/com/andrew/service/impl/StudentServiceImpl.java

package com.andrew.service.impl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.andrew.dao.StudentDao;
import com.andrew.entity.Student;
import com.andrew.service.StudentService;
@Service("studentService")
public class StudentServiceImpl implements StudentService {
    @Resource
    private StudentDao studentDao;
    @Override
    public void add(Student student) {
        studentDao.save(student);
    }
}

src/main/java/com/andrew/controller/StudentController.java

package com.andrew.controller;
import javax.annotation.Resource;
import javax.validation.Valid;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.andrew.entity.Student;
import com.andrew.service.StudentService;
@RestController
@RequestMapping("/student")
public class StudentController {
    @Resource
    private StudentService studentService;
    @RequestMapping("/add")
    public String add(@Valid Student student,BindingResult bindingResult){
        if (bindingResult.hasErrors()) {
            return bindingResult.getFieldError().getDefaultMessage();
        } else {
            studentService.add(student);
            return "添加成功";
        }
    }
}

src/main/webapp/jquery-1.4.4.js

src/main/webapp/studentAdd.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息添加页面</title>
<script src="jquery-1.4.4.js"></script>
<script type="text/javascript">
    function submitData(){
        $.post("/student/add",{name:$("#name").val(),age:$("#age").val()},
                function(result){
                    alert(result);
                }
        );
    }
</script>
</head>
<body>
    姓名:<input type="text" id="name" name="name"/><br/>
    年龄:<input type="text" id="age" name="age"/><br/>
    <input type="button" onclick="submitData()" value="提交"/>
</body>
</html>

SpringDataValidApplication.java右键Run As选择Spring Boot App

http://localhost:8000/studentAdd.html
空 空 提交
年龄不能为空
空 1 提交
姓名不能为空
a 1 提交
年龄必须大于18岁
a 19 提交
添加成功
数据库t_student表新增记录
1    19    a


2. SpringBoot表单验证注解清单

@Null限制只能为null
@NotNull限制必须不为null
@AssertFalse限制必须为false
@AssertTrue限制必须为true
@DecimalMax(value)限制必须为一个不大于指定值的数字
@DecimalMin(value)限制必须为一个不小于指定值的数字
@Digits(integer,fraction)限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Future限制必须是一个将来的日期
@Max(value)限制必须为一个不大于指定值的数字
@Min(value)限制必须为一个不小于指定值的数字
@Past限制必须是一个过去的日期
@Pattern(value)限制必须符合指定的正则表达式
@Size(max,min)限制字符长度必须在min到max之间
@Past验证注解的元素值(日期类型)比当前时间早
@NotEmpty验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
@Email验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式
分享到:
评论

相关推荐

    Spring Boot学习入门之表单验证

    在Spring Boot应用中,表单验证是一个至关重要的环节,它能确保从客户端接收到的数据符合预设的规则,从而防止无效或恶意的数据破坏系统。在本文中,我们将深入探讨Spring Boot如何利用注解进行表单验证,以及如何...

    Spring Boot 表单验证篇

    Spring Boot 表单验证篇 Spring Boot 表单验证篇是 Spring Boot 框架中的一个重要组件,用于在表单提交的时候进行验证。通过使用 Spring Boot 提供的验证机制,可以快速而方便地实现表单验证。 在 Spring Boot 中...

    springboot2.1+redis+拦截器 防止表单重复提交

    在现代Web应用开发中,防止表单重复提交是一项重要的任务,因为...提供的压缩包文件“springboot-redis-拦截器-防重提交表单详细说明”应该包含了完整的代码示例和相关说明,可供开发者参考和直接应用到自己的项目中。

    【SpringBoot】【Thymeleaf表单数据验证例子】

    在本文中,我们将深入探讨如何在SpringBoot项目中结合Thymeleaf进行表单数据验证。SpringBoot简化了Java Web应用的开发,而Thymeleaf则是一个强大的模板引擎,常用于前端视图渲染。数据验证是任何Web应用中不可或缺...

    SpringBoot整合Kaptcha(图形验证码)

    当用户提交表单时,前端会向`/validate`接口发送请求以验证验证码是否正确。 总结一下,通过上述步骤,你可以在Spring Boot项目中成功集成Kaptcha,为你的应用提供图形验证码功能。这不仅可以提高用户体验,还能...

    activiti自定义表单demo.rar

    为了确保功能的正确性,项目可能包含了单元测试或集成测试的代码,用于验证流程的创建、执行和表单的交互是否符合预期。 通过学习和实践这个"activiti自定义表单demo",开发者可以深入理解SpringBoot和Activiti的...

    [SpringBoot系列]验证客户端参数接口

    在这个例子中,`ExampleForm`是一个包含验证注解的bean,`@Validated`和`@RequestBody`共同作用,使得Spring Boot在调用控制器之前先验证表单数据。 4. **自定义验证注解** 如果内置的验证注解不能满足需求,可以...

    SpringBoot使用AOP+注解实现简单的权限验证的方法

    SpringBoot 使用 AOP+注解实现简单的权限验证的方法 SpringBoot 框架提供了强大的权限验证机制,以确保应用程序的安全性。其中一种方法是使用 AOP(Aspect-Oriented Programming)和注解来实现简单的权限验证。本文...

    springboot学习成果.zip

    2. **@Valid表单验证**:在SpringBoot的Web应用中,@Valid注解可以用于表单验证。它结合了JSR-303/JSR-349(Bean Validation)规范,允许你在表单提交时验证输入数据的有效性。你可以定义校验规则在模型类的属性上,...

    SpringBootLearning_forezp.tar.gz

    SpringBoot非官方教程 | 第十九篇: 验证表单信息 SpringBoot非官方教程 | 第二十篇: 处理表单提交 其他 SpringBoot非官方教程 | 第二十一篇: springboot集成JMS SpringBoot非官方教程 | 第二十二篇: 创建含有...

    Vue结合SpringBoot注册发送邮件激活.zip

    - **表单验证**:Vue的自定义指令和计算属性可以用来实现表单验证,如检查输入是否为空、格式是否正确等。 - **事件监听**:当用户提交表单时,Vue的`v-on`或简写`@`可以监听并触发相应的事件处理函数,向后端发送...

    springboot整合thymeleaf模板

    8. **表单处理**:Thymeleaf的`th:field`、`th:error`等标签可以方便地与Spring表单绑定,处理表单验证和错误信息。 9. **模板布局**:Thymeleaf的`th:replace`和`th:include`特性可用于实现模板的继承和布局,提高...

    springboot学习记录

    SpringBoot(五)_表单验证 SpringBoot(六)_AOP统一处理请求 SpringBoot(七)_统一异常处理 SpringBoot(八)_springboot集成swagger2 SpringBoot(九)_springboot集成MyBatis SpringBoot(十)_springboot集成Redis ...

    springboot2.7.15+thymeleaf 代码

    Thymeleaf可以用于创建登录表单,通过Thymeleaf表达式将表单数据绑定到后端的模型对象。 4. **员工管理**: 员工管理模块通常包含员工的增删改查(CRUD)操作。在SpringBoot和Thymeleaf的组合中,可以使用Spring ...

    表单数据自动封装到javaBean中

    总结,表单数据自动封装到JavaBean涉及到多个层面的技术,包括Web框架的特性利用、数据验证、错误处理以及自定义逻辑。理解并熟练掌握这些技术,能极大地提高开发效率和代码质量。在实际项目中,可以根据需求选择...

    vue2+springboot前后台整合框架.

    这个框架将前端的Vue.js与后端的SpringBoot紧密结合,实现了数据交互、权限管理、表单验证等功能。 【描述】:描述中提到的“Vue2前端表单验证”是指在Vue2组件中使用Vuelidate或自定义验证规则来确保用户输入的...

    【完整源码+数据库】 SpringBoot集成Spring Security实现异常处理+自定义表单登录使用Filter验证

    在本项目中,我们主要关注的是如何将Spring Boot与Spring Security进行集成,以实现一个具有异常处理和自定义表单登录验证的安全系统。Spring Security是一个强大的安全框架,它提供了多种安全控制,包括用户认证、...

    SpringBoot集成Spring Security实现异常处理+自定义表单登录使用Filter验证【完整源码+数据库】

    在本项目中,我们主要关注的是如何将Spring Boot与Spring Security进行集成,以实现一个具有异常处理和自定义表单登录验证的安全系统。Spring Security是一个强大的安全框架,它提供了多种安全控制,包括用户认证、...

    vue-springboot登录

    表单提交事件可以绑定到 Vue 实例的方法上,例如 `login()`,该方法会发送 AJAX 请求到后端服务器进行身份验证。Vue.js 提供的 `axios` 库可以方便地进行 HTTP 请求。 在 `Login.vue` 文件中,登录请求的实现可能...

Global site tag (gtag.js) - Google Analytics