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.