Struts 1.x 与 Struts 2.x

2023-11-23

我已经回顾了一些关于 SO 的 Struts 1 vs 2 问题,但似乎没有一个能从我正在看待的角度回答这个问题。

我即将开始构建一个新系统,对一个非常旧的桌面应用程序进行彻底的重新设计。目标是使其基于网络,添加更多功能,使其更可用等(通常的重新设计原因)。

开发该系统的团队主要是 Java 开发人员,在过去 5 年里广泛致力于 Struts 1.x 的开发。

该系统的设计目的是在未来的许多年里都可以使用,因此在 3 到 5 年内出现更好的框架时再次重新设计的想法是不可行的。它无意大量使用 AJAX。

我的问题是,当我的团队在 Struts 1.x 方面经验丰富时,为什么我还要费心迁移到 Struts 2。我知道有一些改进,但我担心让团队加快速度所损失的时间、由于不正确的使用而导致的返工等将远远超过我们从 Struts 2 中获得的任何好处。我们喜欢 Struts 1,它做了我们想要的事情需要它这样做,并且所有设计模式、标准、最佳实践等都已就位。

Struts 2 中是否有任何杀手级功能或 Struts 1 中我不知道的严重问题会影响我继续使用 Struts 1 的决定。


如果您从头开始构建一个系统,我肯定会转向 Struts 2.x 版本。对于 Struts 1.x 团队来说,学习曲线不会很好,但您将能够利用最新的 MVC 框架。

对我来说,Struts 2.x 提高生产力的两个主要特性是:

  • 内置 AJAX 支持
  • 不再有 ActionForms - 如果需要,您可以直接绑定到域对象,因此这个中间步骤已经消失。

