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 типа аннотаций .