Инсталляция и настройка Stuts2

Struts2, как и любой фреймворк, представляет из себя набор Java библиотек, которые необходимо добавить в WEB проект. Для работы приложения с фреймворком Struts2 необходимо подключить фильтр (FilterDispatcher), выполняющий роль контролера в MVC. Сама настройка приложения выполняется при помощи файлов web.xml, struts.xml и struts.properties.

Минимальный набор требуемых библиотек Struts2

  • struts2-core*.jar - ядро Struts2;
  • xwork-*.jar - фреймворк построен на базе XWork;
  • ognl*.jar - используется в качестве языка выражений OGNL;
  • freemarker*.jar - кастом теги JSP написаны на freemarker;
  • commons-fileupload-*.jar - библиотека загрузки файлов;
  • commons-io-*.jar - библиотека для работы с операциями ввода вывода;
  • commons-logging-*.jar - Struts 2 использует commons logging API для протоколирования.
Если для работы WEB приложения появится необходимость работать с формой, то необходимо еще установить библиотеку commons-beanutil-*.jar, для работы с регулярными выражениями - oro-.*.jar. При работе с шаблонами страницы не обойтись без библиотек struts-tiles-*.jar, tiles-*.jar. Таким образом функциональные свойства WEB приложения определяют пакет используемых библиотек.
Все библиотеки фреймворков в WEB-приложениях располагаются в директории WEB-INF/lib.

Рассмотрим настройку и проверку функционирования Struts2 на базе простого примера Hello, World!  

1. Подключение FilterDispatcher к приложению

Библиотека Struts2подключается к WEB приложению В дескрипторе приложения web.xml

   <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>

FilterDispatcher перехватывает все обращения браузера клиента к серверу, подобно сервлетному фильтру.

2. Настройка свойств в файле struts.properties

В нашем примере файл struts.properties не используется, но он является составной частью фраймворка Struts2. Файл struts.properties позволяет изменить поведение фреймворка и сделать более дружелюбной среду разработки. В большинстве случаев не требуется дополнительной настройки этого файла. Все свойства, настраиваемые в struts.properties, можно также установить с использованием тега в web.xml, либо при помощи тега в struts.xml.

Свойства по умолчанию находятся в файле default.properties библиотеки struts2-core*.jar. Чтобы изменить свойства необходимо создать файл struts.properties в директории WEB-INF/classes и внести в него параметры. Новые значения заменят значения по умолчанию.

Для более удобной отладки и тестирования приложений можно внести следующие измения :
  • struts.i18n.reload = true – позволяет перегружать файлы, в которых хранятся данные локализации. При отсутствии файлов локализации, данное свойство можно не использовать;
  • struts.devMode = true – включает режим отладки, в котором Struts2 выводит более подробную информацию в журнал протоколирования (log);
  • struts.configuration.xml.reload = true – позволяет перегружать файлы XML конфигурации без перезапуска приложения в рамках сервера приложений.
 

3. Определение действий в файле конфигурации struts.xml

Файл конфигурации struts.xml, располагаемый в директории WEB-INF/classes, содержит всю информацию о структуре и бизнес-логике WEB приложения.
Листинг файла 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> <package name="default" namespace="/" extends="struts-default"> <action name="HelloWorld" class="com.examples.HelloWorldAction"> <result>HelloWorld.jsp</result> </action> </package name="default"> </struts>

Внутри <struts> располагаются пакеты <package> действий, которые имеют общие свойства в рамках одной области ( namespace ). namespace занимает особое место в описании пакета и может использоваться в обращении к действиям пакета.

Рассмотрим пример двух действий авторизации Authentication и регистрации Registration, располагаемые в области Default, и одного действия Wellcome, расположенного в области Private. Каждое действие связано с соответствующей страницей *.jsp. Если Вы, допустим, находитесь на странице авторизации Authentication.jsp, то для обращения к странице регистрации можно использовать запись Registration.action. Для обращения к действию Wellcome области Private необходимо указывать и ее наименование Private/Wellcome.action.
Атрибуты для тега <package>
  • name – название пакета. Должно быть уникальным в приложении (файле конфигурации);
  • extends – название расширяемого (родительского) пакета;
  • namespace – область пакета, определяющая обращение к действиям пакета;
  • abstract – если стоит признак true значит пакет абстрактный и используется только для конфигурации свойств, действия в этом пакете не будут доступны для вызова;
  • action - используется для определения действия Action.

4. Создание действия HelloWorld.java

Действия (Action) - это основной строительный элемент. Struts2 это действие-ориентированный фреймворк, и действия выполняют основную работу при обработке HTTP запроса пользователя к приложению.
Листинг Action-класса HelloWorld.java
package com.examples; public class HelloWorldAction { private String message; public String execute () { setMessage ("Доброе утро, Мир!"); return "success"; } public String getMessage () { return message; } public void setMessage ( String message ) { this.message = message; } }

5. Создание тестовой JSP-страницы HelloWorld.jsp

Чтобы отобразить результаты нашего действия создаем страницу HelloWorld.jsp

<?xml version="1.0" encoding="utf-8" ?>
  
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
<html>
    <head>
         <title>Hello World Page</title>
    </head>
	
    <body>
         Сообщение от Struts2 : <s:property value="message"/>
    </body> 
</html> 

На JSP-странице <%@ taglib prefix="s" uri="/struts-tags" %> подключает библиотеку тегов Struts2. Тег <s:property value="message"/> отображает свойство message действия HelloWorldAction.

После выполнения всех шагов можно тестировать первое приложение. Для этого необходимо вызвать действие HelloWorld.action. URL обращения к приложению может выглядеть следующим образом - http://localhost:80/dir/HelloWorld.action, где dir - это директория вашего приложения.