如果您正在处理一个大项目,您可能需要查看组件框架,例如JSF 2 或检票口。如果您决定继续使用基于 Action 的框架,那么我个人认为 Stripes 是一个更高效的框架。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Struts 1.x 与 Struts 2.x 的相关文章

  • Eclipse 中的 Java 构建路径问题

    在 Eclipse 中 我有一个与我的构建路径相关的错误 错误 Project XX is missing required library middlegen 2 1 jar 但该库在构建路径配置之前被删除 是不是缓存或者其他方面有问题
  • 将 Java 对象图保存为 XML 文件

    将任意 Java 对象图保存为 XML 文件 并能够在以后重新水合对象 的最简单易用的技术是什么 这里最简单的方法是序列化对象图 Java 1 4 内置了对 XML 序列化的支持 我成功使用的一个解决方案是 XStream http x s
  • 无法禁用 Firestore 中的离线数据

    从我的数据中删除数据后Firestore Database 这需要我的Android app一段时间后才意识到数据已被删除 我认为这是由于自动数据缓存而发生的 我的应用程序与离线使用无关 我想禁用此功能 我已将其添加到我的自定义中Appli
  • 无法执行目标 org.codehaus.mojo:exec-maven-plugin:1.5.0:exec

    三周前 我完成了一个网络应用程序的工作 一切都运行没有问题 现在 三周后 没有任何更改 我想再次运行该应用程序 但这次我收到以下错误消息 An error occurred while parsing the server response
  • 在 libgdx 中批处理多维数据集时出现问题

    我正在尝试开发一款游戏 在屏幕上渲染多达 300 个立方体 为每个多维数据集创建新的 modelInstance 时 modelBatch 的性能非常糟糕 据我所知 没有 3d 批处理可以将所有立方体批处理到一次绘制调用 所以我拼命地尝试以
  • SharePoint 2010 Web 服务上的 Java JBoss 401 错误

    我的代码在 Eclipse IDE 中测试时运行成功 我正在使用生成的 Copy wsdl 通过 Web 服务连接到 MS SharePoint 2010 当我在 JBoss 服务器上部署代码 运行 Adob e LifeCycle 时 我
  • 在 Java 中将字符串复制到文件的开头

    我想将一个字符串写入文件的开头 我该怎么做 我根本不知道如何添加字符串 这就是我到目前为止所做的 public static void prepend String filename String data throws IOExcepti
  • 获取文本文件中行的字节偏移量?

    我有一个文本文件 例如 one two three four five 我需要获取文件中每一行的偏移量 我如何在 Java 中做到这一点 我搜索了一些 I O 库 如 BufferedReader 和 RandomAccessFile 但我
  • 如何在休眠中持久保存实体期间验证实体的约束

    我有一个带有字段名称的实体 我希望它不超过255 所以我这样定义它 Entity public class A implements Serializable NotNull Size max 255 private String name
  • Java TCP Echo 服务器 - 广播

    我有一个简单的回显服务器 我希望当连接的用户向服务器键入任何内容时 所有其他客户端和该客户端都会收到消息 MOD 它现在不会发送给所有客户端 但它应该发送 而且我只是不知道我的代码出了什么问题 所以现在它只会将消息 MOD 发送给发送消息的
  • 控制启动时的竞争条件

    我有一些代码想要执行一些一次性初始化 但这段代码没有明确的生命周期 因此在初始化完成之前 我的逻辑可能会被多个线程调用 所以 我想基本上确保我的逻辑代码 等待 直到初始化完成 这是我的第一次剪辑 public class MyClass p
  • 如何在 HashiCorp Vault 中安全地存储 Spring Boot 应用程序的机密?

    我已阅读以下教程 保险库配置 https spring io guides gs vault config 好的 我们安装了 Vault 服务器并放置了 2 对秘密属性 vault kv put secret gs vault config
  • xclock 工作,X11 DISPLAY 设置但仍然 java.awt.HeadlessException:

    获取 java awt HeadlessException 似乎是一个非常常见的问题 并且 中已经讨论过 以下问题 没有 X11 DISPLAY 变量 这是什么意思 https stackoverflow com questions 662
  • 谷歌的Json解析Gson库:JsonElement和JsonObject有什么区别?

    public abstract class JsonElement extends Object 表示 Json 元素的类 它可以是 JsonObject JsonArray JsonPrimitive 或 JsonNull public
  • 不支持使用 JDK 版本“11.0.1”进行构建。请安装 JDK 版本 `1.8.0`

    我已经下载了 Visual Studio for Mac 并尝试开始学习 Xamarin iOS 和 Android 问题是当我尝试运行 android 项目时出现以下错误 Building with JDK Version 11 0 1
  • 如何在不下载子项的情况下从 Firebase 获取子项密钥?

    我有一个 Firebase 数据库 其中的节点 items 有很多子项 我想导入子项键的列表 由于每个子项都包含相当多我对此不感兴趣的数据 因此我想仅下载子项密钥 以最大程度地减少传输的数据量 为了便于说明 假设我有以下数据结构 然后我想获
  • 在地图中的图块上实现鼠标单击事件

    我正在尝试在 JPanel 上实现图像 基本上是地图上的图块 的鼠标单击事件 我只是不知道该怎么做 我有一个扩展 JPanel 的 Main 类 我正在从图块服务器检索图块 并根据特定的缩放级别在 Main 类的 PaintComponen
  • 确保 MAVEN_HOME 设置正确

    这里是 Java 和 Maven 菜鸟 使用 OSX 10 8 并使用 HomeBrew 安装 Maven 1 如果我说which mvn我会得到这个 usr local bin mvn 2 如果我说echo MAVEN HOME我不会得到
  • 项目级别的@PowerMockIgnore

    在 Maven 中运行时 我的 powermock 测试用例出现以下错误 java lang LinkageError loader constraint violation loader instance of org powermock
  • Java编程编译jar

    我有一个文本文件中的java源代码 必须在源代码中输入一些自定义的硬编码变量 然后将其转换为 jar 这是可行的 但是当我运行 jar 时 找不到 Main 类 当我用 WinRAR 解压 jar 文件时 我似乎找不到错误 当我通过 cmd

