• SpringMVC之完成对前端传来的数据进行校验


    假设您需要在网页上注册一个账号,其中有一项需要填入您的年龄,如果您不小心填了一个字符串,那么您的这个账号是不可能成功进行注册的,而本篇文章实现的功能就是,在后端将前端串传入的数据进行校验和识别。

    第一步:在pom.xml导入依赖

    1. <dependency>
    2. <groupId>org.hibernate.validatorgroupId>
    3. <artifactId>hibernate-validatorartifactId>
    4. <version>6.1.0.Finalversion>
    5. dependency>
    6. <dependency>
    7. <groupId>jakarta.validationgroupId>
    8. <artifactId>jakarta.validation-apiartifactId>
    9. <version>2.0.2version>
    10. dependency>

    第二步:配置框架配置文件web.xml中,将这个功能加载到SpringMVC框架

    1. <bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" id="validatorFactoryBean">
    2. <property name="providerClass" value="org.hibernate.validator.HibernateValidator">property>
    3. bean>
    4. <mvc:annotation-driven validator="validatorFactoryBean"/>

    第三步:配置校验数据条件(通过SpringMVC的框架注解来实现限制)

            注意:注解有很多种,这里只介绍几种经常使用的

    1. package demo1;
    2. import org.springframework.lang.NonNull;
    3. import javax.validation.constraints.*;
    4. public class yan {
    5. @NotNull(message = "id数据为空")
    6. private Integer id;
    7. @NotNull(message = "id数据为空")
    8. @Size(min =2 ,max = 10)
    9. private String name;
    10. @Email()
    11. private String email;
    12. @NotNull(message = "age数据输入错误")
    13. @Max(150)
    14. @Min(0)
    15. private Integer age;
    16. @Override
    17. public String toString() {
    18. return "CT_yanzheng{" +
    19. "id=" + id +
    20. ", name='" + name + '\'' +
    21. ", email='" + email + '\'' +
    22. ", age=" + age +
    23. '}';
    24. }
    25. @NonNull
    26. public Integer getId() {
    27. return id;
    28. }
    29. public void setId(@NonNull Integer id) {
    30. this.id = id;
    31. }
    32. @NonNull
    33. public String getName() {
    34. return name;
    35. }
    36. public void setName(@NonNull String name) {
    37. this.name = name;
    38. }
    39. public String getEmail() {
    40. return email;
    41. }
    42. public void setEmail(String email) {
    43. this.email = email;
    44. }
    45. @NonNull
    46. public Integer getAge() {
    47. return age;
    48. }
    49. public void setAge(@NonNull Integer age) {
    50. this.age = age;
    51. }
    52. }
    • @NotNull 表示这个字段不能为空
    • @Size 中描述了这个字符串长度的限制
    • @Email 表示这个字段的值必须是一个邮箱地址
    • @Max 表示这个字段的最大值

    其他注解:

     第四步:创建框架的控制器

    1. package demo1;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.validation.BindingResult;
    4. import org.springframework.validation.ObjectError;
    5. import org.springframework.validation.annotation.Validated;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import org.springframework.web.bind.annotation.ResponseBody;
    8. import java.util.Arrays;
    9. import java.util.List;
    10. @Controller
    11. public class con1 {
    12. @RequestMapping(value = "/yan",produces = "text/html;charset=utf-8")
    13. @ResponseBody
    14. public String play(@Validated yan ct_yanzheng, BindingResult bindingResult){
    15. //@Validated注解标注着定义的那些限制条件,得以实现
    16. //BindingResult 通过这个类来判断前端传来的数据是否有错误
    17. System.out.println("yan" +ct_yanzheng);
    18. String[] play1 = new String[4];
    19. if(bindingResult!=null) {
    20. List allErrors = bindingResult.getAllErrors(); //将错误信息遍历出来
    21. int m = 0;
    22. for (ObjectError objectError : allErrors) {
    23. String last = objectError.getObjectName() + ":" + objectError.getDefaultMessage();
    24. System.out.println(last);
    25. play1[m] = last;
    26. m++;
    27. }
    28. return Arrays.toString(play1);} //如果出现错误,将错误标记信息传到前端
    29. else return "输入成功";
    30. }
    31. }

    创建前端界面:

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: lenovo
    4. Date: 2022/11/17
    5. Time: 21:37
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <html>
    10. <head>
    11. <title>Titletitle>
    12. head>
    13. <body>
    14. <form action="/yan" method="post">
    15. <table>
    16. <tr>
    17. <td>学生编号:td>
    18. <td><input type="text" name="id">td>
    19. tr>
    20. <tr>
    21. <td>学生姓名:td>
    22. <td><input type="text" name="name">td>
    23. tr>
    24. <tr>
    25. <td>学生邮箱:td>
    26. <td><input type="text" name="email">td>
    27. tr>
    28. <tr>
    29. <td>学生年龄:td>
    30. <td><input type="text" name="age">td>
    31. tr>
    32. <tr>
    33. <td colspan="2">
    34. <input type="submit" value="提交">
    35. td>
    36. tr>
    37. table>
    38. form>
    39. body>
    40. html>

     项目执行:

     

    结果输出:

    将错误信息遍历在前端网页上 

     

  • 相关阅读:
    MySQL索引&事务
    FullCalendarDemo5 控件的实例讲解—拖拽实现值班排班(四)
    PV、EV、AC、BAC、EAC、ETC等计算公式含义
    Unity使用新输入系统InputSystem制作飞机大战Demo
    算法题练习——JS Node+python题解合并k个已排序的链表及链表的奇偶重排
    Django多表查询
    苹果macOS电脑版 植物大战僵尸游戏
    跨域的十种解决方案详解(总结)
    论文翻译:2022_Time-Frequency Attention for Monaural Speech Enhancement
    Java 字符串相关的类 String StringBuffer StringBuilder
  • 原文地址:https://blog.csdn.net/m0_52479012/article/details/127973271