OGNL表达式语言详解:Struts2中的核心组件
需积分: 21 123 浏览量
更新于2024-08-18
收藏 493KB PPT 举报
"本文主要介绍了OGNL(Object Graphic Navigation Language),一种在Java中广泛使用的表达式语言,尤其在Struts 2框架中的应用。OGNL提供了比EL(Expression Language)更为丰富的功能,如对象方法调用、类静态方法调用和值访问。此外,文章还提到了OGNL中的上下文(Context)概念,它是一个实现了Map接口的数据结构,通常在Struts2中由ActionContext实现。Struts2框架的发展历程和与Struts1的区别也被提及,指出Struts2实质上是以WebWork为核心,具备更先进的设计理念和处理流程。"
OGNL是Object Graphic Navigation Language的简称,它是一种强大的表达式语言,被广泛应用于Java开发中,特别是作为Struts 2框架的默认表达式语言。OGNL不仅支持基本的属性访问,还具备以下特点:
1. **对象方法调用**:OGNL允许开发者直接在表达式中调用对象的方法,如`xxx.sayHello()`,这在处理业务逻辑时非常方便。
2. **类静态方法调用和值访问**:OGNL可以使用`@[类全名(包括包路径)]@[方法名 | 值名]`的格式调用类的静态方法或访问静态变量,如`@java.lang.String@format('foo %s', 'bar')`或`@com.xtgj.Constant@APP_NAME`。
3. **操作集合对象**:OGNL支持对集合进行操作,如遍历、索引访问等,使得处理复杂数据结构变得更加简单。
上下文(Context)在OGNL中扮演着关键角色,它是一个存储键值对的容器,实现了Map接口。在Struts2中,ActionContext是上下文的具体实现,它将请求和响应的相关信息存储在Map结构中,便于在处理请求时访问和修改。ActionContext通常包含Action、ValueStack、Session、Request、Application等重要对象,为OGNL表达式的解析提供数据环境。
Struts技术的发展历程中,Struts1虽然在稳定性和市场占有率上有显著优势,但随着时间推移,其设计上的局限性逐渐显现,如与JSP/Servlet的深度耦合、单一的表现层支持以及对Struts1 API的高度依赖。为了应对这些挑战,Struts1演化出两个分支:Struts2和Shale。Struts2以WebWork为核心,引入了拦截器(Interceptor)机制,大大改善了处理流程和可测试性。而Shale则采用了全新的设计思路,与原Struts1框架关联较小。
Struts2的处理流程主要包括:浏览器发起请求,FilterDispatcher作为核心控制器调度合适的Action,接着WebWork的拦截器链处理通用功能,如验证,然后调用Action的`execute`方法执行具体业务逻辑,最后返回结果到浏览器,支持多种视图技术。
对比Struts1,Struts2的主要改进包括:
- **非侵入性**:Struts2降低了对应用程序代码的依赖,使得代码更易于维护和测试。
- **拦截器链**:通过拦截器,开发者可以轻松添加预处理和后处理逻辑,增强了框架的灵活性。
- **更丰富的Action结果**:Action的执行结果可以映射到多个视图,增强了视图的多样性。
- **更强大的表达式语言**:OGNL的引入,提供了更多高级功能,如动态方法调用和复杂数据结构操作。
OGNL和Struts2的结合为Java Web开发提供了更强大、更灵活的工具,使得开发者能够更高效地构建和维护应用程序。
2013-01-09 上传
2010-04-07 上传
2007-09-11 上传
2020-04-09 上传
2021-10-20 上传
点击了解资源详情
无不散席
- 粉丝: 31
- 资源: 2万+
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能