Spring Boot文档阅读笔记-Validating Form Input解析
这篇文章的主要功能是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解析相关推荐
- Spring Boot文档阅读笔记-exception handling–@ExceptionHandler解析与实例
程序结构如下: 源码如下: CustomExceptionHandler.java package com.example.demo.controller;import com.example.dem ...
- Spring Boot文档阅读笔记-Creating Asynchronous Methods解析
创建一个GitHub用户信息查找服务,这个服务是通过GitHub的API获取数据的. 接口是http的,如下: 这里创建一个model去接收对象: @Data @JsonIgnorePropertie ...
- Spring Boot文档阅读笔记-对Securing a Web Application解析
首先创建一个非安全的Web应用 这个应用包含两个页面,一个是home页面,一个是"Hello,World"页面.home页面使用Thymeleaf,相关代码如下: <!DOC ...
- Spring Boot文档阅读笔记-how-to-implement-2-way-ssl-using-spring-boot
two-way-ssl需要12次握手(除去TCP的三次握手),如下图: 双向认证过程: 1.客户端发送ClientHello消息,告诉服务端要使用SSL. 2.客户端发送ServerHello的响应, ...
- Spring Boot文档阅读笔记-EhCache的使用
这里要先注意2个概念: buffer和cache,很多人会讲这两个概念混用.但其实这是两个概念! buffer:一般是指存储临时数据的实体.只能读写一次,对于程序员来说buffer是可见的,比如TCB ...
- Spring Boot文档阅读笔记-Spring Boot @Bean解析
利用SpringBoot的@Bean创建一个简单的Bean. Spring的@Bean注解是放在方法上的,带上这个注解的方法会被Spring容器管理.并且这个方法要返回一个值(对象),这个值和对象会被 ...
- Spring Boot文档阅读笔记-构建Restful风格的WebService客户端
对应的maven如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- Spring Boot文档阅读笔记-构建Restful风格的WebService
Maven代码如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- Spring Boot文档阅读笔记-对Messaging with RabbitMQ解析
此篇教程以Rabbitmq作为消息队列服务端,使用Spring Boot产生和发布消息. 使用Spring AMQP的RabbitTemplate发布消息,使用MessageListenerAdapt ...
最新文章
- JDK 序列化, 碰到serialVersionUID 不一致问题,怎么处理?
- JAVA中jsp怎么接收参数_如何使用JSP从URL获取参数
- ElasticSearch修改和删除文档
- Windows10下安装QT5.14.2并用VS2019打开
- 魔改和上线你的合成大西瓜,最全教程!
- 《R语言编程艺术》——1.4 R语言中一些重要的数据结构
- Google 开通免费主机服务,如果你有email帐户,你就可以注册,目前最多只能存放40页面...
- 流氓又见流氓!-有感雅虎中国通过公证部门 证明雅虎助手非恶意软件
- 高斯过程回归matlab,高斯过程回归及其应用.PDF
- 详解会员积分营销系统的作用
- 五花八门的垂直搜索引擎
- 领导带好团队需要有的3个能力
- 全系T*镀膜认证镜头 vivo X70系列夜拍体验再升级
- BUCK型DC/DC变换器的建模与仿真
- Linux的进程空间管理
- matlab dwt实现原理,基于DWT的数字水印算法的MatLab实现.pdf
- Mysql 导入3亿数据
- 地方门户网站发展与SEO优化瓶颈之谈
- 关于程序员找工作的最好渠道,你可能听都没听过!
- 招商银行、伊利股份套利模型(1)