項目需要有Struts包和Spring的core aop web 三個包(注意不是Spring自己的Web MVC) 將Spring整合Strus具體的 classpath 文件如下所示
﹤?xml version= encoding=UTF?﹥
﹤classpath﹥
﹤classpathentry kind=src path=src/﹥
﹤classpathentry kind=con path=orgeclipsejdtlaunchingJRE_CONTAINER/﹥
﹤classpathentry kind=con path=reJEE_CONTAINER/﹥
﹤classpathentry kind=lib path=WebRoot/WEBINF/lib/antlrjar/﹥
﹤classpathentry kind=lib path=WebRoot/WEBINF/lib/beanutilsjar/﹥
﹤classpathentry kind=lib path=WebRoot/WEBINF/lib/digesterjar/﹥
﹤classpathentry kind=lib path=WebRoot/WEBINF/lib/fileuploadjar/﹥
﹤classpathentry kind=lib path=WebRoot/WEBINF/lib/loggingjar/﹥
﹤classpathentry kind=lib path=WebRoot/WEBINF/lib/validatorjar/﹥
﹤classpathentry kind=lib path=WebRoot/WEBINF/lib/jakartaorojar/﹥
﹤classpathentry kind=lib path=WebRoot/WEBINF/lib/strutsjar/﹥
﹤classpathentry kind=lib path=WebRoot/WEBINF/lib/mysqlconnectorjavabinjar/﹥
﹤classpathentry kind=con path=MYECLIPSE_SPRING_CORE/﹥
﹤classpathentry kind=con path=MYECLIPSE_SPRING_AOP/﹥
﹤classpathentry kind=con path=MYECLIPSE_SPRING_WEB/﹥
﹤classpathentry kind=output path=WebRoot/WEBINF/classes/﹥
﹤/classpath﹥
對Struts 配置文件做修改加入Spring 托管功能
創建 Spring 配置文件將文件放到src 目錄下文件名稱為 applicationContextxml 編譯後放到WEBINF/classes/ 下
配置strutsconfigxml文件添加 spring的插件 位置在 strutsconfig 文件的最末尾
<plugin className=orgspringframeworkwebstrutsContextLoaderPlugIn>
<setproperty property=contextConfigLocation
value=/WEBINF/classes/applicationContextxml />
plugin>
修改 Struts 的 strutsconfigxml 中的Action配置原來的代碼
<action
attribute=loginForm
input=/loginjsp
name=loginForm
path=/login
scope=request
validate=true
type=comteststrutsactionLoginAction />
改變後的代碼
<action
attribute=loginForm
input=/loginjsp
name=loginForm
path=/login
scope=request
validate=true
type=orgspringframeworkwebstrutsDelegatingActionProxy />
type 部份為修改內容 這裡將使用spring的代理器來對Action進行控制 當提交到/logindo是將控制權交給了spring然後由spring來把它轉回到struts的Action
Spring整合Strus需要配置spring來實例化上一步中被刪除的 Action 類
xml version= encoding=UTF?>
>
<beans>
<bean name=/login class=comteststrutsactionLoginAction>bean>
beans>
Spring 通過 orgspringframeworkwebstrutsDelegatingActionProxy 這個類 然後根據 Struts 配置文件中的 和 Spring 配置文件中的 來將 Spring 管理下的 Struts Action 類和提交的路徑匹配起來 這些就是關於轉交控制權的配置內容
實踐的過程中發現必須把 singleton=false去掉才行 否則就會無法初始化 Spring 框架 不知道具體的原因是什麼
既然這個 Struts的Action 已經通過 Spring 來初始化 所以就可以加入依賴注入 整合Hibernate 的功能了 例如典型的情況
comteststrutsactionLoginAction
private UserManager userManager;
public UserManager getUserManager()
public void setUserManager(UserManager userMgmr)
public ActionForward execute(ActionMapping mapping
ActionForm form
HttpServletRequest request HttpServletResponse response) {
Systemoutprintln(userManager= + getUserManager());
getUserManager()someBusinessMethods();
}
然後就可以配置
<bean name=/login class=comteststrutsactionLoginAction>
<property name=userManager>
<ref bean=userManagerBean />
property>
bean>
<bean id=userManagerBean class=managerUserManager />
同理 Spring整合Hibernate 和沒Struts 的時候一樣 也可以在這個文件中進行配置即可
Spring整合Strus最後一步 測試 只要能打印出來 userManager 不為空 就說明整合成功了 如果出現 action servlet 不可用的錯誤 一般都是 Spring 配置文件出錯導致的
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27938.html