Учебники

Struts 2 — Аннотации

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

Struts 2 Аннотации Типы .