Struts 2 - Doğrulama Çerçevesi

Bu bölümde, Struts doğrulama çerçevesini daha derinlemesine inceleyeceğiz. Struts çekirdeğinde, uygulamanın eylem metodu yürütülmeden önce doğrulama gerçekleştirmek için kuralları çalıştırmasına yardımcı olan doğrulama çerçevesine sahibiz.

İstemci tarafı doğrulama genellikle Javascript kullanılarak yapılır. Ancak, tek başına müşteri tarafındaki doğrulamaya güvenilmemelidir. En iyi uygulamalar, doğrulamanın uygulama çerçevenizin tüm düzeylerinde tanıtılması gerektiğini önermektedir. Şimdi Struts projemize doğrulama eklemenin iki yolunu inceleyelim.

Burada bir örnek alacağız Employee Kimin adı ve yaşı basit bir sayfa kullanılarak kaydedilmelidir ve kullanıcının her zaman 28 ile 65 arasında olması gereken bir ad ve yaş girmesini sağlamak için bu iki doğrulamayı koyacağız.

Örneğin ana JSP sayfasıyla başlayalım.

Ana Sayfa Oluştur

Ana sayfa JSP dosyası yazalım index.jsp, yukarıda belirtilen Çalışan ile ilgili bilgileri toplamak için kullanılacaktır.

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
   pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>Employee Form</title>
   </head>

   <body>
      <s:form action = "empinfo" method = "post">
         <s:textfield name = "name" label = "Name" size = "20" />
         <s:textfield name = "age" label = "Age" size = "20" />
         <s:submit name = "submit" label = "Submit" align="center" />
      </s:form>
   </body>
</html>

İndex.jsp, henüz ele almadığımız Struts etiketini kullanır, ancak bunları etiketlerle ilgili bölümlerde inceleyeceğiz. Ancak şimdilik, s: textfield etiketinin bir giriş alanı yazdırdığını ve s: submit öğesinin bir gönder düğmesi yazdırdığını varsayalım. Her etiket için etiket oluşturan etiket özelliğini kullandık.

Görünümler Oluşturun

Başarı tanımlı eylemin BAŞARILI döndürmesi durumunda çağrılacak olan JSP dosyası success.jsp'yi kullanacağız.

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
   pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>Success</title>
   </head>
   
   <body>
      Employee Information is captured successfully.
   </body>
</html>

Eylem Oluştur

Öyleyse küçük bir eylem sınıfı tanımlayalım Employeeve ardından adlı bir yöntem ekleyin validate() aşağıda gösterildiği gibi Employee.javadosya. Eylem sınıfınızın,ActionSupport sınıf, aksi takdirde doğrulama yönteminiz çalıştırılmayacaktır.

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class Employee extends ActionSupport {
   private String name;
   private int age;
   
   public String execute() {
       return SUCCESS;
   }
   
   public String getName() {
       return name;
   }
   
   public void setName(String name) {
       this.name = name;
   }
   
   public int getAge() {
       return age;
   }
   
   public void setAge(int age) {
       this.age = age;
   }

   public void validate() {
      if (name == null || name.trim().equals("")) {
         addFieldError("name","The name is required");
      }
      
      if (age < 28 || age > 65) {
         addFieldError("age","Age must be in between 28 and 65");
      }
   }
}

Yukarıdaki örnekte gösterildiği gibi, doğrulama yöntemi 'Ad' alanının bir değeri olup olmadığını kontrol eder. Herhangi bir değer sağlanmadıysa, özel bir hata mesajıyla 'Ad' alanına bir alan hatası ekleriz. İkinci olarak, 'Yaş' alanına girilen değerin 28 ile 65 arasında olup olmadığını kontrol ediyoruz, bu koşul karşılamıyorsa doğrulanan alanın üstüne bir hata ekliyoruz.

Yapılandırma Dosyaları

Son olarak, şunu kullanarak her şeyi bir araya getirelim: struts.xml aşağıdaki gibi yapılandırma dosyası -

<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <constant name = "struts.devMode" value = "true" />
   <package name = "helloworld" extends = "struts-default">

      <action name = "empinfo" 
         class = "com.tutorialspoint.struts2.Employee"
         method = "execute">
         <result name = "input">/index.jsp</result>
         <result name = "success">/success.jsp</result>
      </action>

   </package>
</struts>

Aşağıdakilerin içeriği web.xml dosya -

<?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"
   xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   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>Struts 2</display-name>
   
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>

   <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
         org.apache.struts2.dispatcher.FilterDispatcher
      </filter-class>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

