Exemple d’intégration avec Struts 2 + Spring

Exemple d'intégration de Struts 2 + Spring

Téléchargez-le -Struts2-Spring-Integration-Example.zip

Dans ce didacticiel, il montre l'intégration entre Struts 2 et Spring.

1. Structure du projet

Voici la structure des dossiers de projet de ces didacticiels.

Struts 2 Spring integration example

2. Plugin Struts 2 + Spring

Pour intégrer Struts 2 et Spring, récupérez et incluez la bibliothèque «struts2-spring-plugin-xxx.jar» dans le chemin de classe de votre projet.

pom.xml

        
        
                org.apache.struts
            struts2-core
            2.1.8
        

    
    
        org.springframework
        spring
        2.5.6
    

    
        org.springframework
        spring-web
        2.5.6
    

    
    
                 org.apache.struts
             struts2-spring-plugin
             2.1.8
         

3. Auditeur de printemps

Configurez l'écouteur Spring «org.springframework.web.context.ContextLoaderListener» dans le fichierweb.xml.

web.xml




  Struts 2 Web Application

  
    struts2
    
         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        
  

  
    struts2
    /*
  

  
    
      org.springframework.web.context.ContextLoaderListener
    
  

3. Enregistrer Spring Bean

Enregistrez tous les Spring's Beans dans le fichierapplicationContext.xml, l'écouteur Spring localisera automatiquement ce fichier xml.

applicationContext.xml



    

    
        
    

UserBo.java

package com.example.user.bo;

public interface UserBo{

    public void printUser();

}

UserBoImpl.java

package com.example.user.bo.impl;

import com.example.user.bo.UserBo;

public class UserBoImpl implements UserBo{

    public void printUser(){
        System.out.println("printUser() is executed...");
    }

}

UserSpringAction.java

package com.example.user.action;

import com.example.user.bo.UserBo;

public class UserSpringAction{

    //DI via Spring
    UserBo userBo;

    public UserBo getUserBo() {
        return userBo;
    }

    public void setUserBo(UserBo userBo) {
        this.userBo = userBo;
    }

    public String execute() throws Exception {

        userBo.printUser();
        return "success";

    }
}

5. Struts.xml

Déclaré toute la relation ici.





    

    

        
            pages/user.jsp
        

        
            pages/user.jsp
        

    

6. Demo

Maintenant que tout le travail d'intégration de Struts 2 et Spring est terminé, voyez maintenant le cas d'utilisation suivant pour accéder au bean «userBo» de Spring.

  • Cas 1: faites en sorte que Spring agisse en tant que classe d'action Struts 2 et accédez au bean Spring.

  • Cas 2: accédez au bean Spring dans la classe Action Struts 2.

Cas 1

Dans cet exemple, leuserSpringAction agit comme la classe Action Struts 2, et vous pouvez DI le beanuserBo du Spring avec le chemin Spring normal.

//struts.xml

    pages/user.jsp


//applicationContext.xml

    

Pour accéder à cette action, utilisez l'URL:http://localhost:8080/Struts2Example/userSpringAction

Cas 2

Par défaut, Spring listener active «autowiring by matching the bean name». Ainsi, il passera automatiquement le bean «userBo» du Spring dans UserAction viasetUserBo(). Voir ci-dessous Action Struts 2:

La fonction de câblage automatique du Spring peut changer enname (par défaut),type,auto ouconstructor, vous devrez peut-être consulter ceStruts 2 Spring plugin documentation.

UserAction.java

package com.example.user.action;

import com.example.user.bo.UserBo;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{

    //DI via Spring
    UserBo userBo;

    public UserBo getUserBo() {
        return userBo;
    }

    public void setUserBo(UserBo userBo) {
        this.userBo = userBo;
    }

    public String execute() throws Exception {

        userBo.printUser();
        return SUCCESS;

    }
}

Pour accéder à cette action, utilisez l'URL:http://localhost:8080/Struts2Example/userAction

WebApplicationContextUtils
Vous pouvez également utiliser la classe génériqueWebApplicationContextUtils de Spring pour obtenir directement le bean Spring.

package com.example.user.action;

import org.apache.struts2.ServletActionContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.example.user.bo.UserBo;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{

    public String execute() throws Exception {

        WebApplicationContext context =
            WebApplicationContextUtils.getRequiredWebApplicationContext(
                                    ServletActionContext.getServletContext()
                        );

        UserBo userBo1 = (UserBo)context.getBean("userBo");
        userBo1.printUser();

        return SUCCESS;

    }
}

Un article très long et fastidieux, assurez-vous de télécharger le code source complet du projet pour vous entraîner.