Учебники

Struts 2 — Пример Hello World

Как вы уже узнали из архитектуры Struts 2, когда вы щелкаете гиперссылку или отправляете HTML-форму в веб-приложении Struts 2, входная информация собирается контроллером, который отправляется в класс Java с именем Actions. После того, как Действие выполнено, результат выбирает ресурс для отображения ответа. Ресурс, как правило, представляет собой JSP, но это также может быть файл PDF, электронная таблица Excel или окно апплета Java.

Предполагая, что вы уже создали свою среду разработки. Теперь давайте приступим к созданию нашего первого проекта Hello World Struts2 . Целью этого проекта является создание веб-приложения, которое собирает имя пользователя и отображает «Hello World», за которым следует имя пользователя.

Мы должны были бы создать следующие четыре компонента для любого проекта Struts 2 —

Sr.No Компоненты и описание
1

действие

Создайте класс действий, который будет содержать полную бизнес-логику и контролировать взаимодействие между пользователем, моделью и представлением.

2

Перехватчики

При необходимости создайте перехватчики или используйте существующие перехватчики. Это часть контроллера.

3

Посмотреть

Создайте JSP для взаимодействия с пользователем, чтобы получить ввод и представить окончательные сообщения.

4

Конфигурационные файлы

Создайте файлы конфигурации для соединения Action, View и Controllers. Это файлы struts.xml, web.xml, struts.properties.

действие

Создайте класс действий, который будет содержать полную бизнес-логику и контролировать взаимодействие между пользователем, моделью и представлением.

Перехватчики

При необходимости создайте перехватчики или используйте существующие перехватчики. Это часть контроллера.

Посмотреть

Создайте JSP для взаимодействия с пользователем, чтобы получить ввод и представить окончательные сообщения.

Конфигурационные файлы

Создайте файлы конфигурации для соединения Action, View и Controllers. Это файлы struts.xml, web.xml, struts.properties.

Я собираюсь использовать Eclipse IDE, чтобы все необходимые компоненты были созданы в рамках динамического веб-проекта. Давайте начнем с создания динамического веб-проекта.

Создать динамический веб-проект

Запустите Eclipse, затем выберите «Файл»> «Создать»> «Динамический веб-проект», введите имя проекта как HelloWorldStruts2 и задайте остальные параметры, как показано на следующем экране.

Hello World Sturts1

Выберите все параметры по умолчанию на следующих экранах и, наконец, установите флажок « Создать дескриптор развертывания Web.xml» . Это создаст динамичный веб-проект для вас в Eclipse. Теперь перейдите в Windows> Показать представление> Project Explorer , и вы увидите окно вашего проекта примерно так:

Hello World Sturts2

Теперь скопируйте следующие файлы из папки C Struts 2 lib C: \ struts-2.2.3 \ lib в папку WEB-INF \ lib нашего проекта. Для этого вы можете просто перетащить все следующие файлы в папку WEB-INF \ lib.

  • Обще-FileUpload-xyzjar
  • Обще-ю-xyzjar
  • Обще-Ланг-xyjar
  • Обще-каротаж xyzjar
  • Обще-каротаж апи-xyjar
  • FreeMarker-xyzjar
  • javassist-.xy.z.GA
  • OGNL-xyzjar
  • struts2-ядро-xyzjar
  • xwork-core.xyzjar

Создать класс действий

Класс действий является ключом к приложению Struts 2, и мы реализуем большую часть бизнес-логики в классе действий. Итак, давайте создадим Java-файл HelloWorldAction.java в разделе Java Resources> src с именем пакета com.tutorialspoint.struts2 с содержимым, приведенным ниже.

Класс Action отвечает на действие пользователя, когда пользователь щелкает URL-адрес. Выполняется один или несколько методов класса Action и возвращается результат String. На основе значения результата отображается конкретная страница JSP.

package com.tutorialspoint.struts2;

public class HelloWorldAction {
   private String name;

   public String execute() throws Exception {
      return "success";
   }
   
   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

Это очень простой класс с одним свойством под названием «имя». У нас есть стандартные методы получения и установки для свойства «name» и метод execute, который возвращает строку «success».

Каркас Struts 2 создаст объект класса HelloWorldAction и вызовет исполняемый метод в ответ на действие пользователя. Вы помещаете свою бизнес-логику в этот метод, который в итоге возвращает константу String. Другими словами, для каждого URL вам нужно будет реализовать один класс действия, и вы можете использовать это имя класса непосредственно в качестве имени действия или сопоставить его с другим именем, используя файл struts.xml, как показано ниже.

Создать представление

Нам нужен JSP для представления окончательного сообщения, эта страница будет вызываться платформой Struts 2, когда произойдет предопределенное действие, и это отображение будет определено в файле struts.xml. Итак, давайте создадим нижеприведенный jsp-файл HelloWorld.jsp в папке WebContent в вашем проекте eclipse. Для этого щелкните правой кнопкой мыши папку WebContent в проводнике проекта и выберите « Создать»> «Файл JSP» .

<%@ page contentType = "text/html; charset = UTF-8" %>
<%@ taglib prefix = "s" uri = "/struts-tags" %>

<html>
   <head>
      <title>Hello World</title>
   </head>
   
