一. 使用注解校验

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页面的数据进行校验的更多相关文章

  1. 关于从JSP页面插入数据到数据库中乱码问题的解决

    问题描述:最近我在写一个j2ee的留言板系统模块,遇到了一个非常让我头大的问题,当我从JSP页面输入数据后,通过hibernate中的业务逻辑类HQL语句把这个数据插入到本地的mysql数据库中,可是 ...

  2. JSP页面读取数据中的数据内容,出现乱码现象的解决方法

    1.首先要确保JSP页面的编码已修改为“utf-8”的字符编码: 2.然后再在jsp页面上添加代码进行设置: 先用getBytes()方法读出数据,然后再new String()方法设置格式为“utf ...

  3. springMVC在JSP页面取map值

    在springmMVC中.jsp页面取得map值. 在controller层: Map<String, Object> map = new HashMap<String, Objec ...

  4. SpringMvc出现Jsp页面不能正常解析成html网页

    <!-- Spring mvc配置 --> <servlet> <servlet-name>springMvc</servlet-name> <s ...

  5. SpringMVC中JSP页面显示为源码

    @RequestMapping(value = "login") public ModelAndView login(ModelAndView mav) throws Except ...

  6. jsp 页面json数据提交到后台spring处理举例

    0 前台: 'type'        : 'post', 'contentType' : 'application/json;charset=UTF-8', 'data'        : JSON ...

  7. SpringMVC的JSP页面中中EL表达式不起作用的问题解决

    原文地址:https://blog.csdn.net/sinat_35512245/article/details/53611663

  8. SpringMVC:前台jsp页面和后台传值

    前台jsp页面和后台传值的几种方式: 不用SpringMVC自带的标签 前台---->后台,通过表单传递数据(): 1.jsp页面代码如下,  modelattribute 有没有都行 < ...

  9. JSP——页面三大部分(指令、脚本、动作组件)

    一.JSP简介: JSP(Java Server Pages,Java服务器端页面开发技术) JSP可以实现的技术都可以通过Servlet实现,他们本质上是一样的.但JSP设计的目的在于简化表示层的表 ...

随机推荐

  1. 使用canvas输出base64_url

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 系统优化怎么做-SQL优化

    大家好,这里是「聊聊系统优化 」,并在下列地址同步更新 博客园:http://www.cnblogs.com/changsong/ 知乎专栏:https://zhuanlan.zhihu.com/yo ...

  3. Oracle创建序列,Oracle创建序列语法

    -- Oracle创建序列 Create sequence CREATE SEQUENCE SEQ_SINGER -- 序列名称  START WITH 2 -- 开始数字  MAXVALUE 999 ...

  4. 协作开发中常用的Git命令小结

    先提一下最基础的git命令用法: git clone   从远端克隆到本地仓库 git add . (注意add和. 之间有一个空格)将全部改动添加到暂存区 git checkout xxx 撤销更改 ...

  5. .Net core 使用TimeJob

    在我以前的文章中有一个.Net core使用Quartz.Net ,一开始我们的设想就是定时操作数据库,所以有很多实现方法,后来发现TimeJob可以同样实现我们的需求,而且更简便. 所以我们就使用了 ...

  6. 转:AbstractQueuedSynchronizer的介绍和原理分析

    引自:http://ifeve.com/introduce-abstractqueuedsynchronizer/ 简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架.该同 ...

  7. 使用百度编辑器--ueditor,后台接收提交编辑的内容,HTML不见了, 赋值不了,赋值之后,html暴露出来了??

    1.提交编辑好的内容, 后台post 接收发现 html 不见了,这个时候也许就是转义的问题, 既可以试试 $content = htmlspecialchars(stripslashes(input ...

  8. Python学习:9.模块的安装以及调用模块

    什么是模块 在Python中,模块其实也就是包含python代码的文件,我们为什么要使用模块?在我们以后写代码的时候,我们会发现有很多功能需要经常使用,那我们想要使用这些功能怎么办,要再把那些代码在敲 ...

  9. geoserver中WMS服务详细说明

    官方geoserver中WMS服务中几种操作的API的详细说明地址: http://docs.geoserver.org/stable/en/user/services/wms/reference.h ...

  10. 北京Uber优步司机奖励政策(1月9日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...