標籤:

Spring和struts2整合詳解

struts2 和 spring 整合,需要導入一個 struts2-spring-plugin-*.jar

這個 jar 包,在 struts2 和 spring 中都可以找到,只需要一個即可

既然使用 spring 管理 struts2 就得在 web.xml 中配置一個 spring 中的監聽器,在 spring-web.jar 下的 org.springframework.web.context 包中的 ContextLoaderListener.class 類

使用方法如下:

<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

***【如果 spring 的配置文件(applicationContext.xml)不在 WebRoot/lib/ 目錄下,則,必須在 web.xml 中配置一個屬性,用來告訴編譯器,spring 的配置文件的位置

<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value></context-param>

struts2 的核心攔截器也要配置在 web.xml 中 *****(一定要在<listener>標籤之後再寫)

<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping>

【以下均為 struts2.3 之後的寫法】

applicationContext.xml 配置一:

所有 action 類的控制權都是 struts2 的;寫法和之前 struts.xml 中的配置一樣

如:

<!-- 配置 struts2 中 struts.objectFacatory 的常量值為 spring ,該屬性在 struts2 核心包中 org.apache.struts2.default.properties 文件中, 默認被注釋掉了,現在需要開啟,開啟後,默認是根據名稱自動裝配 --><constant name="struts.objectFacatory" value="spring"/> <!-- struts2 的自動裝配由誰來完成,這裡是 spring --><!-- 用這個常量去改變裝配的規則 name, type, auto, constructor 四個值--><constant name="struts.objectFactory.spring.autoWire" value="name"/><package name="default" extends="struts-default" namespace="/"> <action name="employee_*" class="action.EmployeeAction" method="{1}"> <result>index.jsp</result> <allowed-methods>login</allowed-methods> </action></package>

在 applicationContext.xml 中不需要配置 action 的類

applicationContext.xml 配置二:

所有 action 類的控制權都交給 spring ;

如:(struts.xml)

<package name="default" extends="struts-default" namespace="/"> <!-- 這裡 class 的值必須和 applicationContext.xml 中配置的 action<bean> 的 id值一樣 --> <action name="employee_*" class="employeeAction" method="{1}"> <result>index.jsp</result> <allowed-methods>login</allowed-methods> </action></package>

在 applicationContext.xml 中需要配置 action 類的信息

(applicationContext.xml)

<!-- scope="prototype" 可以創建多個實體,默認為單例 --> <bean id="employeeAction" class="action.EmployeeAction" scope="prototype" />

推薦閱讀:

Spring Boot中使用Flyway來管理資料庫版本
Spring boot 進階之路
誰看過李守宏的 spring mvc教學視頻?不覺得想死嗎?
Ribbon源碼分析系列(一)

TAG:Struts2 | Spring |