Struts 2 - Adnotacje

Jak wspomniano wcześniej, Struts udostępnia dwie formy konfiguracji. Tradycyjnym sposobem jest użyciestruts.xmlplik dla wszystkich konfiguracji. Do tej pory widzieliśmy wiele przykładów tego w tutorialu. Innym sposobem konfiguracji Struts jest użycie funkcji adnotacji Java 5. Korzystając z adnotacji rozpórek, możemy to osiągnąćZero Configuration.

Aby rozpocząć korzystanie z adnotacji w swoim projekcie, upewnij się, że masz w swoim projekcie następujące pliki jar WebContent/WEB-INF/lib folder -

  • struts2-convention-plugin-x.y.z.jar
  • asm-x.y.jar
  • antlr-x.y.z.jar
  • commons-fileupload-x.y.z.jar
  • commons-io-x.y.z.jar
  • commons-lang-x.y.jar
  • commons-logging-x.y.z.jar
  • commons-logging-api-x.y.jar
  • freemarker-x.y.z.jar
  • javassist-.xy.z.GA
  • ognl-x.y.z.jar
  • struts2-core-x.y.z.jar
  • xwork-core.x.y.z.jar

Zobaczmy teraz, jak możesz pozbyć się konfiguracji dostępnej w struts.xml plik i zastąp go adnotacjami.

Aby wyjaśnić koncepcję adnotacji w Struts2, musielibyśmy ponownie rozważyć nasz przykład walidacji wyjaśniony w rozdziale Walidacje Struts2 .

W tym miejscu weźmiemy przykład pracownika, którego imię i nazwisko, wiek zostałoby przechwycone za pomocą prostej strony, i wprowadzimy dwie walidacje, aby upewnić się, że ÜSER zawsze wprowadza imię i nazwisko, a wiek powinien być między 28 a 65.

Zacznijmy od głównej strony JSP przykładu.

Utwórz stronę główną

Napiszmy plik JSP strony głównej index.jsp, który służy do zbierania informacji związanych z Pracownikami, o których mowa powyżej.

<%@ 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>

Plik index.jsp korzysta z tagu Struts, którego jeszcze nie omówiliśmy, ale będziemy go badać w rozdziałach dotyczących tagów. Ale na razie załóżmy, że znacznik s: textfield drukuje pole wejściowe, a s: submit wypisuje przycisk przesyłania. Użyliśmy właściwości label dla każdego tagu, która tworzy etykietę dla każdego tagu.

Utwórz widoki

Użyjemy pliku JSP success.jsp która zostanie wywołana w przypadku powrotu zdefiniowanej akcji SUCCESS.

<%@ 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>

Utwórz akcję

To jest miejsce, w którym używa się adnotacji. Zdefiniujmy ponownie klasę działaniaEmployee z adnotacją, a następnie dodaj metodę o nazwie validate () jak pokazano poniżej w Employee.javaplik. Upewnij się, że Twoja klasa akcji rozszerzaActionSupport class, w przeciwnym razie metoda walidacji nie zostanie wykonana.

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.validator.annotations.*;

@Results({
   @Result(name = "success", Location = "/success.jsp"),
   @Result(name = "input", Location = "/index.jsp")
})
public class Employee extends ActionSupport {
   private String name;
   private int age;

   @Action(value = "/empinfo")
   
   public String execute() {
      return SUCCESS;
   }

   @RequiredFieldValidator( message = "The name is required" )
   
   public String getName() {
      return name;
   }
   
   public void setName(String name) {
      this.name = name;
   }

   @IntRangeFieldValidator(message = "Age must be in between 28 and 65", min = "29", max = "65")
   
   public int getAge() {
      return age;
   }
   
   public void setAge(int age) {
      this.age = age;
   }
}

W tym przykładzie użyliśmy kilku adnotacji. Pozwól, że przejdę przez nie jeden po drugim -

  • Po pierwsze, dołączyliśmy Resultsadnotacja. Adnotacja wyników to zbiór wyników.

  • Pod adnotacją wyników mamy dwie adnotacje wyników. Adnotacje wyników mają rozszerzenienamektóre odpowiadają wynikowi metody wykonania. Zawierają również lokalizację, w którym widok powinien być obsługiwany, odpowiadający wartości zwracanej z funkcji execute ()

  • Następna adnotacja to Actionadnotacja. Służy do dekorowania metody execute (). Metoda Action przyjmuje również wartość będącą adresem URL, na którym wywoływana jest akcja.

  • Wreszcie użyłem dwóch validationadnotacje. Skonfigurowałem wymagany walidator pólname i walidator zakresu liczb całkowitych na agepole. Podałem również niestandardowy komunikat do walidacji.

Pliki konfiguracyjne

Naprawdę nie potrzebujemy struts.xml plik konfiguracyjny, więc usuńmy ten plik i sprawdźmy zawartość web.xml plik -

<?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>
      
      <init-param>
         <param-name>struts.devMode</param-name>
         <param-value>true</param-value>
      </init-param>
   </filter>

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

Teraz kliknij prawym przyciskiem myszy nazwę projektu i kliknij Export > WAR Fileaby utworzyć plik wojny. Następnie wdróż tę WAR w katalogu webapps serwera Tomcat. Na koniec uruchom serwer Tomcat i spróbuj uzyskać dostęp do adresu URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. Spowoduje to wyświetlenie następującego ekranu -

Teraz nie wprowadzaj żadnych wymaganych informacji, po prostu kliknij Submitprzycisk. Zobaczysz następujący wynik -

Wprowadź wymagane informacje, ale wpisz nieprawidłowe pole Od, powiedzmy imię i nazwisko jako „test” i wiek 30 lat, a na koniec kliknij Submitprzycisk. Zobaczysz następujący wynik -

Typy adnotacji Struts 2

Aplikacje Struts 2 mogą używać adnotacji Java 5 jako alternatywy dla konfiguracji właściwości XML i Java. Możesz sprawdzić listę najważniejszych adnotacji związanych z różnymi kategoriami -

Typy adnotacji Struts 2 .