Struts 2 标签库详解:OGNL与Action标签实战

需积分: 14 1 下载量 23 浏览量 更新于2024-07-23 1 收藏 804KB PDF 举报
"深入理解Struts 2标签库与OGNL表达式" 在Struts 2框架中,OGNL(Object-Graph Navigation Language)扮演着核心角色,它是一种强大的表达式语言,用于在Java对象中导航并访问属性。OGNL不仅在WebWork项目中被采用,而且成为了Struts 2视图层的默认表达式语言。OGNL通过简洁的语法,使得开发者能够轻松地获取和设置对象的属性。 在Struts 2中,值栈是OGNL的根对象。值栈是一个存储动作(Action)对象和结果(Result)对象的栈结构,它允许开发者通过栈内的对象访问和传递数据。例如,如果有两个对象Man和Animal在值栈内,Animal位于顶部,Man在其下,那么`name`表达式将返回Animal的`name`属性,而`man.name`则会返回Man的`name`属性。 接下来,我们详细探讨Struts 2的标签库: 3.2.1 数据标签是Struts 2标签库的一部分,它们提供了一种在JSP页面上操作和展示数据的便捷方式。例如,`<s:action>`标签用于在页面上直接执行一个Action,而无需进行页面跳转。在描述的代码示例中,第一个`<s:action>`标签配置了`executeResult="true"`,这会显示`success.jsp`页面的内容,而第二个`<s:action>`标签没有此属性,因此不会显示任何内容。 Struts 2的标签库包括但不限于以下几种类型的标签: 1. 表单标签:用于创建HTML表单,如`<s:textfield>`(文本字段)、`<s:password>`(密码字段)、`<s:submit>`(提交按钮)等,这些标签可以与Action类的属性绑定,方便数据的提交和验证。 2. 控制标签:控制页面流程,如`<s:if>`(条件判断)、`<s:iterator>`(迭代器)和`<s:include>`(包含其他页面)等,帮助实现复杂的逻辑控制。 3. 数据展示标签:用于显示数据,如`<s:property>`(显示对象属性)、`<s:debug>`(调试信息)等,它们可以从值栈中获取并显示数据。 4. 错误和消息标签:用于处理错误和用户消息,如`<s:fielderror>`(显示字段错误)、`<s:actionerror>`(显示全局错误)和`<s:messages>`(显示消息提示)等,这些标签有助于实现良好的用户反馈。 5. 动作标签:如`<s:action>`,可以直接在页面上执行Action,简化页面和后台的交互。 6. HTML标签增强:Struts 2还提供了对HTML标签的增强,如`<s:form>`、`<s:checkbox>`、`<s:radio>`等,它们增强了HTML标签的功能,支持数据绑定、验证和其他特性。 通过使用Struts 2的标签库,开发者可以编写出更简洁、可读性更强的JSP页面,同时减少Java脚本的使用,提高代码的维护性和可扩展性。标签库的使用使得页面和业务逻辑之间的分离更加明确,有利于遵循MVC设计模式,提升整体架构的灵活性。