随机推荐

  • Node.js 命名空间

    努力充分利用 Node 的 module require exports 设置来进行正确的 OO 编程 创建全局命名空间而不使用导出 如在客户端 js 应用程序开发中 是一种好的做法吗 因此 在模块 Namespace Constructo
  • 如何在 C# Winforms 中保存 app.config 中的配置

    有人可以给我一个如何在 app config 中保存键 值的示例吗C 和WinForms In ASP NET Configuration config WebConfigurationManager OpenWebConfiguratio
  • 将 Angular 应用程序添加到现有项目

    我有一个现有项目 我想在其中使用 Angular CLI 添加 Angular 应用程序 项目结构现在看起来像这样 节点模块 src client server shared angular cli json 包 json 客户端和共享文件
  • Python计数器:打印计数为x的键

    说我有一个Counter代表单词集合的对象 gt gt gt words hello hello hello world gt gt gt counter Counter words 找出哪些单词计数为 1 的一种方法是迭代counter
  • Java 中有 OLE 自动化吗?

    是否可以在 Java 中使用 OLE 自动化 如果不能 为什么在 Java 中不能呢 我正在寻求以不同格式 即 csv 等 自动导出 Excel 电子表格 感谢您提前的回答 最近 2013 年 3 月 一位独立贡献者向 JNA 添加了对通用
  • 在哪里可以找到有关 Perl 特殊变量的信息?

    Perl 有很多特殊变量 例如 F 等等 所有 Perl 的特殊变量都记录在哪里 Perl 使用的所有特殊变量都记录在佩尔多克 佩尔瓦尔 您可以访问随您的产品一起提供的本文档版本perl通过输入perldoc perlvar在命令行上
  • jQuery 选择器 - 其中项目没有特定类别的子项

    我想选择属于 nav 直接子项的列表项 它们本身没有具有 活动 类的直接子项 我认为应该是这样 但它不起作用 nav gt li not gt a active 您可以这样做 nav gt li not has a active
  • Ada 中的自定义“图像属性”?

    所以我有一件事 type Thing is new record elements end record 我有一个将其字符串化的函数 function ToString t Thing returns string 我希望能够告诉 Ada
  • 在现有映射对象中添加或覆盖 aes

    这是最小的情况 df lt data frame x 1 5 y 1 col 1 5 mapping lt aes x x y y ggplot df mapping geom point size 10 现在我想在现有的基础上添加 或覆盖
  • Linux 中的优雅关闭服务器套接字

    我希望能够停止侦听 Linux 中的服务器套接字 并确保从客户端角度打开的所有连接都得到正确处理并且不会突然关闭 即 接收 ECONNRESET ie sock create socket listen sock non zero back
  • 使用 jquery contains 更改 div 中文本的颜色

    这里 div 内的整个文本都变成红色 但我只需要改变 bar 字的颜色
  • 在 WooCommerce 中以编程方式创建可变产品和两个新属性

    我想以编程方式创建一个具有两个新变量属性的变量产品 父 产品 所有这些属性都来自 WordPress 插件 因此没有对 API 的 HTTP 请求 这两个变量属性也应该动态创建 如何才能做到这一点 使用 WooCommerce 版本 3 更
  • 如何获取SceneKit中子节点旋转后的真实位置?

    我正在使用 SceneKit 开发一个场景 我有一个带有子节点的主节点 Main node SCNNode planet SCNNode node planet geometry SCNSphere sphereWithRadius 2 p
  • C# 中如何检查两个字符串是否部分匹配? [复制]

    这个问题在这里已经有答案了 可能的重复 是否有为 C 编写的模糊搜索或字符串相似性函数库 我正在创建一个应用程序 它将排除用户输入的歌曲或艺术家或专辑名称 然后将查找字符串数组或数组列表以查找任何可能的匹配项 自动建议将根据匹配百分比计算
  • iOS 如何在没有堆栈跟踪的情况下调试崩溃,例如: [__NSArrayM objectAtIndex:]: 索引 0 超出空数组的范围?

    我试图关闭模态视图控制器并收到以下错误 由于未捕获的异常 NSRangeException 而终止应用程序 原因 NSArrayM objectAtIndex 索引 0 超出空数组的范围 有一次我花了 4 个小时尝试调试这样的错误 谁能告诉
  • JVM 如何知道运行时在哪里捕获异常?

    据我了解 throw是一个原始的 jvm 命令 当调用它时 JVM 检查当前调用堆栈是否可以捕获它 如果不能 那么 java 只是弹出调用堆栈 几乎就像调用 return 一样 然后jvm 检查当前调用堆栈是否可以捕获它 递归地依此类推 我
  • os.exec* 的第一个参数

    来自 python 文档 各种 exec 函数采用 新程序的参数列表 加载到进程中 在每种情况下 这些参数中的第一个被传递 将新程序作为自己的名称 而不是作为用户可能的参数 已在命令行中输入 为了 C程序员 这是argv 0 传递给程序的
  • .NET WebApi 身份验证

    目前 我有一个销售小部件的 MVC Web 应用程序 用户使用表单身份验证登录我们的系统 然后可以根据他们所属的组执行各种功能 即下订单 查看订单 取消订单等 我们的任务是编写一个 API 让第三方能够在我们的系统中创建和查看订单 每个第三
  • 如何在 Django 中为外键字段定义 __str__ 方法?

    我如何定义strDjango 中外键字段的方法 下面的代码不起作用 class A models Model name models ForeignKey B def str self return self name 如果你的型号B ha
  • Struts 1.x 与 Struts 2.x

    我已经回顾了一些关于 SO 的 Struts 1 vs 2 问题 但似乎没有一个能从我正在看待的角度回答这个问题 我即将开始构建一个新系统 对一个非常旧的桌面应用程序进行彻底的重新设计 目标是使其基于网络 添加更多功能 使其更可用等 通常的