configuraciÓncurso struts 2 en el siguiente apartado se enumerarán y mostrará los distintos...
Post on 22-Jan-2016
253 Views
Preview:
TRANSCRIPT
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
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.
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
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>
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
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
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
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
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
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>
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>
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.
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.
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.
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.
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
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>
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
top related