问题 从Struts 1.2迁移 - > Struts2 vs Spring-MVC(主要是对Struts1.2 taglib支持)


主要问题:如果我的应用程序当前正在使用Struts 1.x - 并且我正在考虑迁移到用于MVC框架的EITHER Spring-MVC或Struts2 - 那么是否有任何一个可以更容易从Struts1.2迁移? 

为了澄清,我不是在问SpringMVC或Struts2总体上是否更好(在SO上有许多现有的Q来解决这个问题) - 从Struts1.2迁移到哪一个更容易。

从迁移的角度来看,我最感兴趣的一点是:继续的可能性 (在一开始的时候) 在JSP页面中使用struts1.x的taglib,同时在后端更改为Struts2(或SpringMVC)的API。 (换句话说,这些框架中的任何一个都可以支持Struts1.x的taglib作为插件)吗? [注意:这不是一个长期的解决方案 - 但会减少集成的痛苦,因为JSP不需要立即重写。我认为这个问题是有道理的 - 如果没有,请说明为什么]

话虽如此,我当然对任何其他迁移优势感兴趣。


一些背景:

我正在开发一个应用程序,其MVC层是通过Struts 1.2编写的。我们也在使用Spring IOC - 尽管该应用程序目前还没有Struts层和Spring的DI工具之间的强大集成。 (注意:这是我们在重构时计划纠正的内容,但我的理解是通过一些规划 - 即使使用Spring IOC + Struts2组合也可以正确/有效地完成。)

作为改进/重构代码库的一部分 - 我们希望升级到更现代的MVC框架(以便消除对Action / Form类的需求,并在可能的情况下使用基于Annotation的配置等)但保持整体经典-MVC风格 (即目前没有兴趣跳到JSF,Tapestry,GWT,Flex,Play等等。我明白这些是非常不同的东西 - 将它们混为一谈只是为了给出一个大致的想法..) 此外,我们的愿望是采用具有合理牵引力/动力的东西 - 因此裁决Stripes出于这个原因。这似乎只是让Spring-MVC和Struts2成为竞争者(尽管如果有其他类似风格和强大的行业牵引力 - 我们肯定会考虑它)

可以切换到其中任何一个都需要下降工作量 - 但计划是在模块化水平上进行。出于这个原因,如果其中任何一个支持Struts 1.2的taglib - 它将使切换/测试更容易(因为我们可以在新API中编写特定模块的“Control”实现 - 并让第二个服务器运行旧的Struts1 .2使用相同的jsps实现.QA测试在某种程度上将是“苹果到苹果”。这是否有意义,或者这种方法(如果可行的话)会导致比解决更多的麻烦?

另外,如上所述,虽然我的主要问题是使用Spring-MVC或Struts2运行struts1.2的taglib - 我也对Struts2-vs-Spring-MVC的任何其他MIGRATION优势感兴趣。


10611
2017-08-09 00:52


起源

我们正准备进行类似的升级。你遇到过任何障碍/困难过渡吗? - Scott


答案:


我没有在任何这些框架中看到对Struts 1 taglib的支持。

Struts2的一些小优点: 有一些关于将应用程序从Struts1迁移到Struts2的官方参考资料   - http://struts.apache.org/2.2.3.1/docs/migration-strategies.html   - http://struts.apache.org/2.2.3.1/docs/migration-tools.html

Struts2中甚至还有一个Struts1插件,允许您在Struts2中运行您的操作   - http://struts.apache.org/2.2.3.1/docs/struts-1-plugin.html

不幸的是,同样的引用说你必须转换旧的JSP,这不是一件容易的事。


3
2017-10-13 01:17





如果将Strut1.2迁移到Spring MVC,如果我们在WEB-INF / lib中包含struts.jar,我们仍然可以在Spring MVC中使用strut1.2 taglib,这意味着你仍然可以使用bean:define,bean:write ..逻辑:现在,逻辑:等于...(Struts1.2 taglib)在JSP中,只有更改是struts 1.2表单taglib(html:text,html:error html:form ...)应该更改为spring form taglib( form:path,form:form,form:path,form:error ...)这样我们就可以通过formBackObject将表单字段绑定到命令类数据,referenceData或初始化命令数据,以使用spring MVC JSP特性


4
2017-10-22 01:35





尝试阅读并比较以下文章:

也可以看看: “从Struts2迁移到Spring MVC” stackoverflow的问题。


2
2018-02-01 12:08





移动到任何一个基本上是相同的工作量和类型。

在那里时  S2中的Struts 1插件允许使用现有的S1操作类,如前所述,您仍然需要重写JSP文件,并且您的应用程序仍然会受到S1与servlet框架的紧密联系的影响。


1
2017-10-13 01:40



检查一下 stackoverflow.com/questions/13314240/... - GeekOnJava
@GeekOnJava为什么?! - Dave Newton