English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تحقق MVC

تحقق Spring MVC يُستخدم للحد من المدخلات المقدمة من المستخدم. من أجل التحقق من مدخلات المستخدم، يدعم Spring 4 أو أحدث إصداراته API التحقق من الحالات ويستخدمها. يمكنه التحقق من تطبيقات الخادم والعميل.

API التحقق من الحالات

API التحقق من الحالات هي معيار Java يمكن استخدامه لتطبيق القيود على نموذج الأشياء من خلال التعليقات. هنا، يمكننا التحقق من الطول، الأرقام، التعبيرات العادية وما إلى ذلك. بالإضافة إلى ذلك، يمكننا تقديم التحقق المخصص.

بما أن API التحقق من الحالات هو مجرد معيار، لذلك يتطلب تنفيذًا. لهذا السبب، يستخدم Hibernate Validator. Hibernate Validator متوافق تمامًا مع JSR-303/309، مما يسمح بوصف وتحقق القيود التطبيقية.

تعليقات التحقق

لنلقي نظرة على بعض التعليقات التحققية الشائعة.

التعليقالشرح
@NotNullيحدد أن القيمة لا يجب أن تكون فارغة.
@Minيحدد أن الرقم يجب أن يكون مساوياً أو أكبر من القيمة المحددة.
@Maxيحدد أن الرقم يجب أن يكون مساوياً أو أقل من القيمة المحددة.
@Sizeيحدد أن الحجم يجب أن يكون مساوياً للقيمة المحددة.
@Patternيحدد ما إذا كانت السلسلة تتبع النمط النصي المحدد.

مثال التحقق الديناميكي لـ Spring MVC

في هذا المثال، قمنا بإنشاء نموذج بسيط يحتوي على حقل إدخال. هنا، (*) يعني أن الحقل يجب أن يتم إدخال القيمة المطلوبة. وإلا فإن النموذج سيكون لديه خطأ.

1、الإضافة الاعتمادات إلى ملف pom.xml.

pom.xml

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.1.1.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jasper -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jasper</artifactId>
    <version>9.0.12</version>
</dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>  
    <groupId>javax.servlet</groupId>  
    <artifactId>servlet-api</artifactId>  
    <version>3.0-alpha-1</version>  
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
 <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.13.Final</version>
</dependency>

2- إنشاء فئة bean

Employee.java

package com.w3codebox;
import javax.validation.constraints.Size;
public class Employee {
  private String name;
  @Size(min=1, message="required")
  private String pass;
  
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getPass() {
    return pass;
  }
  public void setPass(String pass) {
    this.pass = pass;
  } 
}

3- إنشاء فئة المحكم

في فئة المحكم:

@Validالتعليقات تطبيق قواعد التحقق على العنصر المقدم. BindingResult الواجهة تحتوي على نتائج التحقق.

package com.w3codebox;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class EmployeeController {
  @RequestMapping("/hello")
  public String display(Model m)
  {
    m.addAttribute("emp", new Employee());
    return "viewpage";
  }
  @RequestMapping("/helloagain")
  public String submitForm(@Valid @ModelAttribute("emp") Employee e, BindingResult br)
  {
    if(br.hasErrors())
    {
      return "viewpage";
    }
    else
    {
    return "final";
    }
  }
}

4- في ملف web.xml تقدم مدخل للتحكم

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SpringMVC</display-name>
   <servlet>  
    <servlet-name>spring</servlet-name>  
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>    
</servlet>  
<servlet-mapping>  
    <servlet-name>spring</servlet-name>  
    <url-pattern>/</url-pattern>  
</servlet-mapping>  
</web-app>

5- في ملف xml تعريف Bean

spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd
      http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  <!-- Provide support for component scanning -->
  <context:component-scan base-package="com.w3codebox" />
  <!--Provide support for conversion, formatting and validation -->
  <mvc:annotation-driven/>
  <!-- Define Spring MVC view resolver -->
     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>     
     </bean>
</beans>

6. إنشاء صفحة الطلب

index.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<body>
<a href="hello">انقر هنا...</a>
</body>
</html>

7. إنشاء مكونات الرؤية الأخرى

viewpage.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<style>
.error{color:red}
</style>
</head>
<body>
<form:form action="helloagain" modelAttribute="emp">
اسم المستخدم: <form:input path="name"/> <br><br>
كلمة المرور(*): <form:password path="pass"/>  
<form:errors path="pass" cssClass="error"/><br><br>
<input type="submit" value="submit">
</form:form>
</body>
</html>

final.jsp

<html>
<body>
اسم المستخدم: ${emp.name} <br><br>
كلمة المرور: ${emp.pass}
</body>
</html>

الإخراج:


لنقوم بتقديم النموذج دون إدخال كلمة المرور.


الآن، نكتب كلمة المرور ونقوم بتقديم النموذج.