Spring Boot 第19篇: 验证表单信息

转载 2018年04月17日 09:18:17

这篇文篇主要简述如何在springboot中验证表单信息。在springmvc工程中,需要检查表单信息,表单信息验证主要通过注解的形式。

构建工程

创建一个springboot工程,由于用到了 web 、thymeleaf、validator、el,引入相应的起步依赖和依赖,代码清单如下:

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

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

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

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
    </dependency>

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-el</artifactId>
    </dependency>
</dependencies>

创建一个PresonForm的Object类

package com.forezp.entity;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
 * Created by fangzhipeng on 2017/4/19.
 */
public class PersonForm {

    @NotNull
    @Size(min=2, max=30)
    private String name;

    @NotNull
    @Min(18)
    private Integer age;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String toString() {
        return "Person(Name: " + this.name + ", Age: " + this.age + ")";
    }
}

这个实体类,在2个属性:name,age.它们各自有验证的注解:

  • @Size(min=2, max=30) name的长度为2-30个字符
  • @NotNull 不为空
  • @Min(18)age不能小于18

创建 web Controller

@Controller
public class WebController extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/results").setViewName("results");
    }

    @GetMapping("/")
    public String showForm(PersonForm personForm) {
        return "form";
    }

    @PostMapping("/")
    public String checkPersonInfo(@Valid PersonForm personForm, BindingResult bindingResult) {

        if (bindingResult.hasErrors()) {
            return "form";
        }

        return "redirect:/results";
    }
}

创建form表单

src/main/resources/templates/form.html:

<html>
    <body>
        <form action="#" th:action="@{/}" th:object="${personForm}" method="post">
            <table>
                <tr>
                    <td>Name:</td>
                    <td><input type="text" th:field="*{name}" /></td>
                    <td th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</td>
                </tr>
                <tr>
                    <td>Age:</td>
                    <td><input type="text" th:field="*{age}" /></td>
                    <td th:if="${#fields.hasErrors('age')}" th:errors="*{age}">Age Error</td>
                </tr>
                <tr>
                    <td><button type="submit">Submit</button></td>
                </tr>
            </table>
        </form>
    </body>
</html>

注册成功的页面

src/main/resources/templates/results.html:

html>
    <body>
        Congratulations! You are old enough to sign up for this site.
    </body>
</html>

演示

启动工程,访问http://localhost:8080/

img

如果你输入A和15,点击 submit:

img

img

如果name 输入N, age为空:

img

如果输入:forezp. 18

参考资料

https://spring.io/guides/gs/validating-form-input/

源码下载

https://github.com/forezp/SpringBootLearning

SpringBoot非官方教程 | 第十九篇: 验证表单信息

这篇文篇主要简述如何在springboot中验证表单信息。在springmvc工程中,需要检查表单信息,表单信息验证主要通过注解的形式。构建工程创建一个springboot工程,由于用到了 web 、...
  • forezp
  • forezp
  • 2017-04-30 16:50:05
  • 26974

Spring Boot入门2——表单验证

表单验证,即校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等。Spring boot是如何帮我们实现表单验证的呢? 假设现在我们存在这么一个注册界面:...
  • a60782885
  • a60782885
  • 2017-03-30 15:30:11
  • 5706

SpringBoot 表单验证

SpringBoot 表单验证表单验证,就是对用户的输入数据进行有效性检查,那么SpringBoot是如何来做的呢?还是以添加学生为例来进行说明,其中,Student实体类的代码如下:@Entity...
  • u010412719
  • u010412719
  • 2017-04-14 16:42:59
  • 2104

SpringBoot表单验证

Girl实体类package com.wangh.model;import javax.persistence.Entity; import javax.persistence.GeneratedVa...
  • qq_34912469
  • qq_34912469
  • 2017-06-14 16:53:40
  • 717

Spring Boot入门二:使用ThymeLeaf+表单验证

Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP,或其他模板引擎,如Velocity、FreeMarker等。Thymel...
  • Guohenghenghaha
  • Guohenghenghaha
  • 2017-07-25 16:25:20
  • 3671

【SpringBoot】web进阶——表单验证,AOP统一处理请求日志,统一异常处理,单元测试

表单验证@valid 注解应用 1 在实体类添加限制条件的注解 并标明返回message              2 在 请求参数前添加 @valid 注解@Valid-...
  • happy_zzzhao
  • happy_zzzhao
  • 2018-02-28 10:13:27
  • 32

【Spring】官网教程阅读笔记(七):验证Form表单

【前言】内个验证表单的功能很常用,平时我在servlet实现web server的时候,依照客户端验证的原则,用jsp校验表单中的submit。比如jsp里面一个表单 用下面的函数验证(注意,验证的每...
  • arctan90
  • arctan90
  • 2015-04-02 15:54:52
  • 1458

spring boot基础之表单验证

学习慕课网视频整理出的表单验证笔记
  • qq_33565798
  • qq_33565798
  • 2017-08-06 13:21:37
  • 275

spring boot项目添加拦截器验证token防止表单重复提交

遇到问题: 测试人员用burpsuite工具抓取表单数据,当页面点击提交数据后,工具burpsuite将截取到的数据修改后模拟发送,依然可以正常修改,解决办法 项目添加token验证,  第一步...
  • sinat_34454743
  • sinat_34454743
  • 2017-06-29 09:49:58
  • 986

Spring boot(三):@RequestMapping之Form表单参数传递及POJO绑定实例讲解

@RequestMapping之Form表单参数传递及POJO绑定实例讲解
  • ltwang_tech
  • ltwang_tech
  • 2017-12-22 09:35:23
  • 696
收藏助手
不良信息举报
您举报文章:Spring Boot 第19篇: 验证表单信息
举报原因:
原因补充:

(最多只允许输入30个字)