这篇文章的主要功能是Web应用程序中验证表单输入是否合法的文章。

PersonForm对象

首先创建一个PersonForm对象:

这个对象会验证PersonForm的用户名,代码如下:

package cn.it1995;import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;public class PersonForm {@NotNull@Size(min = 2, max = 30)private String name;@NotNull@Min(18)private Integer age;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;}@Overridepublic String toString() {return "PersonForm{" +"name='" + name + '\'' +", age=" + age +'}';}
}

PersonForm类有两个成员,name和age,下面给出3个限制方面的注解:

①@Size(min=2, max=30):限制字符的长度为2~30个字符;

②@NotNull:禁止值为null;

③@Min(18):限制最小也要18个字符。

上面的PersonForm类还有对应的get、set、toString方法。

创建Controller

这里简单创建一个Web Controller,代码如下:

package cn.it1995;import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import javax.validation.Valid;@Controller
public class WebController implements WebMvcConfigurer {@Overridepublic 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";}
}

这里的Controller包含“/”路径下的,GET和POST方法。

showForm方法返回form的模板,这个模板调用了PersonForm。

checkPersonInfo方法有两个参数:

①personForm对象,使用@Valid收集表格属性。

②bindingResult对象,验证错误。

如果验证全部都是正确的,就跳到results模板中。

HTML相关

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<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:error="*{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>

form.html代码如下:

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

Maven相关

对应的mavn如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>ValidatingDemo</artifactId><version>1.0-SNAPSHOT</version><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><lombok.version>1.16.18</lombok.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.10.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><version>2.3.12.RELEASE</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.2.2.RELEASE</version></plugin></plugins></build></project>

程序运行

程序运行截图如下;

点击提交后:

源码打包下载地址:

Java/ValidatingDemo at master · fengfanchen/Java · GitHub

Spring Boot文档阅读笔记-Validating Form Input解析相关推荐

  1. Spring Boot文档阅读笔记-exception handling–@ExceptionHandler解析与实例

    程序结构如下: 源码如下: CustomExceptionHandler.java package com.example.demo.controller;import com.example.dem ...

  2. Spring Boot文档阅读笔记-Creating Asynchronous Methods解析

    创建一个GitHub用户信息查找服务,这个服务是通过GitHub的API获取数据的. 接口是http的,如下: 这里创建一个model去接收对象: @Data @JsonIgnorePropertie ...

  3. Spring Boot文档阅读笔记-对Securing a Web Application解析

    首先创建一个非安全的Web应用 这个应用包含两个页面,一个是home页面,一个是"Hello,World"页面.home页面使用Thymeleaf,相关代码如下: <!DOC ...

  4. Spring Boot文档阅读笔记-how-to-implement-2-way-ssl-using-spring-boot

    two-way-ssl需要12次握手(除去TCP的三次握手),如下图: 双向认证过程: 1.客户端发送ClientHello消息,告诉服务端要使用SSL. 2.客户端发送ServerHello的响应, ...

  5. Spring Boot文档阅读笔记-EhCache的使用

    这里要先注意2个概念: buffer和cache,很多人会讲这两个概念混用.但其实这是两个概念! buffer:一般是指存储临时数据的实体.只能读写一次,对于程序员来说buffer是可见的,比如TCB ...

  6. Spring Boot文档阅读笔记-Spring Boot @Bean解析

    利用SpringBoot的@Bean创建一个简单的Bean. Spring的@Bean注解是放在方法上的,带上这个注解的方法会被Spring容器管理.并且这个方法要返回一个值(对象),这个值和对象会被 ...

  7. Spring Boot文档阅读笔记-构建Restful风格的WebService客户端

    对应的maven如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  8. Spring Boot文档阅读笔记-构建Restful风格的WebService

    Maven代码如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  9. Spring Boot文档阅读笔记-对Messaging with RabbitMQ解析

    此篇教程以Rabbitmq作为消息队列服务端,使用Spring Boot产生和发布消息. 使用Spring AMQP的RabbitTemplate发布消息,使用MessageListenerAdapt ...

最新文章

  1. JDK 序列化, 碰到serialVersionUID 不一致问题,怎么处理?
  2. JAVA中jsp怎么接收参数_如何使用JSP从URL获取参数
  3. ElasticSearch修改和删除文档
  4. Windows10下安装QT5.14.2并用VS2019打开
  5. 魔改和上线你的合成大西瓜,最全教程!
  6. 《R语言编程艺术》——1.4 R语言中一些重要的数据结构
  7. Google 开通免费主机服务,如果你有email帐户,你就可以注册,目前最多只能存放40页面...
  8. 流氓又见流氓!-有感雅虎中国通过公证部门 证明雅虎助手非恶意软件
  9. 高斯过程回归matlab,高斯过程回归及其应用.PDF
  10. 详解会员积分营销系统的作用
  11. 五花八门的垂直搜索引擎
  12. 领导带好团队需要有的3个能力
  13. 全系T*镀膜认证镜头 vivo X70系列夜拍体验再升级
  14. BUCK型DC/DC变换器的建模与仿真
  15. Linux的进程空间管理
  16. matlab dwt实现原理,基于DWT的数字水印算法的MatLab实现.pdf
  17. Mysql 导入3亿数据
  18. 地方门户网站发展与SEO优化瓶颈之谈
  19. 关于程序员找工作的最好渠道,你可能听都没听过!
  20. 招商银行、伊利股份套利模型(1)

热门文章

  1. lnmp php目录,LNMP配置文件目录
  2. php给图片添加水印方法汇总(包括文字水印和图片水印)
  3. Java面向对象【网络编程】
  4. Word 按章节生成图表目录
  5. Xcode插件安装失败解决办法
  6. 给句话就泛滥!机器学习再加点想象,这款交互小说带你领略“无限生成的世界”
  7. LatinIME切换语言
  8. 轻松搞懂云成本优化:FinOps,2023年一定要懂的热点趋势!
  9. 【通信原理】四、信道
  10. 面向对象的特征有哪些