5.1 SpringBoot服务端表单数据校验

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_16855077/article/details/84968919

springboot使用了hibernate-validator的校验框架

1.pom.xml

<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>com.cloudtech</groupId>
	<artifactId>01-springboot-hello</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.4.RELEASE</version>
		<relativePath />
		<!-- lookup parent from repository -->
	</parent>
	
	<properties>
	    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>1.8</java.version>
    </properties>
    
    <dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<!-- mybatis启动器  -->
	    <dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.1.1</version>
		</dependency>
		
		<!-- mysql数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!-- druid数据库连接池 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.9</version>
		</dependency>
		
		<!-- 增加thymeleaf坐标  -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		
		<!-- 热部署 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional>
		</dependency>
		
		<!--通用Mapper -->
		<dependency>
			<groupId>tk.mybatis</groupId>
			<artifactId>mapper-spring-boot-starter</artifactId>
			<version>2.0.3</version>
		</dependency>
		<!--pageHelper分页 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.5</version>
		</dependency>
	</dependencies>
</project>

2 代码

adduser.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form th:action="@{/user/addUser}" method="post">
		userName:<input type="text" name="userName"/>
		<font color="red" th:errors="${user.userName}"></font>
		<br/>
		sex:<input type="text" name="sex"/>	
		<font color="red" th:errors="${user.sex}"></font>
		<br/>
		<input type="submit" value="提交"/>	<br/>
	</form>
</body>
</html>

UserController.java 

package com.cloudtech.controller;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import com.cloudtech.entity.Role;
import com.cloudtech.entity.User;

/**
 * 角色控制器
* @ClassName: UserController  
* @Description:   
* @author wude  
* @date 2018年12月12日  
*
 */
@Controller
@RequestMapping("/user")
public class UserController {
	/**
	 * 解决异常的方法:在跳转页面的时候增加注入一个User对象
	 * 该对象会被spring mvc注入到model中,使用驼峰规则
	 * 
	 * 如果传递的对象想修改名称,可以通过@ModelAttribute("aa")
	 * @param user
	 * @return
	 */
	@RequestMapping("/test")
	public String test(/*@ModelAttribute("aa")*/ User user){
		return "adduser";
	}
	
	/**
	 * 增加角色信息
	 * @@Valid 开启对user对象的校验
	 * @param role  
	 * @result BindingResult封装勒校验的结果
	 * @return
	 */
	@RequestMapping("/addUser")
	public String addUser(@Valid User user,BindingResult result){
		if(result.hasErrors()){
			return "adduser";
		}
		System.out.println(user.toString());
		return "ok";
		
	}
}

user.java

package com.cloudtech.entity;

import javax.validation.constraints.NotBlank;

public class User {
	@NotBlank  //非空校验
	private String userName;
	@NotBlank  //非空校验
	private String sex;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public User(String userName, String sex) {
		super();
		this.userName = userName;
		this.sex = sex;
	}
	
	@Override
	public String toString() {
		return "User [userName=" + userName + ", sex=" + sex + "]";
	}
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
}

3 测试

4.其他校验

package com.cloudtech.entity;

import javax.validation.constraints.NotBlank;

public class User {
	@NotBlank(message="用户不能为空!")  //非空校验
	private String userName;
	@NotBlank(message="性别不能为空!")  //非空校验
	private String sex;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public User(String userName, String sex) {
		super();
		this.userName = userName;
		this.sex = sex;
	}
	
	@Override
	public String toString() {
		return "User [userName=" + userName + ", sex=" + sex + "]";
	}
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
}

 

@NotBlank: 判断字符串是否为 null 或者是空串(去掉首尾空格)。

@NotEmpty: 判断字符串是否 null 或者是空串。

@Length: 判断字符的长度(最大或者最小)

@Min: 判断数值最小值

@Max: 判断数值最大值

@Email: 判断邮箱是否合法

猜你喜欢

转载自blog.csdn.net/qq_16855077/article/details/84968919
5.1