Java 为什么我们使用struts标记而不是旧的HTML标记,它带来了什么区别?

Java 为什么我们使用struts标记而不是旧的HTML标记,它带来了什么区别?,java,struts2,Java,Struts2,我是struts的新手,我想知道为什么我们要引用struts标记而不是以前的html标记,因为它们似乎在做相同的事情, 与html标记相比,使用struts标记的优势是什么。 像 我已经在谷歌上搜索过了,但没有得到任何满意的答案,我们将提前感谢您的帮助 我知道它添加了一些额外的东西,比如标签之类的,这对我来说没什么问题,但是我想知道的是,它是否对性能有任何影响,或者对请求对象有任何特殊的影响,还有其他什么,只是为了避免程序员额外的键入。在这个特定的示例中,不是很多,但好处是它在解析时被HTM

我是struts的新手,我想知道为什么我们要引用struts标记而不是以前的html标记,因为它们似乎在做相同的事情, 与html标记相比,使用struts标记的优势是什么。 像


我已经在谷歌上搜索过了,但没有得到任何满意的答案,我们将提前感谢您的帮助


我知道它添加了一些额外的东西,比如标签之类的,这对我来说没什么问题,但是我想知道的是,它是否对性能有任何影响,或者对请求对象有任何特殊的影响,还有其他什么,只是为了避免程序员额外的键入。

在这个特定的示例中,不是很多,但好处是它在解析时被HTML替换,并且它被替换的内容是可定制的。您可以定义标准表单模板,并将其替换为

换句话说,它(理论上)是标准化站点行为和最小化键入


更新:史蒂文指出了一个更有价值的原因,即Struts可以智能地填充和更新
字段,例如在提交错误后保留填写的表单。

有不同类型的Struts 2标记

表单标签特别有用,但它们的功能完全取决于所使用的Struts 2主题。
“simple”
主题除了标准HTML标记外几乎没有任何好处。默认的
“xhtml”
主题会发出表单表行和一些样式。自定义主题实现您想要的任何功能。不管主题是什么,底层JSP源代码永远不需要更改

主要优点是:

  • 验证错误消息
  • 表格展示/设计
  • 框架集成(例如,从操作自动填充的值)
还有一组Dojo(非常不推荐)和jQuery标记,它们将大量JavaScript功能封装在自定义标记中,这使得简单的动态功能非常简单

还有一些非视图标记,如
等。它们的一些功能是JSTL的副本(
对于迭代器标记)。在这种情况下,当功能重叠时,使用S2标记没有太多好处

有些标记没有JSTL模拟,如
,这一功能是否适用于视图层则是另一种讨论。有些提供了与Struts 2的其他方面的集成,如I18N(例如,
)。有些人了解Struts 2的配置(例如,


任何自定义标记的目的都是简化视图层编程(例如JSP)。S2提供了很多标签来帮助实现这一点。有些是简单和通用的(非UI标记),而UI标记是使用FreeMarker实现的,并且是高度可定制的。

Struts纯粹使用JAVA!因此,即使程序员不了解HTML/JAVASCRIPT,他仍然可以使用struts的内置标记找到自己的方法。Struts还提供了与Javascript一样的内置验证功能

我不是说对于这个特殊的例子,我是说对于所有的struts标签,它们都有相同的标签,然后可能有一些特别的地方,我找不到任何特别的理由来明确地融合这些标签,对吧,对于所有的struts标签,重点是相同的-为了使简洁,可读模板。主要的好处是显示验证错误,并且如果存在验证错误,字段值已经填充。
<s:form action="myAction">
    <s:textfield name="username"></s:textfield>
    <s:textfield name="password"></s:textfield>
    <s:submit name="submit" value="submit"></s:submit>
</s:form>

<form action="myAction" method="post">
    <input type="text" name="username"/>
    <input type="text" name="password"/>
    <input type="submit" name="submit"/>
</form>