Учебники

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, что означает, что все фильтры будут проанализированы фильтром 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> является корневым элементом тега, под которым мы объявляем различные пакеты, используя теги <package>. Здесь <пакет> позволяет разделение и модульность конфигурации. Это очень полезно, когда у вас большой проект и проект разделен на разные модули.

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

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

Sr.No Атрибут и описание
1

имя (обязательно)

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

2

продолжается

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

3

Аннотация

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

4

Пространство имен

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

имя (обязательно)

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

продолжается

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

Аннотация

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

Пространство имен

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

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

Мы определяем теги действий, соответствующие каждому 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 является связующим звеном между компонентами просмотра и модели в веб-клиенте, но вам не нужно трогать эти параметры для 99,99% ваших проектов.

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

Sr.No Перехватчик и описание
1

распорки-конфигурации

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

2

форм-бобы

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

3

глобальные форварды

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

4

остросюжетные отображения

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

5

контроллер

В этом разделе настраиваются внутренние компоненты Struts, и они редко используются в практических ситуациях.

6

вставной

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

распорки-конфигурации

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

форм-бобы

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

глобальные форварды

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

остросюжетные отображения

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

контроллер

В этом разделе настраиваются внутренние компоненты Struts, и они редко используются в практических ситуациях.

вставной

Этот раздел сообщает 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

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