升级Struts 1.x应用程序

问题描述 投票:1回答:2

我想现代化我的Struts 1.x应用程序。 有很多文章主张迁移代码,而不是重写整个系统。

我想征询成功使遗留应用程序现代化的人的建议。

我当前的系统使用struts 1.x和JDBC准备的语句作为数据访问层。

我期待通过以下目标来改进传统应用程序:

  1. 网页应考虑响应式网页设计。
  2. 用Spring MVC替换struts 1.x

我希望将现代化分为以下几个阶段:

  1. 阶段1-将所有jsp页面更改为HTML 5和CSS 3
  2. 第2阶段-将所有DAO类更改为Spring JDBC模板或Spring JPA和由Spring管理的事务
  3. 阶段3-最终,用Spring MVC替换Struts 1.x动作表单,动作

在开始更改之前,我想了解一下是否有可能:

  1. 带有HTML 5和CSS 3的Struts 1.x? 我正在寻找用HTML 5和JSTL / EL替换所有的struts 1.x html标签库。
  2. 在Spring 3/4上运行Struts 1.x? 是否可以使用Spring bean运行非Spring管理的Pojo?

我应该注意什么以及如何/最佳做法来处理此现代化过程? 该代码库大约包含50万个HTML / JSP代码和300万个Java代码。

spring-mvc struts-1 legacy
2个回答
3
投票
  1. 自从我上次使用Struts 1.x以来已经有一段时间了,但是我认为至少用JSTL / EL替换大多数Struts标签没有问题。 您应该能够使用Struts 1.x JSP绘制HTML5。 我记得当时很少或根本没有使用Struts标签,只使用JSTL / EL,但这是在HTML5之前的。

  2. 您可以从任何Struts ActionForm或Webapp内的任何类中调用Spring Context。 您可能必须手动执行操作,而不要使用注释,例如:

    WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(getServletContext());

综上所述,我可以看到您打算对您的应用程序进行认真的更新,因此我必须问,您是否对保留Struts 1.x持肯定态度? 如果您想放弃Struts标签,请使用Spring 3/4和HTML 5,为什么不完全放弃Struts并将您的应用迁移到Spring MVC? 它非常易于使用,功能强大,而且不用说,它与实现业务逻辑,持久性等的Spring组件完美集成。

干杯。


2
投票

(不是答案,仅供参考。)

  1. 没有理由您不能让S1应用程序与Spring MVC一起运行。 这是逐个迁移而不是较长的项目进行完全替换的合理方法。
  2. 较早的Spring对Struts 1有直接支持。根据您的时间范围,我可能会考虑使用较早的Spring,直到您继续学习为止。
  3. 用纯HTML / CSS替换S1标签会很麻烦,因为S1标签不仅会渲染输入字段(例如标签,错误消息等),还会呈现其他内容。这是完全可行的,特别是如果您编写自己的自定义标签。
  4. jQuery v。(AngularJS | React |类似)切换到完整的客户端应用程序是一个很大的提升,特别是如果您的后端尚未采用这种方式设计的话。 我不会这样做,但是您可以通过将业务逻辑放在自己的位置并从Web层使用它来开始。 然后...
  5. ...您开始使用注入到现有页面中的jQ或其他客户端框架在客户端使用API​​调用。 只有到那时,我才会开始考虑使用完整的SPA。

底线是您有一个相当大的应用程序。 与其转换整个过程,我不考虑从主线应用程序中删除功能并将其分解为子应用程序,每个子应用程序都可以使用任何看起来合理的技术堆栈。

作为顾问,我已经完成了很多这样的项目:繁琐的工作需要大量的知识和技能,而且很难正确地做。

© www.soinside.com 2019 - 2024. All rights reserved.