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 .