OGNL表达式语言详解:Struts2中的核心组件
需积分: 21 133 浏览量
更新于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开发提供了更强大、更灵活的工具,使得开发者能够更高效地构建和维护应用程序。
1153 浏览量
222 浏览量
110 浏览量
174 浏览量
2021-10-20 上传
点击了解资源详情

无不散席
- 粉丝: 33
最新资源
- Android MP3播放器开发教程:SD卡音乐全掌控
- 前端职训:美化并扩展打地鼠小游戏功能
- Neo4j与ElasticSearch集成教程与文件
- 升级版生命游戏开发体验:MFC与CButtonST类的应用
- 掌握不同版本ojdbc6.jar与ojdbc14.jar的差异及用途
- CHC软件:笔记本CPU降压节能降温绿色解决方案
- uni-app-tools:uniapp开发者的实用SDK工具库
- ADSelfService Plus实现高效AD域密码自助管理
- Struts2实现登录注册功能教程
- RobloxImageToScript工具:图像转换为Roblox脚本教程
- 宠物狗网站模版下载:精美图片,免费试用
- MVC权限管理Demo:结构分层与设计模式实践
- DsoFramer_V2.3.0.1源代码解析与技术细节
- VC 6.0中利用OpenCV实现视频显示与屏幕捕捉方法
- 快速制造铝合金消失模模具的工艺技术
- 组件游乐场:实时预览与编辑组件源的开源工具