《springboot学习》十 SpringBoot服务端表单数据校验

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: 判断邮箱是否合法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值