Struts 2 + Beispiel für Springintegration

Beispiel für die Integration von Federbeinen 2 + Feder

Laden Sie es herunter -Struts2-Spring-Integration-Example.zip

In diesem Tutorial wird die Integration zwischen Struts 2 und Spring gezeigt.

1. Projektstruktur

Hier ist die Projektordnerstruktur dieser Tutorials.

Struts 2 Spring integration example

2. Federbeine 2 + Feder Plugin

Um Struts 2 und Spring zu integrieren, rufen Sie die Bibliothek "struts2-spring-plugin-xxx.jar" auf und fügen Sie sie in Ihren Projektklassenpfad ein.

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. Frühlings-Zuhörer

Konfigurieren Sie den Spring-Listener "org.springframework.web.context.ContextLoaderListener" in der Dateiweb.xml.

web.xml




  Struts 2 Web Application

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

  
    struts2
    /*
  

  
    
      org.springframework.web.context.ContextLoaderListener
    
  

3. Registrieren Sie Spring Bean

Registrieren Sie alle Spring's Beans in derapplicationContext.xml-Datei. Der Spring-Listener findet diese XML-Datei automatisch.

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

Erklärt die ganze Beziehung hier.





    

    

        
            pages/user.jsp
        

        
            pages/user.jsp
        

    

6. Demo

Jetzt sind alle Integrationsarbeiten für Struts 2 und Spring abgeschlossen. Im folgenden Anwendungsfall können Sie auf die Bean "userBo" der Feder zugreifen.

  • Fall 1: Lassen Sie Spring als Struts 2-Action-Klasse fungieren und greifen Sie auf die Spring-Bean zu.

  • Fall 2: Greifen Sie in der Struts 2-Aktionsklasse auf die Spring's Bean zu.

Fall 1

In diesem Beispiel fungiertuserSpringAction als Struts 2-Aktionsklasse, und Sie können dieuserBo-Bohne der Feder auf normale Spring-Weise DI.

//struts.xml

    pages/user.jsp


//applicationContext.xml

    

Verwenden Sie die URLhttp://localhost:8080/Struts2Example/userSpringAction, um auf diese Aktion zuzugreifen

Fall 2

Standardmäßig aktiviert der Spring Listener „autowiring by matching the bean name“. Daher wird die Bean "userBo" des Frühlings automatisch übersetUserBo() an die UserAction übergeben. Siehe unten Struts 2 Action:

Die automatische Verdrahtungsfunktion der Feder kann inname (Standard),type,auto oderconstructor geändert werden. Möglicherweise müssen Sie dieseStruts 2 Spring plugin documentation konsultieren.

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;

    }
}

Verwenden Sie die URLhttp://localhost:8080/Struts2Example/userAction, um auf diese Aktion zuzugreifen

WebApplicationContextUtils
Alternativ können Sie die generischeWebApplicationContextUtils-Klasse des Spring verwenden, um die Spring-Bean direkt abzurufen.

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;

    }
}

Stellen Sie sicher, dass Sie den vollständigen Quellcode des Projekts für die Praxis herunterladen.