Как упоминалось ранее, 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. Вы можете проверить список наиболее важных аннотаций, связанных с различными категориями —