Maison > Java > javaDidacticiel > le corps du texte

Explication détaillée de la configuration du module WEB de Spring

小云云
Libérer: 2017-12-05 11:34:35
original
2102 Les gens l'ont consulté

Spring est un framework open source au niveau de la conception qui résout le problème du couplage lâche entre la couche de logique métier et d'autres couches, de sorte qu'il intègre des idées de programmation orientées interface dans l'ensemble de l'application système. Spring est un framework de développement Java léger apparu en 2003 et créé par Rod Johnson. En termes simples, Spring est un framework open source léger JavaSE/EEfull-stack (à guichet unique) en couches. Cet article présente principalement l'explication détaillée de la configuration du module WEB de Spring, présente brièvement sa méthode d'héritage, sa méthode proxy et le code de configuration détaillé associé. Il a une certaine valeur de référence et les amis dans le besoin peuvent en apprendre davantage.

Une brève introduction aux sept modules majeurs du framework Spring

Explication détaillée du code du module MVC dans Spring

Le module WEB de Spring est utilisé pour l'intégration de frameworks Web, tels que Struts1, Struts2, JSF, etc.

Intégrer Struts1

Méthode d'héritage

Spring framework fournit la classe ActionSupport pour prendre en charge l'action Struts1. Après avoir hérité d'ActionSupport, vous pouvez obtenir BeanFactory de Spring et obtenir diverses ressources dans divers conteneurs Spring

import org.springframework.web.struts.ActionSupport; 
  
public class CatAction extends ActionSupport{ 
   public ICatService getCarService(){ 
       return (ICatService) getWebApplicationContext().getBean("catService"); 
   } 
   public ActionForward execute(ActionMappingmapping,ActionForm form,HttpServletRequest request,HttpServletResponseresponse){ 
       CatForm catForm = (CatForm) form; 
       if("list".equals(catForm.getAction())){ 
          returnthis.list(mapping,form,request,response); 
       } 
   } 
  
   public ActionForward list(ActionMappingmapping,ActionForm form,HttpServletRequest request,HttpServletResponseresponse){ 
       CatForm catForm = (CatForm) form; 
       ICatService catService =getCatService(); 
       List<Cat> catList =catService.listCats(); 
       request.setAttribute("carList",catList); 
  
       return mapping.find("list"); 
   } 
}
Copier après la connexion

Spring dans la configuration web.xml

<context-param><!-- Spring配置文件的位置--> 
   <param-name>contextConfigLocation</param-name> 
   <param-value>/WEB-INF/classes/applicationContext.xml</param-value> 
</context-param> 
  
<listener><!-- 使用Listener加载Spring配置文件--> 
   <listener-class> 
       org.springframework.web.context.ContextLoaderListener 
   </listener-class> 
</listener> 
  
<filter><!-- 使用Spring自带的字符过滤器--> 
   <filter-name>CharacterEncodingFilter</filter-name> 
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
   <init-param> 
       <param-name>encoding</param-name> 
       <param-value>UTF-8</param-value> 
   </init-param> 
   <init-param> 
       <param-name>forceEncoding</param-name> 
       <param-value>true</param-value> 
   </init-param> 
