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

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

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

Если для работы WEB приложения появится необходимость работать с формой, то необходимо еще установить библиотеку commons-beanutil-*.jar, для работы с регулярными выражениями - oro-.*.jar. При работе с шаблонами страницы не обойтись без библиотек struts-tiles-*.jar, tiles-*.jar. Таким образом функциональные свойства WEB приложения определяют пакет используемых библиотек.
Все библиотеки фреймворков в WEB-приложениях располагаются в директории WEB-INF/lib.

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

1. Подключение FilterDispatcher к приложению в дескрипторе web.xml

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

  <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 приложения.

  <?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 запроса пользователя к приложению.

  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>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <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 - это директория вашего приложения.


Rambler's Top100 Рейтинг@Mail.ru