Strurs+Spring整合2
struts與spring三種整合方法_2
將 Spring 從 Struts 動作中分離是一個更巧妙的設計選擇。分離的一種方法是使用 org.springframework.web.struts.DelegatingRequestProcessor
類來覆蓋 Struts 的 RequestProcessor
處理程式,如清單 2 所示:
清單 2. 通過 Spring 的 DelegatingRequestProcessor 進行整合
- <?xml version="1.0" encoding="ISO-8859-1" ?>
- <!DOCTYPE struts-config PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
- "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
- <struts-config>
- <form-beans>
- <form-bean name="searchForm"
- type="org.apache.struts.validator.DynaValidatorForm">
- <form-property name="isbn" type="java.lang.String"/>
- </form-bean>
- </form-beans>
- <global-forwards type="org.apache.struts.action.ActionForward">
- <forward name="welcome" path="/welcome.do"/>
- <forward name="searchEntry" path="/searchEntry.do"/>
- <forward name="searchSubmit" path="/searchSubmit.do"/>
- </global-forwards>
- <action-mappings>
- <action path="/welcome" forward="/WEB-INF/pages/welcome.htm"/>
- <action path="/searchEntry" forward="/WEB-INF/pages/search.jsp"/>
- <action path="/searchSubmit"
- type="ca.nexcel.books.actions.SearchSubmit"
- input="/searchEntry.do"
- validate="true"
- name="searchForm">
- <forward name="success" path="/WEB-INF/pages/detail.jsp"/>
- <forward name="failure" path="/WEB-INF/pages/search.jsp"/>
- </action>
- </action-mappings>
- <message-resources parameter="ApplicationResources"/>
- <controller processorClass="org.springframework.web.struts.
- DelegatingRequestProcessor"/> |(1)
- <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
- <set-property property="pathnames"
- value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
- </plug-in>
- <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
- <set-property property="csntextConfigLocation" value="/WEB-INF/beans.xml"/>
- </plug-in>
- </struts-config>
我利用了 <controller>
標記來用 DelegatingRequestProcessor
覆蓋預設的 Struts RequestProcessor
。下一步是在我的 Spring 配置檔案中註冊該動作,如清單 3 所示:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
- "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <bean id="bookService" class="ca.nexcel.books.business.BookServiceImpl"/>
- <bean name="/searchSubmit"
- class="ca.nexcel.books.actions.SearchSubmit"> |(1)
- <property name="bookService">
- <ref bean="bookService"/>
- </property>
- </bean>
- </beans>
注意:在 (1) 處,我使用名稱屬性註冊了一個 bean,以匹配 struts-config 動作對映名稱。SearchSubmit
動作揭示了一個 JavaBean 屬性,允許 Spring 在執行時填充屬性,如清單 4 所示:
清單 4. 具有 JavaBean 屬性的 Struts 動作
|
在清單 4 中,您可以瞭解到如何建立 Struts 動作。在 (1) 處,我建立了一個 JavaBean 屬性。DelegatingRequestProcessor
自動地配置這種屬性。這種設計使 Struts 動作並不知道它正被 Spring 管理,並且使您能夠利用 Sping 的動作管理框架的所有優點。由於您的 Struts 動作注意不到 Spring 的存在,所以您不需要重寫您的 Struts 程式碼就可以使用其他控制反轉容器來替換掉 Spring。
DelegatingRequestProcessor
方法的確比第一種方法好,但是仍然存在一些問題。如果您使用一個不同的 RequestProcessor
,則需要手動整合 Spring 的 DelegatingRequestProcessor
。新增的程式碼會造成維護的麻煩並且將來會降低您的應用程式的靈活性。此外,還有過一些使用一系列命令來代替 Struts RequestProcessor
的傳聞。 這種改變將會對這種解決方法的使用壽命造成負面的影響。
你可以通過這個連結引用該篇文章:http://pearlkeeper.bokee.com/tb.b?diaryId=15898726
相關文章
- SpringBoot整合系列-整合H2Spring Boot
- Swift 2 2 整合lean cloud Push推送SwiftCloud
- iOS整合Fabric & Crashlytics (2)iOS
- spring整合struts2Spring
- Springboot2+vue2整合專案Spring BootVue
- Struts2【與Spring整合】Spring
- spring整合struts2(續)Spring
- (九) SpringBoot起飛之路-整合/整合Swagger 2 And 3Spring BootSwagger
- struts2 + urlrewrite 整合注意事項
- mybatis+spring+struts2框架整合MyBatisSpring框架
- Axis2+spring整合例項Spring
- SpringBoot 2.X 整合 RocketMQ遇到的問題2Spring BootMQ
- 整合自動化測試整合框架,整合 Appium+TestNG+ReportNG+ExtentNG+Log4j2+Maven框架APPMaven
- Spring Boot 與 R2DBC 整合Spring Boot
- [msys2]整合到右鍵選單
- spring boot2整合ES詳解Spring Boot
- Solon2 專案整合 Nacos 配置中心
- springboot整合swagger2Spring BootSwagger
- Spring Boot 2.X 如何快速整合jpa?Spring Boot
- flowable6.4 與springboot2 整合Spring Boot
- Spring系列之整合MongoDB的2種方法SpringMongoDB
- ASP.NET Core2利用MassTransit整合RabbitMQASP.NETMQ
- [求助] STRUTS2和SPRING整合問題Spring
- 2.springboot2.x整合mysql和mybatis(以xml的方式)Spring BootMySqlMyBatisXML
- Gradle在cocos2d-x(2.x)遊戲中整合Gradle遊戲
- 在 WPF 中整合 ASP.NET Core 和 WebView2 用於整合 SPA 應用ASP.NETWebView
- elasticsearch7.6.x 整合springboot2(一)ElasticsearchSpring Boot
- ViCANdo新版本釋出(PART2)| XCP整合
- SpringBoot2-第五章:整合EhCacheSpring Boot
- SpringBoot整合Swagger2及使用Spring BootSwagger
- HBase2實戰:HBase Flink和Kafka整合Kafka
- 聊聊使用@RefreshScope與nacos2整合踩到的坑
- Spring Boot實戰:整合Swagger2Spring BootSwagger
- S2S3H4 整合程式碼示例S3
- 【Python機器學習實戰】決策樹與整合學習(四)——整合學習(2)GBDTPython機器學習
- Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2Spring BootSwagger
- SpringBoot2.X與redis Lettuce整合踩坑Spring BootRedis
- Spring Data JPA(二):SpringBoot整合H2Spring Boot