Struts 2 - Archivos de configuración

Este capítulo lo llevará a través de la configuración básica que se requiere para Struts 2solicitud. Aquí veremos qué se puede configurar con la ayuda de algunos archivos de configuración importantes comoweb.xml, struts.xml, strutsconfig.xml y struts.properties

Honestamente hablando, puede comenzar a trabajar con solo usar web.xml y struts.xmlarchivos de configuración (como ya ha visto en nuestro capítulo anterior donde nuestro ejemplo funcionó usando estos dos archivos). Sin embargo, para su conocimiento, también le explicaremos sobre otros archivos.

El archivo web.xml

El archivo de configuración web.xml es un archivo de configuración J2EE que determina cómo el contenedor de servlets procesa los elementos de la solicitud HTTP. No es estrictamente un archivo de configuración de Struts2, pero es un archivo que debe configurarse para que Struts2 funcione.

Como se mencionó anteriormente, este archivo proporciona un punto de entrada para cualquier aplicación web. El punto de entrada de la aplicación Struts2 será un filtro definido en el descriptor de implementación (web.xml). Por lo tanto, definiremos una entrada de la clase FilterDispatcher en web.xml. El archivo web.xml debe crearse en la carpetaWebContent/WEB-INF.

Este es el primer archivo de configuración que necesitará configurar si está comenzando sin la ayuda de una plantilla o herramienta que lo genere (como Eclipse o Maven2).

A continuación se muestra el contenido del archivo web.xml que usamos en nuestro último ejemplo.

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

Tenga en cuenta que asignamos el filtro Struts 2 a /*y no a /*.actionlo que significa que todas las URL serán analizadas por el filtro struts. Cubriremos esto cuando repasemos el capítulo de Anotaciones.

El archivo Struts.xml

los struts.xmlEl archivo contiene la información de configuración que modificará a medida que se desarrollen las acciones. Este archivo se puede usar para anular la configuración predeterminada de una aplicación, por ejemplo struts.devMode = false y otras configuraciones que se definen en el archivo de propiedades. Este archivo se puede crear en la carpetaWEB-INF/classes.

Echemos un vistazo al archivo struts.xml que creamos en el ejemplo de Hello World explicado en el capítulo anterior.

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

Lo primero a tener en cuenta es la DOCTYPE. Todos los archivos de configuración de struts deben tener el tipo de documento correcto, como se muestra en nuestro pequeño ejemplo. <struts> es el elemento de etiqueta raíz, bajo el cual declaramos diferentes paquetes usando etiquetas <package>. Aquí <package> permite la separación y modularización de la configuración. Esto es muy útil cuando tienes un proyecto grande y el proyecto está dividido en diferentes módulos.

Por ejemplo, si su proyecto tiene tres dominios: business_application, customer_application y staff_application, entonces puede crear tres paquetes y almacenar las acciones asociadas en el paquete apropiado.

La etiqueta del paquete tiene los siguientes atributos:

No Señor Atributo y descripción
1

name (required)

El identificador único del paquete

2

extends

¿De qué paquete se extiende este paquete? De forma predeterminada, utilizamos struts-default como paquete base.

3

abstract

Si se marca como verdadero, el paquete no está disponible para el consumo del usuario final.

4

namespace

Espacio de nombre único para las acciones

los constant La etiqueta junto con los atributos de nombre y valor deben usarse para anular cualquiera de las siguientes propiedades definidas en default.properties, como si acabáramos de establecer struts.devModepropiedad. Ajustestruts.devMode La propiedad nos permite ver más mensajes de depuración en el archivo de registro.

Definimos action Las etiquetas corresponden a cada URL a la que queremos acceder y definimos una clase con el método execute () a la que se accederá cada vez que accedamos a la URL correspondiente.

Los resultados determinan qué se devuelve al navegador después de que se ejecuta una acción. La cadena devuelta por la acción debe ser el nombre de un resultado. Los resultados se configuran por acción como antes, o como un resultado "global", disponible para cada acción en un paquete. Los resultados tienen opcionalname y typeatributos. El valor de nombre predeterminado es "éxito".

El archivo Struts.xml puede crecer mucho con el tiempo, por lo que dividirlo por paquetes es una forma de modularizarlo, pero Strutsofrece otra forma de modularizar el archivo struts.xml. Puede dividir el archivo en varios archivos xml e importarlos de la siguiente manera.

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

El otro archivo de configuración que no hemos cubierto es el struts-default.xml. Este archivo contiene los ajustes de configuración estándar para Struts y no tendría que tocar estos ajustes para el 99,99% de sus proyectos. Por esta razón, no vamos a entrar en demasiados detalles en este archivo. Si está interesado, eche un vistazo a ladefault.properties archivo disponible en el archivo struts2-core-2.2.3.jar.

El archivo Struts-config.xml

El archivo de configuración struts-config.xml es un enlace entre los componentes Ver y Modelo en el Cliente Web, pero no tendría que tocar estas configuraciones para el 99,99% de sus proyectos.

El archivo de configuración básicamente contiene los siguientes elementos principales:

No Señor Interceptor y descripción
1

struts-config

Este es el nodo raíz del archivo de configuración.

2

form-beans

Aquí es donde asigna su subclase ActionForm a un nombre. Utiliza este nombre como un alias para su ActionForm en el resto del archivo strutsconfig.xml, e incluso en sus páginas JSP.

3

global forwards

Esta sección asigna una página en su aplicación web a un nombre. Puede utilizar este nombre para hacer referencia a la página real. Esto evita la codificación de URL en sus páginas web.

4

action-mappings

Aquí es donde declaras los controladores de formulario y también se conocen como asignaciones de acciones.

5

controller

Esta sección configura los componentes internos de Struts y rara vez se utiliza en situaciones prácticas.

6

plug-in

Esta sección le dice a Struts dónde encontrar sus archivos de propiedades, que contienen indicaciones y mensajes de error

A continuación se muestra el archivo struts-config.xml de muestra:

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

Para obtener más detalles sobre el archivo struts-config.xml, consulte la documentación de struts.

El archivo Struts.properties

Este archivo de configuración proporciona un mecanismo para cambiar el comportamiento predeterminado del marco. En realidad, todas las propiedades contenidas en elstruts.properties El archivo de configuración también se puede configurar en el web.xml utilizando el init-param, además de usar la etiqueta constante en el struts.xmlarchivo de configuración. Pero, si desea mantener las cosas separadas y más específicas, puede crear este archivo en la carpetaWEB-INF/classes.

Los valores configurados en este archivo anularán los valores predeterminados configurados en default.propertiesque está contenido en la distribución struts2-core-xyzjar. Hay un par de propiedades que podría considerar cambiar usando elstruts.properties archivo -

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

Aquí cualquier línea que comience con hash (#) se asumirá como un comentario y será ignorado por Struts 2.