springMVC對jsp頁面的數據進行校驗
阿新 • • 發佈:2018-08-15
false long w3c set 提示 gre password request dmi
一. 使用註解校驗
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頁面的數據進行校驗