Spring MVC 提供了兩種數(shù)據(jù)校驗(yàn)的方式:
1、基于 Validator 接口。
2、使用 Annotation JSR - 303 標(biāo)準(zhǔn)進(jìn)行校驗(yàn)。
基于 Validator 接口的?式需要自定義 Validator 驗(yàn)證器,每?條數(shù)據(jù)的驗(yàn)證規(guī)則需要開(kāi)發(fā)者?動(dòng)完成, 使? Annotation JSR - 303 標(biāo)準(zhǔn)則不需要?定義驗(yàn)證器,通過(guò)注解的方式可以直接在實(shí)體類中添加每個(gè)屬性的驗(yàn)證規(guī)則,這種方式更加方便,實(shí)際開(kāi)發(fā)中推薦使用。
1.定義實(shí)體類Account
1
2
3
4
5
6
7
|
package entity; import lombok.Data; @Data public class Account { private String name; private String password; } |
2.自定義驗(yàn)證器 AccountValidator,實(shí)現(xiàn) Validator 接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package validator; import entity.Account; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; public class AccountValidator implements Validator { @Override public boolean supports(Class<?> aClass) { return Account. class .equals(aClass); } @Override public void validate(Object o, Errors errors) { ValidationUtils.rejectIfEmpty(errors, "name" , null , "姓名不能為空" ); ValidationUtils.rejectIfEmpty(errors, "password" , null , "密碼不能為空" ); } } |
Validator中有兩個(gè)方法, supports是判斷傳入是否為目標(biāo)類,如果是的話則進(jìn)行下一步,數(shù)據(jù)驗(yàn)證的操作。
3.控制器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package Mycontroller; import entity.Account; import entity.Person; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import javax.validation.Valid; @Controller @RequestMapping ( "/validator" ) public class ValidatorHandler { @GetMapping ( "/login" ) public String login(Model model){ model.addAttribute( "account" , new Account()); return "login" ; } @PostMapping ( "/login" ) public String login( @Validated Account account, BindingResult bindingResult){ if (bindingResult.hasErrors()){ return "login" ; } return "index" ; } |
4. springmvc.xml 配置驗(yàn)證器
1
2
3
|
< bean id = "accountValidator" class = "com.southwind.validator.AccountValidator" > </ bean > < mvc:annotation-driven validator = "accountValidator" ></ mvc:annotation-driven > |
5.jsp文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<%@ page contentType= "text/html;charset=UTF-8" language= "java" %> <%@ page isELIgnored= "false" %> <%@ taglib prefix= "form" uri= "http://www.springframework.org/tags/form" %> <html> <head> <title>Title</title> </head> <body> <form:form modelAttribute= "account" action= "/validator/login" method= "post" > 姓名:<form:input path= "name" ></form:input><form:errors path= "name" ></form:errors><br> 密碼:<form:input path= "password" ></form:input><form:errors path= "password" ></form:errors><br> <input type= "submit" value= "登錄" > </form:form> </body> </html> |
以上就是java開(kāi)發(fā)之基于Validator接口的SpringMVC數(shù)據(jù)校驗(yàn)方式的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC數(shù)據(jù)校驗(yàn)的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!
原文鏈接:https://blog.csdn.net/DrLai/article/details/119577797