Integración de Struts 2 y Spring

Spring es un marco web popular que proporciona una fácil integración con muchas tareas web comunes. Entonces, la pregunta es, ¿por qué necesitamos Spring cuando tenemos Struts2? Bueno, Spring es más que un marco MVC: ofrece muchas otras ventajas que no están disponibles en Struts.

Por ejemplo: inyección de dependencia que puede ser útil para cualquier framework. En este capítulo, veremos un ejemplo simple para ver cómo integrar Spring y Struts2 juntos.

En primer lugar, debe agregar los siguientes archivos a la ruta de compilación del proyecto desde la instalación de Spring. Puede descargar e instalar la última versión de Spring Framework desdehttps://www.springsource.org/download

  • org.springframework.asm-x.y.z.M(a).jar
  • org.springframework.beans-x.y.z.M(a).jar
  • org.springframework.context-x.y.z.M(a).jar
  • org.springframework.core-x.y.z.M(a).jar
  • org.springframework.expression-x.y.z.M(a).jar
  • org.springframework.web-x.y.z.M(a).jar
  • org.springframework.web.servlet-x.y.z.M(a).jar

Finalmente agregue struts2-spring-plugin-x.y.z.jar en tus WEB-INF/libdesde su directorio lib de struts. Si está utilizando Eclipse, puede enfrentar una excepción java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener .

Para solucionar este problema, debe ingresar Markerpestaña y haga clic con el botón derecho en las dependencias de la clase una por una y haga una solución rápida para publicar / exportar todas las dependencias. Por último, asegúrese de que no haya ningún conflicto de dependencia disponible en la pestaña del marcador.

Ahora configuremos el web.xml para la integración Struts-Spring de la siguiente manera:

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

   <listener>
      <listener-class>
         org.springframework.web.context.ContextLoaderListener
      </listener-class>
   </listener>

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

Lo importante a tener en cuenta aquí es el oyente que hemos configurado. losContextLoaderListeneres necesario para cargar el archivo de contexto de primavera. El archivo de configuración de Spring se llamaapplicationContext.xml archivo y debe colocarse al mismo nivel que el web.xml archivo

Creemos una clase de acción simple llamada User.java con dos propiedades: firstName y lastName.

package com.tutorialspoint.struts2;

public class User {
   private String firstName;
   private String lastName;

   public String execute() {
      return "success";
   }

   public String getFirstName() {
      return firstName;
   }

   public void setFirstName(String firstName) {
      this.firstName = firstName;
   }

   public String getLastName() {
      return lastName;
   }

   public void setLastName(String lastName) {
      this.lastName = lastName;
   }
}

Ahora creemos el applicationContext.xml archivo de configuración de primavera e instanciar el User.javaclase. Como se mencionó anteriormente, este archivo debe estar en la carpeta WEB-INF -

<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   <bean id = "userClass" class = "com.tutorialspoint.struts2.User">
      <property name = "firstName" value = "Michael" />
      <property name = "lastName" value = "Jackson" />
   </bean>
</beans>

Como se vio arriba, hemos configurado el bean de usuario y hemos inyectado los valores Michael y Jacksonen el frijol. También le hemos dado a este bean un nombre "userClass", para que podamos reutilizarlo en otro lugar. A continuación, creemos elUser.jsp en la carpeta WebContent -

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
   pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>Hello World</title>
   </head>
   
   <body>
      <h1>Hello World From Struts2 - Spring integration</h1>

      <s:form>
         <s:textfield name = "firstName" label = "First Name"/><br/>
         <s:textfield name = "lastName" label = "Last Name"/><br/>
      </s:form>
      
   </body>
</html>

los User.jspEl archivo es bastante sencillo. Tiene un solo propósito: mostrar los valores del nombre y apellido del objeto de usuario. Finalmente, pongamos todas las entidades juntas usando elstruts.xml archivo.

<?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 = "user" class="userClass" 
         method = "execute">
         <result name = "success">/User.jsp</result>
      </action>
   </package>
</struts>

Lo importante a tener en cuenta es que estamos usando la identificación userClasspara referirse a la clase. Esto significa que estamos usando Spring para hacer la inyección de dependencia para la clase User.

Ahora haga clic derecho en el nombre del proyecto y haga clic en Export > WAR Filepara crear un archivo War. Luego, implemente este WAR en el directorio de aplicaciones web de Tomcat. Finalmente, inicie el servidor Tomcat e intente acceder a la URLhttp://localhost:8080/HelloWorldStruts2/User.jsp. Esto producirá la siguiente pantalla:

Ahora hemos visto cómo unir dos grandes marcos. Con esto concluye el capítulo de integración de Struts - Spring.