【问题标题】:Spring MVC Struts MixingSpring MVC Struts 混合
【发布时间】:2011-12-20 17:06:51
【问题描述】:

这确实是一个普遍的问题。

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

服务层是实体的,是使用spring框架构建的。

我想重构我当前的 Web 层以现在使用 Spring MVC。但正如我之前提到的,我单独编写了这个应用程序,它更像是一个附带项目。关键是我没有时间,也不想冒险丢弃并从头开始重新设计 Web 层。

所以我在询问社区他们对这项重构工作的策略是什么?

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

我网站的所有新功能最好在 Spring MVC 中开发。

好消息是我现有的视图,目前使用的是 apache tile,除了删除 struts 标记库并用 Spring MVC 替换它们之外,不必进行太多更改。

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

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

例如,我怎么能说 mysite.com/show-product 映射到 Spring Dispatcher servlet,而 mysite.com/show-category 映射到 Struts action servlet。

感谢您的想法。

【问题讨论】:

    标签: java spring-mvc struts2


    【解决方案1】:

    您可以使用适当的映射在同一个容器中运行它们。

    我不明白“我应该一次将动作类转换为弹簧控制器”的问题,否则你会怎么做?

    动作类是否应该映射到控制器的方法与您现有应用程序的组织结构有关,或者至少与您希望 Spring 应用程序的组织方式有关。

    【讨论】:

    • 是的,我理解你关于将动作类转换为弹簧控制器的观点,我想这真的没有意义......我很抱歉造成混乱......关于运行它们同一个容器,如果我要求 URL 不应该改变怎么办......没有办法解决它吗?换句话说,ActionServlet 和 DispatcherServlet 必须映射到不同的路径,对吧?我必须有一些链接 mysite.com/show-product (struts) 和 www.mysite.com/2.0/show-product (spring mvc) 对吗?
    • @RoyKachouh 取决于;它使问题更加严重,因为您需要有选择地禁用 S2 请求处理。这可以从 S2.1.mumble 开始。您也许可以使用自定义过滤器,或者也可以使用拦截器,尽管我不确定拦截器机制会是什么而不考虑它。
    • 你能找到解决办法吗?
    • @abhi 去什么?如果您有任何问题,请在新问题中提出。
    【解决方案2】:

    不,您不需要重写您的操作。见这里:

    http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/web-integration.html

    查找“18.4 Apache Struts 1.x 和 2.x”

    【讨论】:

    • 那篇关于将 Spring 核心与 Struts 集成,而不是 Spring MVC 和 Struts 的文章
    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多