CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos...

18
CONFIGURACIÓN CURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2, indicando que meta tiene cada uno de ellos, así como modificarlos para poder crear configuraciones personalizadas. Los archivos de configuración que se estudiarán en este apartado son: •web.xml •struts.xml •struts-default.xml •struts.properties •struts-plugin.xml

Transcript of CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos...

Page 1: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2, indicando que meta tiene cada uno de ellos, así como modificarlos para poder crear configuraciones personalizadas.

Los archivos de configuración que se estudiarán en este apartado son:

•web.xml

•struts.xml

•struts-default.xml

•struts.properties

•struts-plugin.xml

Page 2: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

LA CONFIGURACIÓN EN STRUS 2

Struts 2 dispone de distintos sistemas de configuración para desarrollar aplicaciones Web, permite configuración mediante archivos XML y/o Anotaciones, además de permitir configuración del propio framework mediante archivo properties.

Los archivos de configuración de Struts 2 son:

•web.xml

•struts.xml

•struts-default.xml

•struts.properties

•struts-plugin.xml

web.xmldescriptor de despliegue es el archivo principal y obligatorio, para permitir el funcionamiento del framework, define el Filter del framework para capturar todas las peticiones.

struts.xmlarchivo opcional de configuración XML de la aplicación, contendrá Results, packages, Actions, Interceptors….

struts-default.xmlconfiguración por defecto del aplicación dada por Struts 2, este archivo se encuentra empaquetado dentro del JAR struts2-core.jar

struts.propertiesarchivo opcional que contendrá la configuración del propio framework.

struts-plugin.xmlarchivo de configuración opcional para definir los plugins que utiliza la aplicación.

Page 3: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

web.xmlEl archivo web.xml es el archivo de configuración obligatorio de despliegue de cualquier aplicación Web Java, se debe crear bajo el directorio /WEB-INF.

En este archivo se define el FilterDispatcher de Struts 2, el cual capturará todas las peticiones recibidas por la aplicación para que las gestione el framework.

Parámetros configuración•config

•actionPackages

•configProvides,

•loggerFactory

•parámetros

Ejemplo

NOTA: Desde la versión 2.1.3 el filtro que normalmente se utilizaba org.apache.struts2.dispatcher.FilterDispatcher se ha marcado como obsoleto (“deprecated”) en su lugar hay

que utilizar la clase StrutsPrepareAndExecuteFilter, definida en este web.xml.

<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="...">

 <filter>

<filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param>

<param-name>actionPackages</param-name> <param-value>ejemplo.capitulo2.actions</param-value>

</init-param> <init-param>

<param-name>config</param-name> <param-value>/WEB-INF/struts/struts-config.xml</param-value>

</init-param></filter>

 <filter-mapping>

