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!