Spring は、ビジネス ロジック層と他の層の間の疎結合の問題を解決するオープンソースの設計レベルのフレームワークであり、システム アプリケーション全体にわたってインターフェイス指向のプログラミングのアイデアを統合します。 Spring は、2003 年に登場し、Rod Johnson によって作成された軽量の Java 開発フレームワークです。簡単に言えば、Spring は階層化された JavaSE/EE フルスタック (ワンストップ) 軽量オープンソース フレームワークです。この記事では、Spring の WEB モジュール構成の詳細な説明を主に紹介し、その継承方法、プロキシ方法、および関連する詳細な構成コードを簡単に紹介します。一定の参考値があり、必要な友人はそれについて学ぶことができます。
Spring フレームワークの 7 つの主要モジュールの簡単な紹介
Spring の MVC モジュール コードの詳細な説明
Spring の WEB モジュールは、Struts1、Struts2、JSF などの Web フレームワークを統合するために使用されます.
Struts1の統合
継承メソッド
Springフレームワークは、Struts1 ActionをサポートするActionSupportクラスを提供します。 ActionSupportを継承した後、SpringのBeanFactoryを取得し、各種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"); } }
Web上でのSpringの設定は、セッションスコープをJSP層まで拡張するためにweb.xmlにOpenSessionInViewFilterフィルターを追加する必要があります。 Spring は結合されており、Action は Spring によって管理されないため、プロキシ メソッドを使用するとこれらの欠陥を回避できます
<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>
この Action は機能しません。 Spring と組み合わせると、ICatService 属性が Spring によって挿入されます。
<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>
たとえば、pre-method インターセプターと post-return の設定です。 CatAction のインターセプター
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"); } }
Spring には struts2-spring-2.011.jar パッケージ
<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>
<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>
関連する推奨事項:
JavaフレームワークにおけるSpring Frameworkの利点
JavaにおけるSpringAopの詳細な説明
Spring Bootを使用してmysqlデータベースを操作する方法
以上がSpringのWEBモジュール構成を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。