OGNL符号详解:$%,#在Struts2中的区别与用法
需积分: 10 10 浏览量
更新于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的动态特性,提高代码的可维护性和效率。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2019-08-04 上传
2012-12-03 上传
2012-01-31 上传
356 浏览量
2010-12-01 上传
2013-04-09 上传
dlbdlb123
- 粉丝: 0
- 资源: 1
最新资源
- WordPress作为新闻管理面板的实现指南
- NPC_Generator:使用Ruby打造的游戏角色生成器
- MATLAB实现变邻域搜索算法源码解析
- 探索C++并行编程:使用INTEL TBB的项目实践
- 玫枫跟打器:网页版五笔打字工具,提升macOS打字效率
- 萨尔塔·阿萨尔·希塔斯:SATINDER项目解析
- 掌握变邻域搜索算法:MATLAB代码实践
- saaraansh: 简化法律文档,打破语言障碍的智能应用
- 探索牛角交友盲盒系统:PHP开源交友平台的新选择
- 探索Nullfactory-SSRSExtensions: 强化SQL Server报告服务
- Lotide:一套JavaScript实用工具库的深度解析
- 利用Aurelia 2脚手架搭建新项目的快速指南
- 变邻域搜索算法Matlab实现教程
- 实战指南:构建高效ES+Redis+MySQL架构解决方案
- GitHub Pages入门模板快速启动指南
- NeonClock遗产版:包名更迭与应用更新