现代化 Struts 1.x 应用程序

Modernizing Struts 1.x Application

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

我想征求已成功实现遗留应用程序现代化的人的建议。

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

我期待通过以下目标改进遗留应用程序:

  1. 网页编码时应牢记响应式网页设计。
  2. 将struts1.x替换为SpringMVC

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

  1. 第 1 阶段 - 将所有 jsp 页更改为 HTML 5 和 CSS 3
  2. 阶段 2 - 将所有 DAO 类 更改为 Spring JDBC 模板或 Spring JPA 以及由 Spring
  3. 管理的交易
  4. 阶段 3 - 最终,将 Struts 1.x 操作表单和操作替换为 Spring MVC

在开始更改之前,我想了解是否可以:

  1. Struts 1.x 与 HTML 5 和 CSS 3?我正在考虑用 HTML 5 和 JSTL/EL.
  2. 替换所有 struts 1.x html 标签库
  3. 运行 Struts 1.x 和 Spring 3/4? 运行 非 spring 托管的 pojo 是否可以使用 Spring bean?

我应该注意什么?how/what 处理此现代化过程的最佳做法是什么?代码库约为 500k HTML/JSP 代码和 300 万 Java 代码。

  1. 自从我上次使用 Struts 1.x 以来已经有一段时间了,但我发现至少将大部分 Struts 标签替换为 JSTL/EL。您应该能够使用 Struts 1.x JSP 绘制 HTML5。我记得使用很少或没有使用 Struts 标签,仅使用 JSTL/EL,但这是在 HTML5.

  2. 之前
  3. 您可以从任何 Struts ActionForm 调用 Spring 上下文,或者基本上是您的网络应用程序中的任何 class。您可能必须手动完成,而不是使用注释,如下所示:

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

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

干杯。

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

  1. 您没有理由不能将 S1 应用 运行 与 Spring MVC 一起使用。这是一个合理的逐个迁移的方式,而不是一个较长的项目进行完全替换。
  2. 较旧的 Spring 直接支持 Struts 1. 根据您的时间安排,我可能会考虑使用较旧的 Spring,直到您走得更远。
  3. 用纯 HTML/CSS 替换 S1 标签会很痛苦,因为 S1 标签会呈现除输入字段之外的其他内容(例如,标签、错误消息等)。这是完全可行的,尤其是如果您编写您自己的自定义标签。
  4. jQuery v. (AngularJS | React | similar) 切换到一个完整的客户端应用程序是一个很大的提升,特别是如果你的后端还没有设计成方法。我不会那样做,但您可以通过将业务逻辑放在自己的位置并从 Web 层使用它来开始。那么...
  5. ...您开始使用 jQ 或注入现有页面的其他客户端框架在客户端使用 API 调用。只有这样,我才会开始考虑使用完整的 SPA。

最重要的是你有一个相当大的应用程序。我不会考虑从主线应用程序中删除功能并将其分解为子应用程序,而不是转换整个东西,每个子应用程序都可以使用任何看起来合理的技术栈。

作为顾问,我做过很多这样的项目:工作很忙,需要广泛的知识和技能,而且很难做好。