Struts 2 e Spring Integration

Spring è un popolare framework web che fornisce una facile integrazione con molte attività web comuni. Quindi la domanda è: perché abbiamo bisogno della primavera quando abbiamo Struts2? Bene, Spring è più di un framework MVC: offre molte altre chicche che non sono disponibili in Struts.

Ad esempio: inserimento delle dipendenze che può essere utile a qualsiasi framework. In questo capitolo, esamineremo un semplice esempio per vedere come integrare Spring e Struts2 insieme.

Prima di tutto, devi aggiungere i seguenti file al percorso di compilazione del progetto dall'installazione di Spring. Puoi scaricare e installare l'ultima versione di Spring Framework dahttps://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

Infine aggiungi struts2-spring-plugin-x.y.z.jar nel tuo WEB-INF/libdalla directory lib di struts. Se stai usando Eclipse, potresti incontrare un'eccezione java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener .

Per risolvere questo problema, dovresti entrare MarkerTab e fare clic con il tasto destro sulle dipendenze delle classi una per una ed eseguire la correzione rapida per pubblicare / esportare tutte le dipendenze. Infine assicurati che non ci siano conflitti di dipendenza disponibili nella scheda marker.

Ora impostiamo il file web.xml per l'integrazione Struts-Spring come segue:

<?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 cosa importante da notare qui è l'ascoltatore che abbiamo configurato. IlContextLoaderListenerè necessario per caricare il file del contesto della molla. Viene chiamato il file di configurazione di SpringapplicationContext.xml file e deve essere posizionato allo stesso livello del file web.xml file

Creiamo una semplice classe di azioni chiamata User.java con due proprietà: firstName e 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;
   }
}

Ora creiamo il file applicationContext.xml file di configurazione spring e istanziare il file User.javaclasse. Come accennato in precedenza, questo file dovrebbe trovarsi nella cartella 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>

Come visto sopra, abbiamo configurato lo user bean e abbiamo inserito i valori Michael e Jacksonnel fagiolo. Abbiamo anche dato a questo bean un nome "userClass", in modo da poterlo riutilizzare altrove. Quindi creiamo il fileUser.jsp nella cartella 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>

Il User.jspil file è piuttosto semplice. Ha un solo scopo: visualizzare i valori del nome e del cognome dell'oggetto utente. Infine, mettiamo insieme tutte le entità usando ilstruts.xml file.

<?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 cosa importante da notare è che stiamo usando l'id userClassper fare riferimento alla classe. Ciò significa che stiamo usando la molla per eseguire l'inserimento delle dipendenze per la classe User.

Ora fai clic con il pulsante destro del mouse sul nome del progetto e fai clic Export > WAR Fileper creare un file War. Quindi distribuire questo WAR nella directory webapps di Tomcat. Infine, avvia il server Tomcat e prova ad accedere all'URLhttp://localhost:8080/HelloWorldStruts2/User.jsp. Questo produrrà la seguente schermata:

Abbiamo ora visto come mettere insieme due grandi strutture. Questo conclude il capitolo sull'integrazione di Struts - Spring.