</filter> 
<filter-mapping> 
   <filter-name>CharacterEncodingFilter</filter-name> 
   <url-pattern>/*</url-pattern> 
</filter-mapping>
Copier après la connexion

S'il est utilisé conjointement avec Hibernate, vous devez ajouter le filtre OpenSessionInViewFilter à web.xml pour étendre la portée de la session à la couche JSP afin d'éviter de lancer une exception de chargement paresseux

<filter> 
   <filter-name>hibernateFilter</filter-name> 
   <filter-class>org.springframework.orm.hibernate3.support. OpenSessionInViewFilter</filter-class> 
</filter> 
<filter-mapping> 
   <filter-name> hibernateFilter</filter-name> 
   <url-pattern>*.do</url-pattern><!-- 对Struts 1的Action启用--> 
</filter-mapping>
Copier après la connexion

Méthode proxy

La méthode d'héritage est très simple à intégrer dans Spring, mais l'inconvénient est que le code est différent de Spring est couplé et l'action n'est pas gérée par Spring, 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

public class CatAction extends Action{ //此处继承的Struts 1的Action 
   private ICatService catService; 
   //setter、getter略 
  
   public ActionForward execute(ActionMappingmapping,ActionForm form,HttpServletRequest request,HttpServletResponseresponse){ 
       CatForm catForm = (CatForm) form; 
       if("list".equals(catForm.getAction())){ 
          returnthis.list(mapping,form,request,response); 
       } 
   } 
  
   public ActionForward list(ActionMappingmapping,ActionForm form,HttpServletRequest request,HttpServletResponseresponse){ 
       CatForm catForm = (CatForm) form; 
       ICatService catService =getCatService(); 
       List<Cat> catList =catService.listCats(); 
       request.setAttribute("carList",catList); 
  
       return mapping.find("list"); 
   } 
}
Copier après la connexion

<🎜. >

Cette Action n'est pas couplée à Spring, elle définit juste un attribut ICatService, et Spring se charge d'injecter la configuration

struts-congfig.xml

<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"> 
       <forward name="list" path="/jsp/listCat.jsp"></forward> 
   </action> 
</action-mappings> 
  
<!-- 最核心的配置,该配置把Struts的Action交给Spring代理--> 
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" /> 
  
<!-- controller配置生效后,Action的type属性就是去作用了,Struts不会用type属性指定的类来创建CatAction,而是到Spring配置中寻找,因此Spring中必须配置CatAction --> 
<!-- Spring中配置Action使用的是name属性而不是id,Spring会截获"/cat.do"的请求,将catService通过setter方法注入到CatAction中,并调用execute()方法--> 
<bean name="/cat" class=" com.clf.spring.CatAction"> 
   <property name="catService" ref="catService" /> 
</bean>
Copier après la connexion

La configuration de web.xml est la même que la méthode d'héritage ci-dessus

En utilisant l'action basée sur un proxy, vous pouvez configurer les fonctionnalités de Spring telles que les intercepteurs, telles que la configuration d'une pré-méthode intercepteur et un intercepteur post-retour pour CatAction

<bean id="catBeforeInterceptor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvodor"> 
   <property name="advice"> 
       <bean class="com.clf.spring.MethodBeforeInterceptor" /> 
   </property> 
   <property name="mappedName" value="*"></property> 
</bean> 
  
<bean id="catAfterInterceptor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvodor"> 
   <property name="advice"> 
       <bean class="com.clf.spring.MethodAfterInterceptor" /> 
   </property> 
   <property name="mappedName" value="*"></property> 
</bean> 
  
<bean name="/cat" class="org.springframework.aop.framework.ProxyFactoryBean"> 
   <property name="interceptorNames"> 
       <list> 
          <value> catBeforeInterceptor</value> 
          <value> catAfterInterceptor</value> 
       </list> 
   </property> 
   <property name="target"> 
       <bean class="com.clf.spring.CatAction"> 
          <property name="catService" ref="catService"></property> 
       </bean> 
   </property> 
</bean>
Copier après la connexion

L'intégration de Struts 2

Spring intégrant Struts 2 nécessite le package struts2-spring-2.011.jar

public class CatAction{ 
   private ICatService catService; 
   private Cat cat; 
   //setter、getter略 
  
   public String list(){ 
       catService.listCats(); 
       return "list"; 
   } 
    
   public String add(){ 
       catService.createCat(cat); 
       return list(); 
   } 
}
Copier après la connexion

configuration struts.xml

En plus du configuration normale, Ajoutez une constante nommée struts.objectFactory et définissez la valeur sur spring, indiquant que l'action est générée par Spring. Ensuite, changez l'attribut de classe en catAction. Struts2 recherchera le bean nommé catAction dans Spring

<constant name=" struts.objectFactory" value="spring" /> 
  
<packagenamepackagename="cat" extends="struts-default"> 
<action name="*_cat" method="{1}" class="catAction"> 
   <param name="action" >{1}</param> 
   <result>/list.jsp</result> 
   <result name="list">/list.jsp</result> 
</action> 
</package>
Copier après la connexion

Spring. configuration

<bean id="catAction" scope="prototype" class="com.clf.spring.CatAction"> 
   <property name="catService" ref="catService"></property> 
</bean>
Copier après la connexion

configuration web.xml

<context-param><!-- Spring配置文件的位置--> 
   <param-name>contextConfigLocation</param-name> 
   <param-value>/WEB-INF/classes/applicationContext.xml</param-value> 
</context-param> 
  
<listener><!-- 使用Listener加载Spring配置文件--> 
   <listener-class> 
       org.springframework.web.context.ContextLoaderListener 
   </listener-class> 
</listener> 
  
<filter> 
   <filter-name>Struts2</filter-name> 
   <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
</filter> 
<filter-mapping> 
   <filter-name> Struts2</filter-name> 
   <url-pattern>/*</url-pattern> 
</filter-mapping>
Copier après la connexion

Le contenu ci-dessus est une explication détaillée de la configuration du module WEB de Spring. J'espère qu'il pourra aider tout le monde.

Recommandations associées :

Avantages du framework Spring dans le framework Java

Explication détaillée de SpringAop en Java

Comment utiliser Spring Boot pour faire fonctionner la base de données MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal