miércoles, 24 de noviembre de 2010

CONFIGURACION

  • pom.xml: Se deben añadir algunas dependencias tales como y los repositorios:
  1. <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.2.1</version>
    </dependency>
  2. <dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
    </dependency>
  3. <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    </dependency>
  4. <repositories>
    <repository>
    <id>repo de maven</id>
    <url>http://repo1.maven.org/maven2/</url>
    </repository>
    <repository>
    <id>repo de jboss</id>
    <url>http://repository.jboss.org/maven2/</url>
    </repository>
    </repositories>

  • web.xml: Incluimos los siguientes filtros:
  1. <filter>
    <filter-name>action2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
    </filter>

    <filter-mapping>
    <filter-name>action2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

  2. EL QUE SE PRESENTA A CONTINUACIÓN DEBE SER EL PRIMERO QUE SE MAPEA: para que Hibernate tenga siempre abierta la sesion:

  3. <filter>
    <filter-name>hibernate</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    <init-param>
    <param-name>sessionFactoryBeanName</param-name>
    <param-value>mySessionFactory</param-value>
    </init-param>
    <init-param>
    <param-name>singleSession</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>

    <filter-mapping>
    <filter-name>hibernate</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

INCLUIMOS EL FICHERO DE CONFIGURACION DE STRUTS2

  • struts.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>
....
</struts>


EXISTE UN FICHERO ADICIONAL DE PROPIEDADES struts.properties


ACTIONS:

class MyAction {

public void String execute() throws Exception {
if( myLogicWorked() ) {
return "success";
} else {
return "error";
}
}

}


SE DA DE ALTA EN struts.xml:

<action name="my" class="com.fdar.infoq.MyAction" >
<result> view.jsp</result>
<result name="error"> error.jsp</result> <!-- Reenvio en la validacion -->
</action>


INTERCEPTORS

<interceptors
>
...
<interceptor name="autowiring"
class="interceptor.ActionAutowiringInterceptor"/
>
</interceptors>

//Y EN LA ACCION

<action name="my" class="com.fdar.infoq.MyAction" >
<result> view.jsp</result>
<interceptor-ref name="autowiring"/>
</action>

//Ó DEFAULT PARA PAQUETE

<default-interceptor-ref name="autowiring"/>


debido a la tendencia de struts2 a los interceptores, cuando son muchos los que hay que aplicar


<interceptor-stack name="basicStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="servlet-config"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
</interceptor-stack>

y se aplica en la accion:

<action name="my" class="com.fdar.infoq.MyAction" >
<result>view.jsp</result>
<interceptor-ref name="basicStack"/>
</action>


  • INTERCEPTORES PROPIOS
Para utilizar/desarrollar nuestros propios interceptores extendiendo la interfaz de xwork

public interface Interceptor extends Serializable {

void destroy();

void init();

String intercept(ActionInvocation invocation)
throws Exception;
}


Al implementar esta interfaz podemos heredar de AbstractInterceptor para facilitar la implementacion (limitacion de inicializacion/create y limpieza/destroy)

La clase ActionInvocation nos permite acceder a todo el contexto de la acción: target, parametros, excepciones, invocacion y valor de retorno

No hay comentarios:

Publicar un comentario