Une brève introduction aux sept principaux modules de Spring Framework
Explication détaillée du code du module MVC au printemps
Le module Web de Spring est utilisé pour intégrer des frameworks Web, tels que Struts1, Struts2, JSF, etc.
Intégrer les struts1
Méthode d'héritage
Le Spring Framework fournit une classe ActionSupport pour soutenir l'action de Struts1. Après avoir hérité d'actions ActionSupport, vous pouvez obtenir le haricot de Spring, obtenant ainsi diverses ressources dans divers conteneurs de printemps.
import org.springframework.web.strut.actsupport; La classe publique cataction étend ActionSupport {public icaSService getCarservice () {return (icaService) getWebApplicationContext (). getBean ("CatService"); } public ActionForward EXECUTE (ActionMappingMapping, ActionForm Form, HttpServLetRequest Request, HttpServletResponSponse) {Catform Catform = (catform) form; if ("list" .equals (catform.getAction ())) {returnThis.list (mapping, formulaire, demande, réponse); }} Public ActionForward List (ActionMappingMapping, ActionForm Form, HttpServLetRequest Request, HttpServletResponSponse) {Catform Catform = (catform) form; ICATSERVICE CATSERVICE = GetCatService (); List <at> catlist = catService.Listcats (); request.setAttribute ("carlist", catlist); return mapping.find ("list"); }}Configuration de printemps dans web.xml
<Touxt-Param> <! - Emplacement du fichier de configuration de Spring -> <param-name> contextConfiglocation </ param-name> <param-value> /web-inf/classes/applicationcontext.xml </ param-value> </ contener-param> <ouciner> <! - Chargement du fichier de configuration de ressort à l'aide de l'écoute -> <auditeur-clase> org.springframework.web.context.contextloderListener </ écouteur-class> </ounerner> <filter> <! - Utilisation de Spring Character Filter -> <Filter-Name> CharacterEncodingFilter </filter-Name> <Filter-Class> org.springFramework.wass> <param-name> Encoding </ param-name> <param-value> utf-8 </ param-value> </ init-param> <itnit-param> <itit-param> <param-name> forceencoding </ param-name> </ param-valie> true-mapping </ param-value> </nit-param> </filter> <filter-mapping> <Filter-Name> CaracterEncodingFilter </ Filter-Name> <URL-Pattern> / * </url-Pattern> </ Filter-Mapping>
Si vous êtes utilisé conjointement avec Hibernate, vous devez ajouter un filtre OpenSessionInviewFilter dans web.xml pour étendre la portée de la session à la couche JSP pour éviter que des exceptions de chargement retardées ne soient jetées
<filter> <filter-name> HiberNateFilter </filter-name> <filter-Class> org.springframework.orm.hibernate3.support. OpenSessionInViewFilter </ Filter-Class> </ Filter> <Imlter-Mapping> <Lilter-Name> HiberNateFilter </ Filter-Name> <Url-Pattern> *. Do </ url-Pattern> <! - Activer l'action pour les traits 1 -> </ filtre-mapping>
Méthode d'agent
L'intégration de la méthode d'héritage dans le ressort est très simple, mais l'inconvénient est que le code est couplé au ressort, et l'action n'est pas remise au ressort pour la gestion, donc les fonctionnalités AOP et IOC de Spring ne peuvent pas être utilisées. L'utilisation de la méthode proxy peut éviter ces défauts.
Classe publique Cataction étend l'action {// L'action privée icaSService catservice héritée ici est CatService; // setter et getter légèrement public ActionForward EXECUTE (ActionMappingMapping, ActionForm Form, HttpServLetRequest Request, HttpServletResponsPonse) {Catform Catform = (catform) form; if ("list" .equals (catform.getAction ())) {returnThis.list (mapping, formulaire, demande, réponse); }} Public ActionForward List (ActionMappingMapping, ActionForm Form, HttpServLetRequest Request, HttpServletResponsPonse) {Catform Catform = (catform) form; ICATSERVICE CATSERVICE = GetCatService (); List <at> catlist = catService.Listcats (); request.setAttribute ("carlist", catlist); return mapping.find ("list"); }}Cette action n'est pas couplée au printemps, mais définit simplement une propriété iCaTService, qui est ensuite injectée par le printemps
Struts-Congfig.xml Configuration
<form-Beans> <form-Bean name = "catform" type = "com.clf.spring.catform"> </ form-beans> <action-mappings> <action name = "catform" path = "/ cat" type = "com.clf.spring.cataction"> <fowern name = "list" path = "/ jsp / listcat.jsp"> </ ultige> La plupart des configurations de base, qui remettent l'action des entretoises à l'agent de ressort -> <Contrôleur procederclass = "org.springframework.web.strut.delegatingrequestprocessor" /> <! - Une fois la configuration du contrôleur, la propriété type de l'action est utilisée. Struts n'utilisera pas la classe spécifiée par la propriété Type pour créer une cataction, mais recherchez dans la configuration de ressort. Par conséquent, la cataction doit être configurée dans le printemps -> <! - L'action de Spring utilise la propriété du nom au lieu de l'ID. Spring interceptera la demande "/cat.do", injectera CatService dans la méthode CatAction via la méthode du secteur et appelez la méthode EXECUTE () -> <Bean Name = "/ Cat"> <propriété name = "CatService" Ref = "CatService" /> </EAN>
La configuration de web.xml est la même que la méthode d'héritage ci-dessus.
L'utilisation de l'action de la méthode proxy peut configurer des fonctionnalités de printemps telles que les intercepteurs, tels que la configuration de la cataction avant et après les intercepteurs après la méthode
<bean id = "CatBeforeInterceptor"> <propriété name = "conseils"> <bean /> </ propriété> <propriété name = "mappedName" value = "*"> </ propriété> </ bean> <bean id = "CatafterInterceptor"> <propriété name = "conseils"> <ean /> </ property> <propriété name = "Mappnedname" value = "*"> " <propriété name = "InterceptorNames"> <sist> <value> CatBeforeInterceptor </value> <value> catafterinterceptor </value> </ list> </ propriété> <propriété name = "Target"> <anan> <propriété name = "CatService" Ref = "CatService"> </ Property> </Ean> </ Property> </EATH> </premy> </pank>
Intégrer les jambes de force 2
Spring intègre Struts 2 nécessite un package Struts2-Spring-2.011.jar
classe publique Cataction {private icaSService CatService; chat privé chat; // setter et getter public String list () {catService.ListCats (); retourner "liste"; } public String Add () {CatService.CreateCat (Cat); return list (); }}configuration de strut.xml
En plus de la configuration normale, vous devez également ajouter une constante nommée STUTS.ObjectFactory et définir la valeur sur Spring pour indiquer que l'action est générée par Spring. Ensuite, changez l'attribut de classe de <Action /> à Cataction, Struts2 recherchera un haricot nommé cataction au printemps.
<constante name = "struts.objectfactory" value = "Spring" /> <PackagenamePackageName = "Cat" étend = "struts-default"> <action name = "* _ Cat" Method = "{1}"> <param name = "Action"> {1} </ param> <result> / list.jsp </ result> <résultat Nom = "liste"> / list.jsp </ Result> <sult> <Result Name </ package>Configuration de ressort
<bean id = "cataction" scope = "prototype"> <propriété name = "catservice" ref = "CatService"> </ propriété> </bEAN>
Configuration web.xml
<Touxt-Param> <! - Emplacement du fichier de configuration de Spring -> <param-name> contextConfiglocation </ param-name> <param-value> /web-inf/classes/applicationcontext.xml </ param-value> </ contener-param> <ouciner> <! - Chargement du fichier de configuration de ressort à l'aide de l'écoute -> <auditeur-clase> org.springframework.web.context.contextloderListener </ écouteur-class> </ounerner> <filter> <filter-name> struts2 </filter-name> <filter-Class> org.apache.struts2.dispatcher.filterdispatcher </filter-class> </filter> <filter-path-paty> <filter-name> Struts2 </filter-name> <url-sattern> / * </ url-sattern> </ filter-mapping>
Résumer
Ce qui précède est toute l'explication détaillée de la configuration du module Web de Spring, j'espère que cela sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler.
se référer à:
Une brève discussion sur le problème de saut de page dans Springmvc
Spring AOP Introduction Demo Partage
Spring Framework Web Project Pratique Partage de code