Intégration Struts 2 et Spring

Spring est un framework Web populaire qui permet une intégration facile avec de nombreuses tâches Web courantes. La question est donc: pourquoi avons-nous besoin de Spring lorsque nous avons Struts2? Eh bien, Spring est plus qu'un framework MVC - il offre de nombreux autres avantages qui ne sont pas disponibles dans Struts.

Par exemple: injection de dépendances qui peut être utile à n'importe quel framework. Dans ce chapitre, nous allons passer en revue un exemple simple pour voir comment intégrer Spring et Struts2 ensemble.

Tout d'abord, vous devez ajouter les fichiers suivants au chemin de construction du projet à partir de l'installation de Spring. Vous pouvez télécharger et installer la dernière version de Spring Framework à partir dehttps://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

Enfin ajouter struts2-spring-plugin-x.y.z.jar dans ton WEB-INF/libà partir de votre répertoire struts lib. Si vous utilisez Eclipse, vous pouvez être confronté à une exception java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener .

Pour résoudre ce problème, vous devriez avoir à entrer Markeronglet et cliquez avec le bouton droit sur les dépendances de classe une par une et effectuez une correction rapide pour publier / exporter toutes les dépendances. Enfin, assurez-vous qu'aucun conflit de dépendance n'est disponible sous l'onglet marqueur.

Maintenant, laissez-nous configurer le web.xml pour l'intégration Struts-Spring comme suit -

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

La chose importante à noter ici est l'auditeur que nous avons configuré. leContextLoaderListenerest nécessaire pour charger le fichier de contexte Spring. Le fichier de configuration de Spring est appeléapplicationContext.xml fichier et il doit être placé au même niveau que le web.xml fichier

Créons une classe d'action simple appelée User.java avec deux propriétés - firstName et 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;
   }
}

Maintenant, créons le applicationContext.xml spring et instanciez le User.javaclasse. Comme mentionné précédemment, ce fichier doit se trouver dans le dossier 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>

Comme vu ci-dessus, nous avons configuré le bean utilisateur et nous avons injecté les valeurs Michael et Jacksondans le haricot. Nous avons également donné à ce bean un nom "userClass", afin de pouvoir le réutiliser ailleurs. Ensuite, créons leUser.jsp dans le dossier 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>

le User.jsple fichier est assez simple. Il n'a qu'un seul objectif: afficher les valeurs du prénom et du nom de l'objet utilisateur. Enfin, rassemblons toutes les entités en utilisant lestruts.xml fichier.

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

La chose importante à noter est que nous utilisons l'identifiant userClasspour faire référence à la classe. Cela signifie que nous utilisons spring pour effectuer l'injection de dépendances pour la classe User.

Maintenant, faites un clic droit sur le nom du projet et cliquez sur Export > WAR Filepour créer un fichier War. Déployez ensuite ce WAR dans le répertoire webapps de Tomcat. Enfin, démarrez le serveur Tomcat et essayez d'accéder à l'URLhttp://localhost:8080/HelloWorldStruts2/User.jsp. Cela produira l'écran suivant -

Nous avons maintenant vu comment réunir deux grands cadres. Ceci conclut le chapitre sur l'intégration de Struts - Spring.