一. 使用注解校验

a) 引入校验依赖包

	<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>

hibernate-validator是validation-api的实现

b) 编写form元素实体类

package cultivate_web.vo;

import java.io.Serializable;
import javax.validation.constraints.Min;
import org.hibernate.validator.constraints.NotBlank;
import lombok.Data; /**
* login页面的表单信息
* @date 2018年8月15日 下午4:41:32
*/
@Data
public class LoginForm implements Serializable { private static final long serialVersionUID = 6057365255574064840L; @NotBlank(message="账户不能为空!")
@Min(1000)
private String adminId; @NotBlank(message="密码不能为空")
private String pwd;
}

校验注解是有先后顺序的,例如我的代码中@NotBlank(message="账户不能为空!")@Min(1000)的上面,如果输入框数据为空,则会提示"不能为空",如果两个上下位置颠倒,输入框为空会提示"数值不能小于1000".

c) 编写Controller类

package cultivate_web.controller;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import cultivate_domain.pojo.Consumer;
import cultivate_web.vo.LoginForm; @Controller
@RequestMapping(method=RequestMethod.POST)
public class PostController { @RequestMapping("/login")
public String login( Model model,@Valid LoginForm lf,BindingResult bindingResult){ if(bindingResult.hasErrors()){
FieldError idmsg = bindingResult.getFieldError("adminId");
FieldError pwdmsg = bindingResult.getFieldError("pwd"); if(idmsg != null) model.addAttribute("idmsg", idmsg.getDefaultMessage());
if(pwdmsg != null) model.addAttribute("pwdmsg", pwdmsg.getDefaultMessage());
return "login";
}
return "";
}
}

这里要注意的是,"BindingResult bindingResult"参数必须紧跟"LoginForm lf".而且"@Valid"必须在 "LoginForm lf"的前面,我就是因为这个注解不在参数对象前面,调试几个小时没找到为什么.

d) 编写jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录系统</title>
</head>
<body>
<h1 align="center">请使用管理员账户登录</h1>
<hr style="height: 5px">
<div style="margin-top: 100px" align="center">
<form action="login" method="post">
<table align="center" style="border-style: double; width: 300px; height: 200px;">
<tr>
<td>账号:</td>
<td><input id="adminId" name="adminId" type="text"/> </td>
</tr>
<tr><td colspan="2" align="center"><span>${idmsg}</span></td></tr>
<tr>
<td>密码:</td>
<td><input id="pwd" name="pwd" type="password" /></td>
</tr>
<tr><td colspan="2" align="center"><span>${pwdmsg}</span></td></tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="提交"/></td>
</tr>
</table>
</form>
</div>
</body>
</html>

这就能做一个简单的数据校验了

最新文章

  1. 最适合作为Java基础面试题之Singleton模式
  2. bootstrap学习笔记【转】
  3. EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD)
  4. 【代码笔记】iOS-点击一个button,出6个button
  5. Hibernate &lt;一级缓存&gt;
  6. 设计模式之美:Composite(组合)
  7. JqueryMobile入门基础附源码下载
  8. 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验
  9. hihoCoder 1160 攻城略地
  10. phpCAS::handleLogoutRequests()关于java端项目登出而php端项目检测不到的测试
  11. 2015第16周六学习java建议
  12. codeforces 633C. Spy Syndrome 2 hash
  13. bzoj 2962 序列操作
  14. Linux系统网络编程中TCP通讯socket--send导致进程被关闭
  15. 取消Fragment切换时间,Fragment+ViewPager静止滑动,去掉默认的滑动效果
  16. 什么是CMD
  17. HDU4635 Strongly connected【强连通】
  18. asp.net core mvc 中在C# 代码中写 js 或html 文本
  19. python3获取主机名、主机IP
  20. 1549: Navigition Problem (几何计算+模拟 细节较多)

热门文章

  1. linux下安装rar
  2. Oracle查找lobsegment、lobindex对应的表
  3. 【oracle】关于创建表时用default指定默认值的坑
  4. React-Reflux 基础分享
  5. 竞赛题解 - CF Round #524 Div.2
  6. WebService 学习笔记(一、概念及定义)
  7. mysql 主主架构,多入口 互为备份
  8. Win7装在其他盘 (非C盘)办法
  9. 使用docker搭建laravel记叙
  10. consonant_摩擦音