¿Cómo pongo en funcionamiento Struts?
Como todo framework, Struts consiste en una librería de clases y una serie de configuraciones por lo que su instalación es muy similar en todos los servidores de aplicaciones que provean (o puedan agregársele) soporte de:
- Java Development Kit (version 1.2 or posterior)
- Servlet Container (version 2.2 or posterior)
- JavaServer Pages (JSP) (version 1.1 o posterior)
- XML Parser compatible con Java API for XML Parsing (JAXP) specification, 1.1 o posterior
- JDBC 2.0 Optional Package Classes
La instalación consiste en:
- Obtener la distribución binaria desde http://jakarta.apache.org/struts/index.html#Acquiring y descomprimirla
- Copiar lib/commons-*.jar (clases comunes de Jakarta), lib/struts.jar (JAR de las clases Struts) y lib/struts-*.tld (Tag Library Descriptors de los Tags de Struts) en el directorio WEB-INF/lib de la aplicación
- Modificar el WEB-INF/web.xml de la aplicación para incluir un elemento "<servlet>" que define el Servlet del Controller y un "<servlet-mapping>" que establezca las peticiones que éste atiende. Por ejemplo:
<web-app>
...
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>com.empresa.aplicacion.ApplicationResources</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
...
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
...
</web-app>
Nota: com.empresa.aplicacion.ApplicationResources es la localización del archivo ".properties" del idioma principal de la aplicación
- Modificar el WEB-INF/web.xml de la aplicación para incluir la definición de los TagLibraries. Por ejemplo:
<web-app>
...
<taglib>
<taglib-uri>strutsBean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>strutsHtml</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>strutsLogic </taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<display-name></display-name>
<description></description>
...
</web-app>
- Agregar la definición de las TagLibraries en las JSPs que se utilicen. Ejemplo:
<%@ taglib uri="strutsBean" prefix="bean" %>
<%@ taglib uri="strutsHtml" prefix="html" %>
<%@ taglib uri="strutsLogic" prefix="logic" %>
- Crear un struts-config.xml donde se configure el Controller según se describió en las secciones anteriores.
Si bien están comenzando a surgir aplicaciones que gestionan la configuración de Struts en forma visual (Camino, StrutsConsole, etc.) es muy recomendable familiarizarse primero con la configuración manual antes de utilizar estas herramientas