   <body>
      Hello World, <s:property value = "name"/>
   </body>
</html>

Директива taglib сообщает контейнеру сервлетов, что на этой странице будут использоваться теги Struts 2 и что этим тегам будет предшествовать s .

Тег s: property отображает значение свойства класса действия «name>, которое возвращается методом getName () класса HelloWorldAction.

Создать главную страницу

Нам также нужно создать index.jsp в папке WebContent. Этот файл будет служить начальным URL-адресом действия, по которому пользователь может щелкнуть, чтобы сообщить платформе Struts 2, чтобы она вызывала определенный метод класса HelloWorldAction и отображала представление HelloWorld.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>Hello World</title>
   </head>
   
   <body>
      <h1>Hello World From Struts2</h1>
      <form action = "hello">
         <label for = "name">Please enter your name</label><br/>
         <input type = "text" name = "name"/>
         <input type = "submit" value = "Say Hello"/>
      </form>
   </body>
</html>

Действие hello, определенное в приведенном выше файле представления, будет сопоставлено с классом HelloWorldAction и его методом execute с использованием файла struts.xml. Когда пользователь нажимает кнопку «Отправить», это заставляет платформу Struts 2 запустить метод execute, определенный в классе HelloWorldAction и основанный на возвращенном значении метода, соответствующее представление будет выбрано и отображено как ответ.

Конфигурационные файлы

Нам нужно сопоставление, чтобы связать URL-адрес, класс HelloWorldAction (Model) и HelloWorld.jsp (представление). Сопоставление сообщает платформе Struts 2, какой класс будет реагировать на действия пользователя (URL), какой метод этого класса будет выполнен и какое представление будет отображаться на основе результата String, который возвращает метод.

Итак, давайте создадим файл с именем struts.xml . Поскольку Struts 2 требует наличия Struts.xml в папке классов. Следовательно, создайте файл struts.xml в папке WebContent / WEB-INF / classes. Eclipse не создает папку «classes» по умолчанию, поэтому вам нужно сделать это самостоятельно. Для этого щелкните правой кнопкой мыши папку WEB-INF в проводнике проекта и выберите « Создать»> «Папка» . Ваш struts.xml должен выглядеть так:

<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <constant name = "struts.devMode" value = "true" />
   
   <package name = "helloworld" extends = "struts-default">
     <action name = "hello" 
         class = "com.tutorialspoint.struts2.HelloWorldAction" 
         method = "execute">
         <result name = "success">/HelloWorld.jsp</result>
      </action>
   </package>
</struts>

Несколько слов, которые необходимо понять относительно вышеуказанного файла конфигурации. Здесь мы устанавливаем для константы struts.devMode значение true , потому что мы работаем в среде разработки, и нам нужно увидеть некоторые полезные сообщения журнала. Затем мы определяем пакет под названием helloworld .

Создание пакета полезно, когда вы хотите сгруппировать свои действия вместе. В нашем примере мы назвали наше действие «hello», которое соответствует URL /hello.action и поддерживается HelloWorldAction.class . Метод execute для HelloWorldAction.class — это метод, который запускается при вызове URL /hello.action . Если результат метода execute возвращает «success», то мы переводим пользователя в HelloWorld.jsp .

Следующим шагом является создание файла web.xml, который является точкой входа для любого запроса в Struts 2. Точкой входа приложения Struts2 будет фильтр, определенный в дескрипторе развертывания (web.xml). Следовательно, мы определим запись класса org.apache.struts2.dispatcher.FilterDispatcher в web.xml. Файл web.xml необходимо создать в папке WEB-INF в разделе WebContent. Eclipse уже создал скелетный файл 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>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

Мы указали index.jsp в качестве файла приветствия. Затем мы настроили фильтр Struts2 для запуска по всем URL-адресам (т. Е. По любому URL-адресу, соответствующему шаблону / *).

Включить подробный журнал

Вы можете включить все функции ведения журнала при работе со Struts 2, создав файл logging.properties в папке WEB-INF / classes . Сохраните следующие две строки в вашем файле свойств —

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = \
   java.util.logging.ConsoleHandler

В файле logging.properties по умолчанию указывается ConsoleHandler для маршрутизации ведения журнала на стандартный вывод, а также FileHandler. Порог уровня журнала обработчика может быть установлен с помощью SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST или ALL.

Вот и все. Мы готовы запустить наше приложение Hello World с использованием инфраструктуры Struts 2.

Порядок оформления заявки

Щелкните правой кнопкой мыши имя проекта и выберите « Экспорт»> «Файл WAR», чтобы создать файл «War».

Затем разверните эту WAR в каталоге веб-приложений Tomcat.

Наконец, запустите сервер Tomcat и попробуйте получить доступ к URL-адресу http: // localhost: 8080 / HelloWorldStruts2 / index.jsp . Это даст вам следующий экран —

Hello World Struts4

Введите значение «Struts2» и отправьте страницу. Вы должны увидеть следующую страницу

Hello World Struts5

Обратите внимание, что вы можете определить индекс как действие в файле struts.xml, и в этом случае вы можете вызвать страницу индекса как http: // localhost: 8080 / HelloWorldStruts2 / index.action . Проверьте ниже, как вы можете определить индекс как действие —