为什么我应该学习和使用Struts框架?

26

我是一名Java开发人员,虽然经验不算丰富,但对大多数概念都比较熟悉。

最近我使用Tomcat/JSP构建了一个网站(约30个动态页面)。我犯了新手错误,在JSP中包含了大量核心逻辑,理由是“这只是一个简单的项目”。

我付出了代价来学习。因此,我现在正在使用servlet在Google应用引擎中重新构建该应用程序,并计划使用Velocity来实现它,使用Model-View-Controller设计模式。

我也在考虑Struts,但以前没有使用过这个框架。

有人能说服我为什么应该将struts纳入这个项目吗?对于一个由一两个人完成的中等规模的项目,它确实会给我带来很多好处吗?

学习strut需要额外的成本,那么收益是否超过成本呢?或者使用Velocity足以隔离逻辑?你们的意见是什么?


3
Struts很糟糕。如果你想让自己受益,使用Wicket(组件化)或Spring MVC(动作化)。两者都是优秀且直观的框架。 - Sean Patrick Floyd
7
Struts2与Struts有很大的不同,而与Spring MVC或Stripes(基于行为的)非常相似。 - leonbloy
8
Struts 1非常过时。而Struts 2却并不糟糕。 - Steven Benitez
5个回答

26

我会考虑比这个项目更长远的计划。正如你所看到的,第一次使用任何技术主要是犯错并从中学习。因此,一旦完成,这个第一个项目可能不会是 Struts 使用方面的闪亮样例。

然而,使用 Struts(以及你所提到的 Tiles —— JSP复制和粘贴的主要问题)将是一个非常好的深入“正确”的MVC体系结构的机会,即它强制你用特定的结构化方式进行操作,我非常欣赏这种方式,我是 Struts 的忠实粉丝。

话虽如此,还有其他选择,例如Spring包含Spring MVC和更多其他功能。如果你打算克服学习曲线,请考虑哪个框架在中期内对你最有利:例如,你所在地区的雇主倾向于寻找哪些框架? 在这个时候,我会选择 Spring,因为我觉得它的动力很大,但 Struts 也非常擅长它的领域。


1
非常好而且详细的回答。给你点赞。我希望当你提到Struts时,实际上是指的Struts 2。 - Adeel Ansari
1
谢谢。实际上,我已经五年没有使用Struts了,但我仍然怀念它! - Brian

14

如果你想学习框架,我建议选择Spring MVC而不是Struts。学习曲线不是很陡峭,并且在互联网上有很多Spring的资源。

一旦你掌握了Spring,你会发现你的应用程序维护和支持起来更加简单。你也可以更容易地添加增强功能,比如安全性。


是的,我也更喜欢这样。 - Adeel Ansari

10

首先,不要让名称混淆你:Struts2和Struts是非常不同的框架。

其次,从JSP到Velocity的转换可能是一个好的或坏的决定,但这并不是重点。重点是要远离Model1(相当古老的命名法,但仍然有用)。也就是说,将您的视图层与逻辑层解耦。(您可以使用JSP或Velocity作为您的视图层)。 此外,决定您的视图层只是您的体系结构的一部分:您仍然必须决定谁将处理请求并生成将发送到视图的数据。最基本的选项是使用普通的servlets,但是,最好使用一些框架。在Java中,有很多框架。其中“基于动作”的框架是它们中的一个子集,也许是最简单的学习。其中,最古老的是Struts;今天最常用于新项目的是(没有特定顺序)Struts2、Spring MVC和Stripes-它们非常相似。


4

学会分离逻辑很好。您可以不使用Velocity、Struts或任何框架来完成这个过程,并且如果您首先尝试自己完成这个过程,很可能会更多地了解需要做什么才能实现这种分离。

学习一个框架(事实上是多个框架)也值得一试,但我个人不会选择Struts作为第一个框架,除非它是您的雇主或潜在雇主使用的框架。如果您的雇主正在使用Struts,则希望是Struts 2,因为Struts 1已经过时了。

我最喜欢使用的框架是Wicket,但它与您目前所看到的有很大不同。SpringMVC也绝对值得一看。

如果您的雇主已经在使用框架进行Java Web开发,请尝试学习实际使用的框架,并向同事寻求帮助来学习它。


3
为什么要学习Struts?我的回答是:因为雇主通常要求掌握它的知识,尤其是用于维护旧项目。我没有进行精确的测量,但我认为在我的地区,JSF和Struts最常用于Web应用程序开发。
Struts是一个相当古老的Web框架,使用它编写现代AJAX GUI会比较笨拙,因此出现了更好的框架。对我来说,JSF有点不太灵活,也存在一些问题。我最喜欢的Web框架是Vaadin和GWT,但我不建议你仅凭我的意见做决定,你应该自己做出决定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接