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.

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//applicationContext.xml pages/user.jsp
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.