Struts 2 - Аннотации
Как упоминалось ранее, Struts предоставляет две формы конфигурации. Традиционный способ - использоватьstruts.xmlфайл для всех конфигураций. Мы видели так много примеров в этом руководстве. Другой способ настройки Struts - использование функции аннотаций Java 5. Используя аннотации распорок, мы можем добитьсяZero Configuration.
Чтобы начать использовать аннотации в своем проекте, убедитесь, что вы включили следующие файлы jar в свой WebContent/WEB-INF/lib папка -
- 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
Теперь давайте посмотрим, как можно избавиться от конфигурации, доступной в struts.xml файл и замените его аннотациями.
Чтобы объяснить концепцию аннотации в Struts2, нам пришлось бы пересмотреть наш пример проверки, описанный в главе «Проверка достоверности Struts2» .
Здесь мы возьмем пример сотрудника, имя и возраст которого будут фиксироваться с помощью простой страницы, и мы проведем две проверки, чтобы убедиться, что Ü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 печатает кнопку отправки. Мы использовали свойство метки для каждого тега, которое создает метку для каждого тега.
Создать представления
Мы будем использовать файл 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 class, иначе ваш метод проверки не будет выполнен.
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;
}
}
В этом примере мы использовали несколько аннотаций. Позвольте мне пройти их по одному -
Во-первых, мы включили Resultsаннотация. Аннотация результатов - это набор результатов.
Под аннотацией результатов у нас есть две аннотации результатов. Аннотации результатов имеютnameкоторые соответствуют результату выполнения метода. Они также содержат информацию о том, какое представление должно обслуживаться в соответствии с возвращаемым значением из execute ().
Следующая аннотация - это Actionаннотация. Это используется для украшения метода execute (). Метод Action также принимает значение, которое представляет собой URL-адрес, по которому вызывается действие.
Наконец, я использовал два validationаннотации. Я настроил валидатор обязательного поля наname поле и валидатор целочисленного диапазона на ageполе. Я также указал специальное сообщение для проверок.
Файлы конфигурации
Нам действительно не нужно 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>
Теперь щелкните правой кнопкой мыши имя проекта и нажмите Export > WAR Fileдля создания файла War. Затем разверните эту WAR в каталоге веб-приложений Tomcat. Наконец, запустите сервер Tomcat и попробуйте получить доступ к URL-адресуhttp://localhost:8080/HelloWorldStruts2/index.jsp. Это создаст следующий экран -
Теперь не вводите никакой необходимой информации, просто нажмите на Submitкнопка. Вы увидите следующий результат -
Введите необходимую информацию, но введите неправильное поле «От», скажем, имя «тест», возраст 30 и, наконец, нажмите Submitкнопка. Вы увидите следующий результат -
Типы аннотаций Struts 2
Приложения Struts 2 могут использовать аннотации Java 5 в качестве альтернативы конфигурации свойств XML и Java. Вы можете проверить список наиболее важных аннотаций, относящихся к разным категориям -
Struts 2 типа аннотаций .