Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung der WEB-Modulkonfiguration von Spring

Detaillierte Erläuterung der WEB-Modulkonfiguration von Spring

小云云
小云云Original
2017-12-05 11:34:352107Durchsuche

Spring ist ein Open-Source-Framework auf Designebene, das das Problem der losen Kopplung zwischen der Geschäftslogikschicht und anderen Schichten löst und so schnittstellenorientierte Programmierideen in die gesamte Systemanwendung integriert. Spring ist ein leichtes Java-Entwicklungsframework, das 2003 auf den Markt kam und von Rod Johnson entwickelt wurde. Einfach ausgedrückt ist Spring ein mehrschichtiges, leichtes Open-Source-Framework mit JavaSE/EE-Vollstack (aus einer Hand). In diesem Artikel wird hauptsächlich die WEB-Modulkonfiguration von Spring ausführlich erläutert, die Vererbungsmethode, die Proxy-Methode und der zugehörige detaillierte Konfigurationscode kurz vorgestellt. Es hat einen gewissen Referenzwert und Freunde, die es brauchen, können es erfahren.

Eine kurze Einführung in die sieben Hauptmodule des Spring-Frameworks

Detaillierte Erläuterung des MVC-Modulcodes in Spring

Das WEB-Modul von Spring wird für die Integration von Web-Frameworks wie Struts1, Struts2, JSF usw. verwendet.

Struts1 integrieren

Vererbungsmethode

Spring Das Framework stellt die ActionSupport-Klasse zur Unterstützung von Struts1 Action bereit. Nach dem Erben von ActionSupport können Sie Spring's BeanFactory und verschiedene Ressourcen in verschiedenen Spring-Containern erhalten

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"); 
   } 
}

Spring in web.xml-Konfiguration

<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>

Bei Verwendung in Verbindung mit Hibernate müssen Sie den OpenSessionInViewFilter-Filter zu web.xml hinzufügen, um den Sitzungsbereich auf die JSP-Ebene zu erweitern und zu verhindern, dass eine Lazy-Loading-Ausnahme ausgelöst wird

<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>

Proxy-Methode

Die Vererbungsmethode ist sehr einfach in Spring zu integrieren, aber der Nachteil ist, dass der Code unterscheidet sich von Spring und ist gekoppelt, und Action wird nicht von Spring verwaltet, sodass die AOP- und IoC-Funktionen von Spring nicht verwendet werden können. Durch die Verwendung der Proxy-Methode können diese Fehler vermieden werden

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"); 
   } 
}

Diese Aktion ist nicht mit Spring gekoppelt, sie definiert lediglich ein ICatService-Attribut und Spring ist für das Einfügen der

struts-congfig.xml-Konfiguration

<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>
verantwortlich

Die Konfiguration von web.xml ist dieselbe wie bei der oben genannten Vererbungsmethode

Mithilfe einer Proxy-basierten Aktion können Sie Spring-Funktionen wie Interceptoren konfigurieren, beispielsweise eine Vormethode konfigurieren Interceptor und ein Post-Return-Interceptor für 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>

Integrating Struts 2

Spring Integrating Struts 2 erfordert das Paket 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(); 
   } 
}

struts.xml-Konfiguration

Zusätzlich zum Normale Konfiguration, e2ee6256a76186d77aee2f05762f1a1d Fügen Sie eine Konstante mit dem Namen struts.objectFactory hinzu und setzen Sie den Wert auf spring, um anzuzeigen, dass die Aktion von Spring generiert wird. Ändern Sie dann das Klassenattribut von 7e799be3545522a0b5d454493d321d80 in „catAction“ und suchen Sie in 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>

Spring Konfiguration

<bean id="catAction" scope="prototype" class="com.clf.spring.CatAction"> 
   <property name="catService" ref="catService"></property> 
</bean>

web.xml-Konfiguration

<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>

Der obige Inhalt ist eine detaillierte Erklärung der WEB-Modulkonfiguration von Spring. Ich hoffe, dass er allen helfen kann.

Verwandte Empfehlungen:

Vorteile des Spring-Frameworks im Java-Framework

Detaillierte Erklärung von SpringAop in Java

So verwenden Sie Spring Boot zum Betreiben einer MySQL-Datenbank

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der WEB-Modulkonfiguration von Spring. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn