java

位置:IT落伍者 >> java >> 浏览文章

五步搞定Spring整合Strus


发布日期:2023年03月27日
 
五步搞定Spring整合Strus

项目需要有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 配置文件出错导致的

上一篇:Spring事务管理高级应用难点剖析(4)

下一篇:用Spring Web Flow和Terracotta搭建Web应用