OGNL表达式语言详解:Struts2中的核心组件
需积分: 21 24 浏览量
更新于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 上传
点击了解资源详情
无不散席
- 粉丝: 32
- 资源: 2万+
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率