springMVC对jsp页面的数据进行校验
一. 使用注解校验
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>
这就能做一个简单的数据校验了
springMVC对jsp页面的数据进行校验的更多相关文章
- 关于从JSP页面插入数据到数据库中乱码问题的解决
问题描述:最近我在写一个j2ee的留言板系统模块,遇到了一个非常让我头大的问题,当我从JSP页面输入数据后,通过hibernate中的业务逻辑类HQL语句把这个数据插入到本地的mysql数据库中,可是 ...
- JSP页面读取数据中的数据内容,出现乱码现象的解决方法
1.首先要确保JSP页面的编码已修改为“utf-8”的字符编码: 2.然后再在jsp页面上添加代码进行设置: 先用getBytes()方法读出数据,然后再new String()方法设置格式为“utf ...
- springMVC在JSP页面取map值
在springmMVC中.jsp页面取得map值. 在controller层: Map<String, Object> map = new HashMap<String, Objec ...
- SpringMvc出现Jsp页面不能正常解析成html网页
<!-- Spring mvc配置 --> <servlet> <servlet-name>springMvc</servlet-name> <s ...
- SpringMVC中JSP页面显示为源码
@RequestMapping(value = "login") public ModelAndView login(ModelAndView mav) throws Except ...
- jsp 页面json数据提交到后台spring处理举例
0 前台: 'type' : 'post', 'contentType' : 'application/json;charset=UTF-8', 'data' : JSON ...
- SpringMVC的JSP页面中中EL表达式不起作用的问题解决
原文地址:https://blog.csdn.net/sinat_35512245/article/details/53611663
- SpringMVC:前台jsp页面和后台传值
前台jsp页面和后台传值的几种方式: 不用SpringMVC自带的标签 前台---->后台,通过表单传递数据(): 1.jsp页面代码如下, modelattribute 有没有都行 < ...
- JSP——页面三大部分(指令、脚本、动作组件)
一.JSP简介: JSP(Java Server Pages,Java服务器端页面开发技术) JSP可以实现的技术都可以通过Servlet实现,他们本质上是一样的.但JSP设计的目的在于简化表示层的表 ...
随机推荐
- SQL语言简单总结
常用的Sql语言总结: 1. create datebase datebaseName //创建数据库 2. drop datebase datebaseName // ...
- 在线预览word,excel文档
Google Doc 示例:https://jsfiddle.net/7xr419yb/ Microsoft Office 示例:https://jsfiddle.net/gcuzq343/
- centos7.3 gitlab 安装配置
1. 设备环境 硬件配置联想 TS250 E3-1225,16G内存,2X1 TB 软件CentOS-7-x86_64-DVD-1804.iso ,安装时选择桌面版 推荐配置参考:https://do ...
- python之内存与编码的那点事
一.初始编码 ASCII 码不支持中文 是py2版本中的默认编码 Unicode 万国码, 英文使用16位(即两个字节),中文使用32位(四个字节) utf-8 美国最少使用八位(1字节), 欧 ...
- ubuntu解决网易云无法打开
最近首次入手ubuntu18 摸索了很久,当然网易云是不可缺少的一部分,在配置好各种环境+程序后,也找到了解决网易云的方法了. 首先安装好网易云 默认情况下需要在终端使用 sudo 才能运行 解决的办 ...
- Python之函数装饰器
在实际中,我们可能需要在不改变函数源代码和调用方式的情况下,为函数添加一些新的附加功能,能够实现这种功能的函数我们将其称之为装饰器.装饰器本质上其实还是是一个函数,用来装饰其它函数,为函数添加一些附加 ...
- while do while switch语句的简要分析
1 //// while是C语言的一个关键字,其后是使用一个小括号中的条件表达式来做为执行循环的条件, 2 ////也就是说当条件表达式的结果为真时执行大括号里面的的程序内容, 3 ////而当条件表 ...
- JAVA8 Stream API的使用
/** * @auther hhh * @date 2018/12/31 12:48 * @description Stream流:用来处理数组.集合的API * 1.不是数据结构,没有内部存储(只是 ...
- go内建容器-切片
1.基础定义 看到'切片'二字,满脸懵逼.切的啥?用的什么刀法切?得到的切片有什么特点?可以对切片进行什么操作? 先看怎么得到切片,也就是前两个问题.切片的底层是数组,所以切片切的是数组:切的时候采用 ...
- NoSQL入门第四天——事务与主从复制
一.Redis的事务 1.是什么 可以一次执行多个命令,本质是一组命令的集合.一个事务中的 所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞 (更多请参见官网事务介绍) 2.能干什 ...