Как упоминалось ранее, Struts предоставляет две формы конфигурации. Традиционным способом является использование файла struts.xml для всех конфигураций. Мы уже видели так много примеров в этом уроке. Другой способ настройки Struts — использование функции аннотаций Java 5. Используя аннотации стоек, мы можем достичь нулевой конфигурации .
Чтобы начать использовать аннотации в своем проекте, убедитесь, что в папку WebContent / WEB-INF / lib включены следующие файлы jar —
- struts2 конвенционные-плагин-xyzjar
- ASM-xyjar
- ANTLR-xyzjar
- Обще-FileUpload-xyzjar
- Обще-ю-xyzjar
- Обще-Ланг-xyjar
- Обще-каротаж xyzjar
- Обще-каротаж апи-xyjar
- FreeMarker-xyzjar
- javassist-.xy.z.GA
- OGNL-xyzjar
- struts2-ядро-xyzjar
- xwork-core.xyzjar
Теперь давайте посмотрим, как можно покончить с конфигурацией, доступной в файле struts.xml, и заменить ее аннотациями.
Чтобы объяснить концепцию аннотации в Struts2, мы должны были бы пересмотреть наш пример проверки, описанный в главе Struts2 Validations .
Здесь мы возьмем пример сотрудника, чье имя и возраст будут записаны с помощью простой страницы, и мы поставим две проверки, чтобы убедиться, что ÜSER всегда вводит имя, а возраст должен быть между 28 и 65.
Давайте начнем с главной страницы JSP примера.
Создать главную страницу
Давайте напишем файл JSP главной страницы index.jsp , который используется для сбора информации о сотрудниках, упомянутой выше.
<%@ 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>
Index.jsp использует тег Struts, который мы еще не рассмотрели, но мы изучим их в главах, связанных с тегами. Но пока предположим, что тег s: textfield печатает поле ввода, а s: submit печатает кнопку отправки. Мы использовали свойство label для каждого тега, которое создает ярлык для каждого тега.
Создать представления
Мы будем использовать файл JSP success.jsp, который будет вызываться в случае, если определенное действие возвращает 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>
Создать действие
Это место, где используется аннотация. Давайте переопределим класс действия Employee с аннотацией, а затем добавим метод с именем validate (), как показано ниже в файле Employee.java . Убедитесь, что ваш класс действий расширяет класс ActionSupport , иначе ваш метод validate не будет выполнен.
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;
}
}
Мы использовали несколько аннотаций в этом примере. Позвольте мне пройти их один за другим —
-
Во-первых, мы включили аннотацию результатов . Аннотация результатов представляет собой набор результатов.
-
Под аннотацией результатов у нас есть две аннотации результата. У аннотаций результата есть имя, которое соответствует результату метода execute. Они также содержат местоположение относительно того, какое представление должно обслуживаться в соответствии с возвращаемым значением execute ().
-
Следующая аннотация — это аннотация действия . Это используется для украшения метода execute (). Метод Action также принимает значение, представляющее собой URL-адрес, по которому вызывается действие.
-
Наконец, я использовал две аннотации проверки . Я настроил обязательный валидатор поля в поле имени и валидатор целочисленного диапазона в поле возраста . Я также указал пользовательское сообщение для проверок.
Во-первых, мы включили аннотацию результатов . Аннотация результатов представляет собой набор результатов.
Под аннотацией результатов у нас есть две аннотации результата. У аннотаций результата есть имя, которое соответствует результату метода execute. Они также содержат местоположение относительно того, какое представление должно обслуживаться в соответствии с возвращаемым значением execute ().
Следующая аннотация — это аннотация действия . Это используется для украшения метода execute (). Метод Action также принимает значение, представляющее собой URL-адрес, по которому вызывается действие.
Наконец, я использовал две аннотации проверки . Я настроил обязательный валидатор поля в поле имени и валидатор целочисленного диапазона в поле возраста . Я также указал пользовательское сообщение для проверок.
Конфигурационные файлы
Нам действительно не нужен файл конфигурации struts.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"
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>
Теперь щелкните правой кнопкой мыши имя проекта и выберите « Экспорт»> «Файл WAR», чтобы создать файл «War». Затем разверните эту WAR в каталоге веб-приложений Tomcat. Наконец, запустите сервер Tomcat и попробуйте получить доступ к URL-адресу http: // localhost: 8080 / HelloWorldStruts2 / index.jsp . Это создаст следующий экран —
Теперь не вводите необходимую информацию, просто нажмите кнопку « Отправить» . Вы увидите следующий результат —
Введите необходимую информацию, но введите неправильное поле From, допустим, что имя называется «test», а возраст — 30, и, наконец, нажмите кнопку « Отправить» . Вы увидите следующий результат —
Struts 2 Типы аннотаций
Приложения Struts 2 могут использовать аннотации Java 5 в качестве альтернативы конфигурации свойств XML и Java. Вы можете проверить список наиболее важных аннотаций, связанных с различными категориями —