Şimdi, proje adına sağ tıklayın ve Export > WAR FileSavaş dosyası oluşturmak için. Sonra bu SAVAŞI Tomcat'in webapps dizininde konuşlandırın. Son olarak, Tomcat sunucusunu başlatın ve URL'ye erişmeyi deneyinhttp://localhost:8080/HelloWorldStruts2/index.jsp. Bu, aşağıdaki ekranı oluşturacaktır -

Şimdi gerekli bilgileri girmeyin, sadece tıklayın Submitbuton. Aşağıdaki sonucu göreceksiniz -

Gerekli bilgileri girin, ancak Kimden alanına yanlış girin, adı "test" ve yaşı 30 olarak söyleyelim ve son olarak Submitbuton. Aşağıdaki sonucu göreceksiniz -

Bu Doğrulama Nasıl Çalışır?

Kullanıcı gönder düğmesine bastığında, Struts 2 otomatik olarak doğrulama yöntemini ve “if”yöntem içinde listelenen ifadeler doğruysa, Struts 2 addFieldError yöntemini çağıracaktır. Herhangi bir hata eklenmişse, Struts 2 yürütme yöntemini çağırmaya devam etmeyecektir. Bunun yerine Struts 2 çerçevesi geri dönecekinput eylemi çağırmanın sonucu olarak.

Bu nedenle, doğrulama başarısız olduğunda ve Struts 2 geri döndüğünde inputStruts 2 çerçevesi, index.jsp dosyasını yeniden görüntüleyecektir. Struts 2 form etiketleri kullandığımız için, Struts 2 hata mesajlarını dosyalanan formun hemen üstüne otomatik olarak ekleyecektir.

Bu hata mesajları, addFieldError yöntem çağrısında belirlediğimiz mesajlardır. AddFieldError yöntemi iki bağımsız değişken alır. İlki,form hatanın geçerli olduğu alan adı ve ikincisi, bu form alanının üzerinde görüntülenecek hata mesajıdır.

addFieldError("name","The name is required");

Dönüş değerini işlemek için input aşağıdaki sonucu eylem düğümümüze eklememiz gerekiyor struts.xml.

<result name = "input">/index.jsp</result>

XML Tabanlı Doğrulama

Doğrulama yapmanın ikinci yöntemi, eylem sınıfının yanına bir xml dosyası yerleştirmektir. Struts2 XML tabanlı doğrulama, e-posta doğrulama, tamsayı aralığı doğrulama, form doğrulama alanı, ifade doğrulama, regex doğrulama, gerekli doğrulama, gerekli string doğrulama, stringlength doğrulama vb. Gibi daha fazla doğrulama seçeneği sunar.

Xml dosyasının adlandırılması gerekiyor '[action-class]'-validation.xml. Yani, bizim durumumuzda adında bir dosya oluşturuyoruzEmployee-validation.xml aşağıdaki içeriklerle -

<!DOCTYPE validators PUBLIC 
   "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
   "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
   <field name = "name">
      <field-validator type = "required">
         <message>
            The name is required.
         </message>
      </field-validator>
   </field>

   <field name = "age">
     <field-validator type = "int">
         <param name = "min">29</param>
         <param name = "max">64</param>
         <message>
            Age must be in between 28 and 65
         </message>
      </field-validator>
   </field>
</validators>

Yukarıdaki XML dosyası ideal olarak sınıf dosyasıyla birlikte CLASSPATH'inizde saklanacaktır. Çalışan eylem sınıfımızı aşağıdaki gibi yapmadan yapalımvalidate() yöntem -

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class Employee extends ActionSupport{
   private String name;
   private int age;
   
   public String execute() {
       return SUCCESS;
   }
   
   public String getName() {
       return name;
   }
   
   public void setName(String name) {
       this.name = name;
   }
   
   public int getAge() {
       return age;
   }
   
   public void setAge(int age) {
       this.age = age;
   }
}

Kurulumun geri kalanı önceki örnekteki gibi kalacak, şimdi uygulamayı çalıştırırsanız, önceki örnekte aldığımızla aynı sonucu verecektir.

Yapılandırmayı depolamak için bir xml dosyasına sahip olmanın avantajı, doğrulamanın uygulama kodundan ayrılmasına izin verir. Kodu yazması için bir geliştirici ve doğrulama xml dosyalarını oluşturması için bir iş analisti alabilirsiniz. Unutulmaması gereken bir diğer husus, varsayılan olarak kullanılabilen doğrulayıcı türleridir.

Struts ile varsayılan olarak gelen çok daha fazla doğrulayıcı var. Yaygın doğrulayıcılar arasında Tarih Doğrulayıcısı, Normal İfade doğrulayıcısı ve Dize Uzunluğu doğrulayıcısı bulunur. Daha ayrıntılı Struts - XML ​​Tabanlı Doğrulayıcılar için aşağıdaki bağlantıya bakın .