Struts 2 - Файлы конфигурации

Эта глава проведет вас через базовую настройку, которая требуется для Struts 2применение. Здесь мы увидим, что можно настроить с помощью нескольких важных файлов конфигурации, таких какweb.xml, struts.xml, strutsconfig.xml и struts.properties

Честно говоря, вы можете начать работать, просто используя web.xml и struts.xmlфайлы конфигурации (как вы уже видели в нашей предыдущей главе, где наш пример работал с этими двумя файлами). Однако, для вашего сведения, мы также объясним и другие файлы.

Файл web.xml

Файл конфигурации web.xml - это файл конфигурации J2EE, который определяет, как элементы HTTP-запроса обрабатываются контейнером сервлета. Это не строго файл конфигурации Struts2, но это файл, который необходимо настроить для работы Struts2.

Как обсуждалось ранее, этот файл обеспечивает точку входа для любого веб-приложения. Точкой входа в приложение Struts2 будет фильтр, определенный в дескрипторе развертывания (web.xml). Следовательно, мы определим запись класса FilterDispatcher в web.xml. Файл web.xml необходимо создать в папкеWebContent/WEB-INF.

Это первый файл конфигурации, который вам нужно будет настроить, если вы начинаете работу без помощи шаблона или инструмента, который его генерирует (например, Eclipse или Maven2).

Ниже приводится содержимое файла 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>

