Struts2的标签库及OGNL表达式语言

Struts2是一个流行的Java web开发框架,其核心特性之一就是使用OGNL(Object-Graph Navigation Language)作为表达式语言,并提供了丰富的标签库来简化视图层的开发。本篇文章将详细探讨Struts2中的OGNL表达式语言以及标签库。 **OGNL(对象图导航语言)** OGNL是一种强大的表达式语言,它允许开发者通过简洁的语法来访问和操作对象的属性。在Struts2框架中,OGNL扮演着至关重要的角色,因为它负责在Action对象和视图之间传递数据。当Action执行完毕后,其实例会被压入到值栈(ValueStack)中,同时session、request以及其他对象则放入Context Map。开发者可以通过OGNL表达式从值栈中轻松获取和修改数据。 1. **OGNL的属性访问** - 使用`.`或`['']`访问对象属性。例如,`object.property`和`object['property']`都是访问对象的`property`属性。当属性名包含特殊字符如`-`时,推荐使用`['']`。 - **Session访问**:在JSP中,使用`#session`前缀来访问session对象,例如`#session.infomation`或`#session['student-information']`。 - **请求参数访问**:`#parameters`用于获取URL参数,如`#parameters.name`和`#parameters.password`。如果有重复参数,可以通过索引访问,如`#parameters.password[0]`和`#parameters.password[1]`。 - **OGNL表达式解析**:`%{expression}`用于告诉Struts2解析并求值表达式。例如,`%{A}`会查找值栈中的`A`,而`%{'A'}`则会将`A`当作字符串原样输出。 **OGNL操作集合与类的静态成员** - OGNL可以方便地操作集合,比如访问Map中的元素:`map['a']`获取键为'a'的值,`map.size`获取Map的大小。 - 访问类的静态变量和方法:`@完整类名@属性名`或`@完整类名@方法名`。例如,`@net.ilkj.ognl.A@a`访问`A`类的静态变量`a`,`@net.ilkj.ognl.A@findA()`调用静态方法`findA()`。 **Struts2的标签库** Struts2的标签库分为UI标签(UI Tags)和非UI标签(Non-UI Tags)。UI标签主要用于创建HTML表单,而非UI标签则包含了条件控制和逻辑操作等功能。 1. **UI标签(表单部分)** - **通用属性**: - `label`:指定表单控件的名称,如"姓名:"。 - `labelposition`:设置标签位置,默认为`left`,也可设为`top`。 - `disabled`:设置控件是否禁用,默认`false`,设为`true`则禁用。 - `cssClass`和`cssStyle`:分别用于设置CSS样式中的`class`和`style`属性。 - `title`:鼠标悬停时显示的提示信息。 - `name`:对应Action中的POJO属性名,用于数据绑定。 - `required`:指示输入字段是否必须填写。 2. **非UI标签** - 非UI标签主要包括条件判断(if、else)、循环(iterate)等,它们简化了JSP中的逻辑处理,提高了代码可读性和维护性。 Struts2的标签库极大地提升了开发效率,配合OGNL表达式语言,使得视图层的构建变得更加简洁高效。在使用MyEclipse 5.1或其他具备JSP编辑器的IDE时,开发者可以享受到自动提示和代码完成的功能,使得学习和使用Struts2标签库变得更加容易。























- j2eetask3002012-03-24讲的比较有调理,对理解OGNL有一定帮助

- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 新闻网站的设计与实现.doc
- 软件工程导论(ppt 76页).pptx
- 公需科目人工智能与健康考试题题库(含答案).pdf
- 涉外电子出版物和计算机软件著作权认证表.docx
- 有线网络发展和几种双向接入技术比较.docx
- 集团中心医院新院网络设备方案.docx
- 医学成像与通信协议DICOM影像在各种显示介质上的一致性学术报告.ppt
- 互联网英文简历.docx
- 课堂中的大数据应用.doc
- 基于PLC的打包机控制系统.doc
- 嵌入式实习工程师求职简历.docx
- 电气工程及其自动化实习日记.doc
- 基于51单片机的多路温度采集控制系统设计说明.doc
- 基于web的多媒体教学系统毕业设计.doc
- 网络营销专题培训课件.ppt
- 如何提高大学生计算机基础课教学质量.docx


