首页 / 知识
关于java:有没有人从Struts 1 迁移到另一个web 框架?
2023-04-17 00:00:00

Has anyone migrated from Struts 1 to another web framework?在我当前的项目中,过去几年我们一直在使用 Struts 1,而且……咳咳……Struts 已经过时了。我们正在慢慢地将前端代码迁移到使用来自服务器的 XML 的 Ajax 客户端。我想知道你们中是否有人将遗留的 Struts 应用程序迁移到不同的框架,以及在这样做时遇到了哪些挑战。 当然。从 Struts 迁移到 AJAX 框架是一种非常自由的体验。 (尽管我们使用 JSON 而不是 XML。更容易解析。)但是,您需要注意它实际上是对您的应用程序的完全重写。 取代传统的 MVC 数据库/JSP/Actions 方案,您会发现自己正在转向 Servlet/Javascript 方案,其中模型由 HTTP GET 请求表示,动作由 POST/PUT/DELETE 请求表示,并且视图由网络浏览器动态呈现。这导致了每个领域的有趣挑战: 服务器端 - 在服务器端,您需要开发一个标准来向客户端公开数据。最简单和最简单的方法是采用最适合您的数据层次结构的 REST 方法。使用 servlet 实现这一点相当简单,但 Sun 还开发了一个 Java 1.6 方案,使用看起来很酷的属性。 服务器端的另一个方面是选择传输协议。我知道您已经提到过 XML,但您可能需要重新考虑。浏览器之间的 XML 解析器差异很大。一个浏览器可能会将文档根设为第一个子节点,另一个浏览器可能会添加一个特殊的内容对象,并且它们都以不同的方式解析空格。更糟糕的是,主要浏览器似乎没有正确实现 normalize() 函数。这意味着 XML 解析很可能充满黑客攻击。 JSON 更容易解析且结果更一致。 Javascript 和 Actionscript (Flash) 都可以将 JSON 直接转换为对象。这使得访问数据成为 x.y 或 x[y] 的简单问题。还有大量的 API 可以处理所有可以想象的语言中的 JSON。因为它很容易解析,所以几乎支持比 XML 更好! 客户端 - 您将遇到的第一个问题是没有人了解如何编写 Javascript。特别是那些认为他们这样做的人。如果您有任何关于 Javascript 的书籍,请立即将它们扔出窗外。几乎没有关于该语言的好书,因为它们都遵循相同的"黑客"模式,而没有真正深入了解他们正在做什么。 从最底层开始,您的团队将需要 Javascript 开发方面的补习培训。从 Javascript 客户端指南开始。它是该语言的事实上的信息来源。下一站是 Douglas Crockford 的 Javascript 视频。我不同意他所说的一切,但他是为数不多的语言专家之一。 一旦你搞定了,考虑一下你想使用什么框架(如果有的话)。一般来说,我不喜欢 Prototype 和 Mootools 之类的东西。他们倾向于把一个简单的问题搞得更糟。尽管如此,您可以随意评估这些工具并决定它们是否适合您。 如果您因为团队经验不足而绝对觉得没有框架就无法生存,那么 GWT 可能适合您。 GWT 允许您使用 Java 代码快速编写 DHTML Web 应用程序,然后将它们编译为 Javascript。问题是您这样做会放弃大量的灵活性。 Javascript 语言比 GWT 公开的要强大得多。然而,GWT 确实让 Java 开发人员更快地掌握了速度。所以选择你的战斗。 这些是我能想到的关键领域。我可以说,一旦您从应用程序中获得支持,您就会松一口气。它可能有点像野兽。特别是如果您有经验不足的开发人员在您的 Struts 模型上工作。 :-) 有什么问题吗? 编辑 1:我忘了补充一点,您的团队应该认真研究 W3C 规范。这些是现代浏览器中可供您使用的 API。如果您发现有人使用 DOM 0 API(例如 document.forms[\\'myform\\'].blah.value 而不是 document.getElementById("blah").value)强制他们转录整个 DOM 1 规范,直到他们自上而下地理解它。 编辑 2:要考虑的另一个关键问题是如何记录您花哨的新 AJAX 应用程序。 REST 风格的界面很适合在 Wiki 中记录。我所做的是一个顶级页面,列出了每项服务和描述。通过单击服务路径,您将被带到一个文档,其中包含每个子路径的详细信息。从理论上讲,这个方案可以记录尽可能多的树。 如果您使用 JSON,则需要开发一个方案来记录对象。我刚刚列出了 Wiki 中可能的属性作为文档。这适用于简单的对象树,但对于更大、更复杂的对象可能会变得复杂。在这种情况下,您可以考虑补充 IDL 或 WebIDL 之类的东西。 (不能比 XML DTD 和模式差多少。;-)) DHTML 代码在其文档中更为经典。您可以使用像 JSDoc 这样的工具来创建 JavaDoc 样式的文档。只有一个警告。 Javascript 代码不适合在代码中记录。如果没有其他原因,它会使下载膨胀。但是,您可能会发现自己经常编写作为内聚对象运行的代码,但并未在幕后将其编码为这样的对象。因此,最好的解决方案是创建代表和记录 Javascript 对象的 JSDoc 框架文件。 如果您正在使用 GWT,文档应该很容易。 查看 Stripes 框架。如果您熟悉 struts,那么条纹对您来说会很有意义,但它会好得多。他们的网站上有一个 Stripes vs Struts 部分。你可以检查一下,看看你是否感兴趣。它允许您使用任何您想要的 ajax 框架,而且我认为从 struts 迁移到 stripes 不会花费很长时间。 |
最新内容
相关内容
纯命令行linux服务器?
纯命令行linux服务器?,密码,服务,系统,命令,终端,地址,百度,情况,状态,公共,在linux下如何访问服务器首先,连接相应linux主机,进入到linux命令行检查linux服务器命令?
检查linux服务器命令?,系统,信息,状态,情况,时间,工具,网络,环境,服务,电脑,如何查看linux服务器的版本和配置信息?1、登录到linux服务器执行llinux打包项目命令?
linux打包项目命令?,项目,文件,命令,软件,数字,系统,名称,工具,目录,格式,Linux打包和压缩1、Linux下,常用打包命令有2个,分别是tar和dd;常用的压linux项目更新命令行?
linux项目更新命令行?,工作,地址,系统,数据,信息,项目,标准,电脑,目录,命令,linux常用的命令有哪些1、linux系统常用操作命令linux系统常用操linux服务器域名命令?
linux服务器域名命令?,地址,信息,系统,网络,服务,环境,名称,网站,管理,电脑,linux临时启动域名解析服务的命令是1、在linux环境下能实现域名的linux服务器命令框?
linux服务器命令框?,系统,情况,状态,信息,数据,软件,指标,服务,在线,工具,linux系统怎样查看服务器性能命令1、使用top命令 top命令是一个常用服务器linux命令教程?
服务器linux命令教程?,系统,地址,密码,网络,设备,工作,服务,标准,连续,管理,重启服务器的linux命令1、首先我首要把linux开机, 命令 rebot 这个linux服务器分区命令?
linux服务器分区命令?,系统,管理,信息,设备,时间,命令,基础,首次,平均,情况,linux系统格式化分区用哪个命令Linux的磁盘格式化命令是“mkfs”,linux服务器上传命令?
linux服务器上传命令?,服务,软件,平台,数据,工具,系统,手机,电脑,设备,官网,从linux服务器中下载或上传文件您要问的是为什么linux服务器一直linux网络服务器命令?
linux网络服务器命令?,地址,网络,系统,名称,信息,工具,状态,中心,灵活,基础,linux系统下查看网关命令。linux查看网关命令,为您提供linux查看网linux网络服务器命令?
linux网络服务器命令?,地址,网络,系统,名称,信息,工具,状态,中心,灵活,基础,linux系统下查看网关命令。linux查看网关命令,为您提供linux查看网linux服务器基本命令?
linux服务器基本命令?,地址,系统,设备,网络,工作,标准,信息,电脑,命令,密码,linux如何查看ip地址命令(linux如何查看ip地址)1、目录方法1:使用U