• 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;  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>
    

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

  • 相关阅读:
    Unity 随机数与随机种子
    Unity 基于Cinemachine计算透视摄像机在地图中的移动范围
    Unity 利用Cinemachine快速创建灵活的相机系统
    Unity NavMesh 动态烘焙绘制与随机取点
    Unity LineRenderer 射线检测 激光攻击
    Unity ugui屏幕适配与世界坐标到ugui屏幕坐标的转换
    实验:用Unity抓取指定url网页中的所有图片并下载保存
    关于Unity中AI随机巡逻障碍物预判与快速运动时物理穿透的思考
    唬人的Java泛型并不难
    你知道Java中的CopyOnWriteArrayList吗?
  • 原文地址:https://www.cnblogs.com/donfaquir/p/9483290.html
Copyright © 2020-2023  润新知