现代化Struts 1.x应用程序

时间:2016-09-26 14:43:16

标签: spring-mvc struts-1 legacy

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

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

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

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

  1. 网页应使用响应式网页设计进行编码。
  2. 用Spring MVC替换struts 1.x
  3. 我希望将现代化分解为以下几个阶段:

    1. 阶段1 - 将所有jsp页面更改为HTML 5和CSS 3
    2. 阶段2 - 将所有DAO类更改为Spring JDBC Template或Spring JPA 和由Spring管理的交易
    3. 阶段3 - 最终,用Spring MVC替换Struts 1.x动作表单,动作
    4. 在开始更改之前,我想知道是否可以:

      1. 支持HTML 5和CSS 3的Struts 1.x?我正在寻找用HTML 5和JSTL / EL替换所有struts 1.x html taglibs。
      2. Spring 3/4运行Struts 1.x?是否可以使用Spring bean运行非Spring管理的pojo?
      3. 我应该注意什么以及如何/如何/最佳实践来处理这一现代化进程?代码库大约有500k的HTML / JSP代码和300万个Java代码。

2 个答案:

答案 0 :(得分: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());

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

    干杯。

答案 1 :(得分:2)

(不是答案,信息。)

  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。
  6. 最重要的是你有一个相当大的应用程序。而不是转换整个东西,我会考虑从主线应用程序中删除功能,并将其分解为子应用程序,每个子应用程序可以使用任何技术堆栈似乎合理。

    作为一名顾问,我做了很多像这样的项目:这是一项繁琐的工作,需要广泛的知识和技能,而且很难做到正确。