OGNL符号详解:$%,#在Struts2中的区别与用法
需积分: 10 8 浏览量
更新于2024-09-10
收藏 19KB DOCX 举报
OGNL符号在Struts2框架中的运用是开发者们常常遇到的一个主题,特别是在编写动态网页时。OGNL,全称Object-Graph Navigation Language,是一种强大的表达式语言,它允许开发者通过简单的语法操作对象的属性、方法和上下文,提供了高度的灵活性和便利性。以下是关于$、%和#这三个特殊符号在Struts2标签中的具体使用。
首先,我们来了解一下OGNL的特点:
1. 对象操作:OGNL支持对对象实例的方法调用,比如`objName.methodName()`,这使得代码更具可读性和灵活性。
2. 静态方法调用:表达式如`@[类全名]@[方法名|值名]`用于访问类的静态方法或属性,如`@java.lang.String@format('foo%s','bar')`。
3. 赋值与运算:OGNL支持简单的赋值和表达式串联,如`price=100,discount=0.8,calculatePrice()`。
4. 上下文管理:可以访问OGNL上下文和ActionContext,这些上下文提供了与当前请求相关的数据存储。
5. 处理集合:OGNL能够有效地处理集合类型的数据,如遍历和操作列表或数组。
接下来,我们重点讲解`%`、`#`和`$`在Struts2中的区别:
- $符号:在Struts2中,虽然$通常用于EL (Expression Language)中,但在OGNL表达式中,它通常不作为主要的访问符。然而,如果在OGNL中使用$,它会被解析为EL,所以在某些情况下可能会被误用。
- #符号:#在OGNL中具有特殊的含义,用于访问Struts2中的值栈。它相当于`ActionContext.getContext()`,允许开发者访问ActionContext中的各种属性。以下是几个关键的`#`引用:
- `#parameters`:获取当前HTTP请求的参数Map,如`#parameters.id[0]`等同于`request.getParameter("id")`。
- `#request`:访问HttpServletRequest的属性Map,如`#request.userName`等同于`request.getAttribute("userName")`。
- `#session`:获取HttpSession的属性Map,如`#session.userName`等同于`session.getAttribute("userName")`。
- `#application`:访问ServletContext的属性Map,如`#application.userName`等同于`application.getAttribute("userName")`。
- %符号:在Struts2中,%符号通常用于字符串格式化,而不是OGNL表达式。然而,在特定的场景下,比如在<s:text>标签中,%可以用于引用bean属性或表达式结果,但它的行为可能与OGNL的使用略有不同。
OGNL符号在Struts2中主要用于提供动态访问上下文和对象属性的能力,而$符号的使用相对较少,更多的是与EL混淆。了解并熟练掌握#符号的用法,可以帮助开发者更有效地利用Struts2的动态特性,提高代码的可维护性和效率。
2013-01-09 上传
2019-08-04 上传
2024-05-28 上传
2024-10-10 上传
2023-07-13 上传
2023-07-29 上传
2024-04-03 上传
2023-09-16 上传
dlbdlb123
- 粉丝: 0
- 资源: 1
最新资源
- 探索AVL树算法:以Faculdade Senac Porto Alegre实践为例
- 小学语文教学新工具:创新黑板设计解析
- Minecraft服务器管理新插件ServerForms发布
- MATLAB基因网络模型代码实现及开源分享
- 全方位技术项目源码合集:***报名系统
- Phalcon框架实战案例分析
- MATLAB与Python结合实现短期电力负荷预测的DAT300项目解析
- 市场营销教学专用查询装置设计方案
- 随身WiFi高通210 MS8909设备的Root引导文件破解攻略
- 实现服务器端级联:modella与leveldb适配器的应用
- Oracle Linux安装必备依赖包清单与步骤
- Shyer项目:寻找喜欢的聊天伙伴
- MEAN堆栈入门项目: postings-app
- 在线WPS办公功能全接触及应用示例
- 新型带储订盒订书机设计文档
- VB多媒体教学演示系统源代码及技术项目资源大全