本文主要講述如何将Spring Framework 4.2.1版與Struts 2.3.24.1版通過XML配置進行內建,進而用于Web項目的開發。
Spring是一個企業Java應用開發架構,而Struts 是一個Java Web應用開發架構,這意味着兩者可以結合在一起用于開發Web應用。
Spring MVC是Spring架構的一部分,用于建立Java Web應用,而Struts立足于Java Servlet API的基礎上也使用了MVC架構。是以,當Spring和Struts相內建時,在MVC部分不應該重疊,而應該互相補充。
Spring架構有一個優秀的依賴注入管理,是以可用于管理業務邏輯Bean和Struts的Action Bean。另一方面,我們可以使用Struts負責Web應用的MVC部分。
Struts 2架構提供了一個名為Spring Plugin的插件,通過此插件可以與Spring架構進行內建。此插件提供了這樣的JAR包:struts2-spring-plugin-VERSION.jar,把此檔案放入Web項目中。
要啟用Spring Plugin插件,讓Spring架構通過其反轉控制容器來管理Struts的所有Action Bean,在Spring應用持續上下文配置檔案中進行聲明。這樣,在Struts的配置檔案中,就可以使用Bean的名字來代替原先的“包名+類名”的方式。比如可以這樣:
而原先是這樣:
另外,還可以使用Spring架構的@Autowired注釋讓Spring字段注入依賴進類中。
下面我們開始實戰。
本文使用的工具如下:
修改項目的Facet,調整為Dynamic Web Module (3.0)和Java (1.8)
聲明Java和Spring架構的版本
添加Spring架構的依賴
添加Struts 2架構的依賴
添加Spring Plugin插件的依賴
添加編譯時所需的Java Servlet & JSP依賴
建立名為User.java的模型類
建立名為UserDAO.java的業務邏輯類:
可見,有效的使用者名為“admin”,密碼為“pwd”。
編寫Struts的Action類LoginAction.java
需要了解:
userDao的Setter方法是供Spring注入實際的實作類
成員變量user的getter和setter方法用于表單與模型對象User的一一對應
方法execute()簡單的重定向到SUCCESS頁面或ERROR頁面
建立名為LoginForm.jsp的頁面
登入成功的LoginSuccess.jsp頁面
登入失敗的LoginError.jsp頁面
web.xml的内容如下
在項目src下建立struts.xml配置檔案
在/WEB-INF/spring目錄下建立名為appContext.xml的配置檔案。
最終項目結構如圖所示:
可以看到
輸入“admin”和“pwd”後,可以看到
如果輸入錯誤,可以看到:
可見,項目完全工作正常。Spring 4與Struts 2項目基于XML的內建是成功的。