Spring MVC和Struts混合使用

5

这是一个非常普遍的问题。

我有一个电子商务Web应用程序,大约4年前我独自构建了它。当时,我决定使用Struts作为我的mvc框架。随着时间的推移,我在其他项目中工作时,开始欣赏并感觉到Spring MVC提供的功能集和灵活性。

服务层很稳定,并使用Spring框架构建。

我想重构我的当前Web层,现在使用Spring MVC。但正如我之前提到的,我是独自编写该应用程序的,而且它更像是一个副业项目。重点是我没有时间,也不想冒险抛弃并完全重新设计Web层。

因此,我正在向社区询问他们对这种重构工作的策略是什么?

理想情况下,我希望一次处理一部分,并最终混合两种技术,直到最终可以完全关闭Struts。

我的网站所有新功能最好都使用Spring MVC开发。

好消息是,我的现有视图,目前正在使用Apache Tiles,不需要太多更改,除了删除Struts标记库并将其替换为Spring MVC。

我想保留的一个要求是URL不应更改。

换句话说,ActionServlet和DispatcherServlet必须映射到不同的路径,但以某种方式进入不同的实现。

例如,我如何说mysite.com/show-product映射到Spring Dispatcher servlet,但mysite.com/show-category映射到Struts action servlet。

期待您的想法。

2个回答

1

您可以在同一容器中运行它们,并进行适当的映射。

我不明白问题“我应该一个接一个地将操作类转换为Spring控制器”,否则你会怎么做呢?

一个操作类是否应该映射到控制器的方法,更多取决于您现有应用程序的组织方式,或者至少取决于您希望Spring应用程序的组织方式。


是的,我理解您关于将操作类转换为Spring控制器的观点,我想那真的没有意义...对于混淆感到抱歉...关于在同一容器中运行它们,如果我有一个要求,即URL不应更改...这方面没有办法,对吧?换句话说,ActionServlet和DispatcherServlet必须映射到单独的路径,对吗?我需要像http://www.mysite.com/show-product(struts)和www.mysite.com/2.0/show-product(spring mvc)这样的东西,对吗? - Roy Kachouh
@RoyKachouh 这取决于情况; 如果您需要选择性地禁用S2请求处理,则会使问题更加复杂。从S2.1.mumble开始,这是可能的。您可以尝试使用自定义过滤器或拦截器,但我不确定没有考虑一些拦截器机制会是什么样子。 - Dave Newton
你能找到解决方案吗? - abhi
@abhi 要问什么?如果您有问题,请在新问题中提出。 - Dave Newton

0

那篇关于将Spring核心与Struts集成的文章,但不是Spring MVC和Struts的集成。 - Javasick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接