项目需要有Struts包和Spring的core aop web 三个包(注意不是Spring自己的Web MVC) 将Spring整合Strus具体的 classpath 文件如下所示
﹤?xmlversion=encoding=UTF?﹥
﹤classpath﹥
﹤classpathentrykind=srcpath=src/﹥
﹤classpathentrykind=conpath=orgeclipsejdtlaunchingJRE_CONTAINER/﹥
﹤classpathentrykind=conpath=reJEE_CONTAINER/﹥
﹤classpathentrykind=libpath=WebRoot/WEBINF/lib/antlrjar/﹥
﹤classpathentrykind=libpath=WebRoot/WEBINF/lib/beanutilsjar/﹥
﹤classpathentrykind=libpath=WebRoot/WEBINF/lib/digesterjar/﹥
﹤classpathentrykind=libpath=WebRoot/WEBINF/lib/fileuploadjar/﹥
﹤classpathentrykind=libpath=WebRoot/WEBINF/lib/loggingjar/﹥
﹤classpathentrykind=libpath=WebRoot/WEBINF/lib/validatorjar/﹥
﹤classpathentrykind=libpath=WebRoot/WEBINF/lib/jakartaorojar/﹥
﹤classpathentrykind=libpath=WebRoot/WEBINF/lib/strutsjar/﹥
﹤classpathentrykind=libpath=WebRoot/WEBINF/lib/mysqlconnectorjavabinjar/﹥
﹤classpathentrykind=conpath=MYECLIPSE_SPRING_CORE/﹥
﹤classpathentrykind=conpath=MYECLIPSE_SPRING_AOP/﹥
﹤classpathentrykind=conpath=MYECLIPSE_SPRING_WEB/﹥
﹤classpathentrykind=outputpath=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 配置文件出错导致的