Обратите внимание, что мы сопоставляем фильтр Struts 2 с /*, а не /*.actionЭто означает, что все URL-адреса будут проанализированы фильтром struts. Мы рассмотрим это, когда перейдем к главе «Аннотации».

Файл Struts.xml

В struts.xmlФайл содержит информацию о конфигурации, которую вы будете изменять по мере разработки действий. Этот файл можно использовать для переопределения настроек по умолчанию для приложения, например struts.devMode = false, и других настроек, определенных в файле свойств. Этот файл можно создать в папкеWEB-INF/classes.

Давайте посмотрим на файл struts.xml, который мы создали в примере Hello World, описанном в предыдущей главе.

<?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>
      
      <-- more actions can be listed here -->

   </package>
   <-- more packages can be listed here -->

</struts>

Первое, что следует отметить, это DOCTYPE. Все файлы конфигурации struts должны иметь правильный тип документа, как показано в нашем небольшом примере. <struts> - это элемент корневого тега, под которым мы объявляем разные пакеты с помощью тегов <package>. Здесь <package> позволяет разделить и разбить конфигурацию на модули. Это очень полезно, когда у вас большой проект, и проект разделен на разные модули.

Например, если в вашем проекте три домена - business_application, customer_application и staff_application, вы можете создать три пакета и сохранить связанные действия в соответствующем пакете.

Тег пакета имеет следующие атрибуты -

Старший Нет Атрибут и описание
1

name (required)

Уникальный идентификатор пакета

2

extends

Из какого пакета распространяется этот пакет? По умолчанию в качестве базового пакета мы используем struts-default.

3

abstract

Если отмечено true, пакет недоступен для конечного пользователя.

4

namespace

Уникальное пространство имен для действий

В constant тег вместе с атрибутами name и value следует использовать для переопределения любого из следующих свойств, определенных в default.properties, как мы только что установили struts.devModeсвойство. Настройкаstruts.devMode свойство позволяет нам видеть больше отладочных сообщений в файле журнала.

Мы определяем action теги соответствуют каждому URL-адресу, к которому мы хотим получить доступ, и мы определяем класс с методом execute (), который будет доступен всякий раз, когда мы будем обращаться к соответствующему URL-адресу.

Результаты определяют, что возвращается в браузер после выполнения действия. Строка, возвращаемая из действия, должна быть именем результата. Результаты настраиваются для каждого действия, как указано выше, или как «глобальный» результат, доступный для каждого действия в пакете. Результаты указывать необязательноname и typeатрибуты. Значение имени по умолчанию - «успех».

Файл Struts.xml может со временем разрастаться, поэтому разбиение его по пакетам - один из способов его модульного построения, но Strutsпредлагает другой способ разбить файл struts.xml на модули. Вы можете разделить файл на несколько файлов 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>
   <include file="my-struts1.xml"/>
   <include file="my-struts2.xml"/>
</struts>

Другой файл конфигурации, который мы не рассмотрели, - это struts-default.xml. Этот файл содержит стандартные настройки конфигурации для Struts, и вам не нужно изменять эти настройки для 99,99% ваших проектов. По этой причине мы не будем вдаваться в подробности этого файла. Если вам интересно, загляните вdefault.properties файл доступен в файле struts2-core-2.2.3.jar.

Файл Struts-config.xml

Файл конфигурации struts-config.xml является связующим звеном между компонентами View и Model в веб-клиенте, но вам не нужно изменять эти настройки для 99,99% ваших проектов.

Файл конфигурации в основном содержит следующие основные элементы:

Старший Нет Перехватчик и описание
1

struts-config

Это корневой узел файла конфигурации.

2

form-beans

Здесь вы сопоставляете свой подкласс ActionForm с именем. Вы используете это имя в качестве псевдонима для вашей ActionForm во всем остальном файле strutsconfig.xml и даже на страницах JSP.

3

global forwards

Этот раздел сопоставляет страницу вашего веб-приложения с именем. Вы можете использовать это имя для ссылки на настоящую страницу. Это позволяет избежать жесткого кодирования URL-адресов на ваших веб-страницах.

4

action-mappings

Здесь вы объявляете обработчики форм, также известные как сопоставления действий.

5

controller

Этот раздел настраивает внутреннее устройство Struts и редко используется в практических ситуациях.

6

plug-in

Этот раздел сообщает Struts, где найти файлы свойств, которые содержат подсказки и сообщения об ошибках.

Ниже приведен пример файла struts-config.xml -

<?xml version = "1.0" Encoding = "ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
   "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">

<struts-config>

   <!-- ========== Form Bean Definitions ============ -->
   <form-beans>
      <form-bean name = "login" type = "test.struts.LoginForm" />
   </form-beans>

   <!-- ========== Global Forward Definitions ========= -->
   <global-forwards>
   </global-forwards>

   <!-- ========== Action Mapping Definitions ======== -->
   <action-mappings>
      <action
         path = "/login"
         type = "test.struts.LoginAction" >

         <forward name = "valid" path = "/jsp/MainMenu.jsp" />
         <forward name = "invalid" path = "/jsp/LoginView.jsp" />
      </action>
   </action-mappings>

   <!-- ========== Controller Definitions ======== -->
   <controller contentType = "text/html;charset = UTF-8"
      debug = "3" maxFileSize = "1.618M" locale = "true" nocache = "true"/>

</struts-config>

Для получения более подробной информации о файле struts-config.xml, пожалуйста, проверьте документацию по struts.

Файл Struts.properties

Этот файл конфигурации предоставляет механизм для изменения поведения платформы по умолчанию. Фактически, все свойства, содержащиеся вstruts.properties файл конфигурации также можно настроить в web.xml используя init-param, а также используя постоянный тег в struts.xmlконфигурационный файл. Но, если вы хотите, чтобы вещи были отдельными и более конкретными, вы можете создать этот файл в папкеWEB-INF/classes.

Значения, настроенные в этом файле, переопределят значения по умолчанию, настроенные в default.propertiesкоторый содержится в дистрибутиве struts2-core-xyzjar. Есть несколько свойств, которые вы можете изменить с помощьюstruts.properties файл -

### When set to true, Struts will act much more friendly for developers
struts.devMode = true

### Enables reloading of internationalization files
struts.i18n.reload = true

### Enables reloading of XML configuration files
struts.configuration.xml.reload = true

### Sets the port that the server is run on
struts.url.http.port = 8080

Здесь любая строка, начинающаяся с hash (#) будет восприниматься как комментарий и игнорироваться Struts 2.