<filter-name>struts2</filter-name> <url-pattern>/*</url-pattern>

</filter-mapping>  

<!-- ... -->  </web-app>

configlista de archivos de configuración XML separados por comas, para que se carguen la configuración, por defecto es struts.xml.

actionPackageslista de paquetes Java separados por comas, para que el framework busque clases Action.

configProvideslista de clases Java separadas por comas, que implementan el interface ConfigurationProvider para cargar la configuración.

loggerFactorynombre de la clase que implemente el LoggerFactory.

parametroscualquier tipo de parámetro que el framework gestiona como una constante

Page 4: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts.xmlEl archivo web.xml es el archivo de configuración obligatorio de despliegue de cualquier aplicación Web Java, se debe crear bajo el directorio /WEB-INF.

DocTypeLos archivos de configuración deben cumplir el DOCTYPE de Struts 2<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>

...</struts>

Dividir archivos configuraciónLa configuración de la aplicación se puede dividir en distintos archivos de XML mediante la directiva <include><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>

<include file="Principal.xml"/> <include file="/ejemplo/capitulo1/Capitulo1.xml"/> <include file="Simple.xml"/> <include file="/ejemplo/capitulo2/Capitulo2.xml"/>

</struts>

Sub-elementos•<bean>•<constant>•<include>•<package>

Page 5: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts.xml

<bean>Este elemento define al framework que clases debe crear o qué campos estáticos de un bean son visibles para usar en la aplicación.

Atributos

Ejemplo<struts>

<bean name=”uniqueBean” type=”Interface” class=”ejemplo.capitulo2.MiBeanClass”/></struts>

Atributo Obligatorio Tipo Dato Descripción

class X String La clase Java para ser instanciada o el método estático que sea visible

type String El interface Java que implementa

name String Nombre único para referenciar al bean

scope String El ámbito del bean, los valores permitidos son: default, singleton, request, session y thread.

static Boolean Indica si se utiliza un método estático.

optional Boolean Indica si el bean es opcional

Page 6: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts.xml

<constant> El elemento <constant> se utiliza para sobrescribir un valor de la configuración del framework, definida en el archivo struts.properties.

Atributos

EjemploConstante para activar la configuración de la aplicación en modo desarrollo (struts.devMode):<struts>

<constant name=”struts.devMode” value=”true”/></struts>

Atributo Obligatorio Tipo Dato Descripción

name X String Nombre de la constante

value X String Valor de la constante

Page 7: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts.xml

<include> El elemento <include> permite definir la ruta de otro archivo de configuración de la aplicación, para de esta forma dividir la configuración en varios archivos más fáciles de gestionar. Cada archivo de configuración incluido debe cumplir el mismo DOCTYPE que el archivo struts.xml.

Atributos

Ejemplo<struts>

</include file=”struts-configuracion-1.xml”></include file=”struts-configuracion-2.xml”>…</include file=”struts-configuracion-n.xml”>

</struts>

Atributo Obligatorio Tipo Dato Descripción

file X String Define la ruta del archivo de configuración a incluir

Page 8: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts.xml

<package>El elemento <package> permite organizar los <actions> de una aplicación en módulos, pudiendo existir uno o varios elementos <package>.

Atributos

En función de la configuración del elemento <package> se configuran las URIs de los <action> que contiene el package. Para construir las URI sigue esta estructura:/contexto/namespace/actionName.action

Sub-Elementos•<result-types>•<interceptors>•<default-interceptor-ref>•<default-action-ref>•<default-class-ref>•<global-results>•<global-exception-mappings>•<action>

Atributo Obligatorio Tipo Dato Descripción

name X String Nombre del package, debe ser único

namespace String Namespace para todos los Actions del package

extends String Package padre del que heredar sus configuración

abstract Boolean indica si el package es abstracto

Page 9: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts.xml<package><result-types>Este elemento agrupa elementos del tipo <result-type>.<package ...>

<result-types><result-type name="chain" class="..."/><result-type name="dispatcher" class="..." default="true"/><result-type name="freemarker" class="..."/>

</result-types></package>

Sub-elementos•<result-type>

Registra un Result.

Atributos

Ejemplo<package ...>

<result-types><result-type name="chain" class="..."/><result-type name="dispatcher" class="..." default="true"/><result-type name="freemarker" class="..."/>

</result-types></package>

Atributo Obligatorio Tipo Dato Descripciónname X String Nombre para referenciar al Resultclass X String Clase Java del Resultdefault Boolean Especifica si es el Result por defecto para el package

Page 10: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts.xml<package><interceptors>El elemento <interceptor> permite registra una pila de elementos <interceptor> en el package.<package ...>

<interceptors><interceptor name="validation" class="..."/><interceptor name="logger" class="..."/>

</interceptors></package>

Sub-elementos•<interceptor>

•<interceptor-ref>

•<interceptor-stack>

•<default-interceptor-ref>

Define los interceptors de un <package> o un <action>.

Atributos

Ejemplo<package ...>

<interceptors><interceptor name="validation" class="..."/><interceptor name="logger" class="..."/>

</interceptors></package>

Atributo Obligatorio Tipo Dato Descripciónname X String Nombre para referenciar el Interceptorclass X String Clase Java del Interceptor

Este elemento se utiliza para referenciar a un <interceptor> registrado y se puede utilizar tanto bajo un elemento <interceptor-stack> o bajo <action>.

Ejemplo<package ...>

<interceptors><interceptor name="alias" class="..."/><interceptor name="i18n" class="..."/><interceptor name="validation" class="..."/><interceptor name="logger" class="..."/>

</interceptors><action ...>

<interceptor-ref name="alias"/><interceptor-ref name="i18n"/><interceptor-ref name="validation"/><interceptor-ref name="logger"/><result name="input">/jsp/Input.jsp</result><result>/jsp/Success.jsp</result>

</action></package>

Page 11: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts.xml<package>

<default-action-ref>Este elemento define que action será invocado si no se encuentra coincidencia con la URI en el package. Sólo tiene el atributo name, que define el action por defecto.<package …>

<default-action-ref name=”Login”></package>

<default-class-ref>Este elemento permite sobrescribir la configuración por defecto del framework para que se ejecute una clase distinta a ActionSupport, en caso de que no se defina la clase para un <action>.<package …>

<default-class-ref class=”ejercicio.capitulo2.actions.MiBaseAction”></package>

Page 12: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts.xml<package><global-exception-mappings>El elemento <global-exception-mappings> permite declarar elementos <exception-mapping> para capturar aquellas exceptiones que no son tratadas por las clases Action.

Cualquier <exception-mapping> definido bajo el elemento <global-exception-mappings> se debe referir a un result definido en el elemento <global-results>.<package ...>

<global-results><result name="error">/jsp/Error.jsp</result><result name="sqlError">/jsp/SQLError.jsp</result>

</global-results>

<global-exception-mappings><exception-mapping exception="java.sql.SQLException" result="sqlError"/><exception-mapping exception="java.lang.Exception" result="error"/>

</global-exception-mappings></package>

Sub-elementos•<exception-mapping>

<exception-mapping>El elemento <exception-mapping> permite capturar exceptions producidas en al lógica (Actions).

Atributos

Ejemplo<package ...>

<action name="action" ...><exception-mapping exception="java.lang.Exception" result="error"/><exception-mapping exception="java.sql.SQLException" result="sqlError"/>...

</action></package>

Atributo Obligatorio Tipo Dato Descripciónname String Nombre del exception-mappingexception X String Especifica el tipo de Exception que capturaresult X String Especifica la referencia del result a mostrar.

Page 13: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts.xml<package><global-results>El elemento <global-result> especifica los results globales para el package, los cuales se ejecutarán si un <action> no encuentra su elemento <result>.<package ...>

<global-results><result name="error">/jsp/Error.jsp</result><result name="sqlError">/jsp/SQLError.jsp</result>

</global-results></package>

Sub-elementos•<result>

<result>El elemento <result> define el Result que se debe invocar tras la ejecución del Action (“SUCCESS”, “INPUT”, “ERROR”,…).

Atributos

El elemento <result> permite incluir en su cuerpo elementos <param> o definir un valor de tipo String, que utilizará el Result seleccionado:

Ejemplo<package ...>

<action ...><result>/jsp/success.jsp</result><result name=”FAIL”>/jsp/fail.jsp</result>

</action><action ...>

<result type="chain"><param name="actionName">action3</param><param name="namespace">/namespace2</param>

</result> </action>

</package>

Atributo Obligatorio Tipo Dato Descripciónname String Nombre del result que debe coincidir con la respuesta del Action para ejecutar el Result.

Por defecto es SUCCESStype String Alias del Result que ejecuta el Result, por defecto es dispatcher.

Page 14: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

struts.xml<package><action>El elemento <action> representa un Action.

Atributos

El único atributo obligatorio es name, si no se especifica la clase (class) se ejecutará la clase ActionSupport o la definida en el elemento <default-ref-class>. También si no se especifica el atributo method se ejecutará el método execute().

Ejemplo<package ...>

<action name="login" class="ejercicio.capitulo2.Registro" method="login">...

</action></package>

Sub-elementos•<exception-mapping>•<interceptors>, <interceptor-ref> y <interceptor-stack>•<params>•<results>

Atributo Obligatorio Tipo Dato Descripciónname X String Nombre del Actionclass String Clase Java asociada con el Actionmethod String El nombre del método del Action a invocarconverter String El convertidor para este Action

<exception-mapping>El elemento <exception-mapping> permite capturar exceptions producidas en al lógica (Actions).

Atributos

Ejemplo<package ...>

<action name="action" ...><exception-mapping exception="java.lang.Exception" result="error"/><exception-mapping exception="java.sql.SQLException" result="sqlError"/>...

</action></package>

Atributo Obligatorio Tipo Dato Descripciónname String Nombre del exception-mappingexception X String Especifica el tipo de Exception que capturaresult X String Especifica la referencia del result a mostrar.

Page 15: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts-default.xml

El archivo struts-default.xml es la configuración por defecto y se encuentra empaquetado dentro del JAR struts-core.jar. Define los Interceptors y los tipos Result que implementa el framework, además de definir el package struts-default el cual se puede extender para utilizar la configuración definida por Struts 2.

Page 16: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts.properties

El archivo struts.properties se puede crear para sobrescribir la configuración del framework, este archivo se debe ubicar bajo el directorio /WEB-INF/classes, para que el framework cargue automáticamente los valores de la configuración cuando arranca la aplicación.

Parámetros ConfigurablesLa lista de atributos de la configuración del framework Struts 2 se puede encontrar en el archivo struts-default.properties dentro del JAR struts2-core.jar.

AtributoValor

DefectoDescripción

struts.i18n.encoding UTF-8 codificación por defectostruts.locale idioma por defecto de la aplicaciónstruts.configuration define la clase que gestiona la configuración del

frameworkstruts.objectFactory la factoría de objetos por defecto del framework,

aquí se puede definir “spring” para trabajar con el framework Spring.

struts.objectFactory.spring.autoWire name especifica la tecnología autoWire de Spring cuando trabaja con Struts 2

struts.objectFactory.spring.useClassCache

true indica si en la integración struts-spring se deben cachear las clases

struts.objectFactory.spring.autoWire.alwaysRespect

false asegura que se siempre se respete la tecnología autoWire marcada para Spring

struts.objectTypeDeterminer determinador de objeto por defectostruts.multipart.parser jakarta analizador de las peticiones HTTP Poststruts.multipart.saveDir directorio donde guardar los archivos enviadosstruts.multipart.maxSize 2097152 tamaño máximo en bytes de los archivos que se

podrán enviarstruts.custom.properties carga configuración alternativastruts.mapper.class clase que gestiona los mapeos de URI a Actionstruts.action.extension action extensión por defecto de todas las URI invocado a

los actionstruts.serve.static true permite al Servlet Filter de Struts enviar contenido

estático (CSS, JavaScript).struts.serve.static.browserCache true envía información en la cabecera HTTP (header)

para que el navegador del cliente guarde las peticiones en cache.

struts.enable.DynamicMethodInvocation true permite realizar invocaciones a objetos dinámicamente, como /action!metodo.action

struts.enable.SlashesInActionNames false notación / en las URI /action/metodo.actionstruts.tag.altSyntax true sintaxis alternativa %{} para expresiones OGNLstruts.devMode false permite trabajar en modo desarrollostruts.i18n.reload false permite recargar los archivos de idiomas

dinámicamente durante la ejecuciónstruts.ui.theme xhtml tema por defecto del tag los de Struts 2struts.ui.templateDir template directorio por defecto donde se encuentras los

elementos del template (CSS, JavaScript)struts.ui.templateSuffix ftl tipo template por defecto, puede ser: ftl, vm o jspstruts.configuration.xml.reload false permite recargar dinámicamente la configuración

durante la ejecuciónstruts.velocity.configfile velocity.pro

pertiesarchivo defecto configuración velocity

struts.velocity.contexts lista de VelocityContextstruts.velocity.toolboxlocation localización Velocity Toolboxstruts.url.http.port 80 puerto defecto para construir URI (http)struts.url.https.port 443 puerto defecto para construir URI seguras (https)struts.url.includeParams none posibles valores none, all o getstruts.custom.i18n.resources permite definir archivos de recursos de texto

personalizadosstruts.dispatcher.parametersWorkaround falsestruts.freemarker.manager.classname clase gestor contenido FreeMarkerstruts.freemarker.templatesCache false cache tecnología FreeMarkerstruts.freemarker.beanwrapperCache false cache tecnología FreeMarkerstruts.freemarker.wrapper.altMap truestruts.freemarker.mru.max.strong.size 100struts.xslt.nocache false cache tecnología XSLTstruts.mapper.alwaysSelectFullNamespace

false utilizar siempre el namespace completo

struts.ognl.allowStaticMethodAccess false permite acceder métodos estáticos mediante OGNL

Page 17: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

struts-plugin.xml

El archivo struts-plugin.xml se encuentra en el directorio raíz de cada plug-in de Struts 2 (JAR), como por ejemplo struts2-codebehind-plugin.jar. Se utiliza para definir la configuración de un plugin que se integre con Struts 2.

DocTypeEl archivo de configuración struts-plugin.xml utiliza la misma configuración y DTD que el archivo struts.xml, permitiendo definir de la misma forma elementos: <constant>, <bean>, <include> y <package>, junto a sus sub-elementos.

UbicaciónEl lugar apropiado de este archivo sería empaquetado en el directorio raíz un JAR, el cual fuese un plugin para integrar con el framework, de esta forma el plugin tiene su propia configuración.

Contenido

El contenido por defecto del archivo struts-plugin.xml es:<?xml version="1.0" encoding="UTF-8" ?><!--/* * $Id: struts-plugin.xml 663603 2008-06-05 13:29:25Z musachy $ * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */--><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>

<bean type="com.opensymphony.xwork2.UnknownHandler" class="org.apache.struts2.codebehind.CodebehindUnknownHandler" /><bean type="com.opensymphony.xwork2.config.PackageProvider" name="codebehind"

class="org.apache.struts2.config.ClasspathPackageProvider" />

<constant name="struts.codebehind.pathPrefix" value="/"/><constant name="struts.codebehind.defaultPackage" value="codebehind-default"/><constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />

<package name="codebehind-default" extends="struts-default"></package>

</struts>

Page 18: CONFIGURACIÓNCURSO STRUTS 2 En el siguiente apartado se enumerarán y mostrará los distintos archivos de configuración que dispone el framework Struts 2,

CONFIGURACIÓNCURSO STRUTS 2

RECUERDA QUE…

Completado el apartado recordamos aquellos puntos más importantes, mostrando información de cada uno de los distintos archivos de configuración de Struts 2:

web.xml

struts.xml

struts-default.xml

struts.properties

struts-plugin.xml