Struts2 OGNL投影功能解析与实战
需积分: 21 34 浏览量
更新于2024-08-18
收藏 493KB PPT 举报
"这篇文章除了介绍OGNL(Object-Graph Navigation Language)表达式的投影功能,还讨论了Struts2框架的发展、架构以及与Struts1的对比。"
OGNL表达式的投影功能是Java开发中的一种强大工具,特别是在Struts2框架中,它允许开发者以简洁的方式筛选和操作集合对象。在给定的例子中,OGNL的`{?}`、`^`和`$`操作符用于从集合`books`中提取特定的子集:
1. `?` 操作符:用于选取满足条件的所有元素。在这个例子中,`books.{?#this.price > 35}`会返回价格大于35的书籍列表。`#this`是指当前遍历的Book对象,`price`属性是判断条件。
2. `^` 操作符:获取满足条件的第一个元素。如果需要找到价格最高的书籍,可以使用类似`books.{^#this.price > 35}`的表达式。
3. `$` 操作符:获取满足条件的最后一个元素。这在寻找价格最低的书籍时会很有用,如`books.{#$this.price > 35}`。
Struts2框架的发展是基于Struts1的局限性和技术进步的需求。Struts1虽然在稳定性上有良好表现,但其与JSP/Servlet的高度耦合导致了可测试性差、表现层技术单一等问题。因此,Struts2应运而生,它采用了WebWork的核心,引入了更先进的设计理念:
1. Struts2与ServletAPI解耦,使得应用程序更易于测试。
2. 支持多种视图技术,增强了灵活性。
3. 使用拦截器(Interceptor)链,允许在Action执行前后添加通用功能,如输入验证,提高了代码复用性。
Struts2的处理流程大致如下:
1. 用户发起请求,由FilterDispatcher核心控制器接收。
2. FilterDispatcher根据请求选择合适的Action。
3. 拦截器链对请求进行预处理,执行相关的业务逻辑。
4. Action的`execute`方法执行具体操作,根据请求参数和业务逻辑返回结果。
5. 结果信息被渲染并回传给客户端,支持多种视图技术,如JSP、FreeMarker等。
在与Struts1的对比中,Struts2的主要改进包括:
1. 更低的侵入性,减少了对Struts API的依赖。
2. 强大的拦截器机制,提供了更灵活的扩展和控制流管理。
3. 更好的类型安全性和表达式语言(如OGNL),提高了代码的可读性和维护性。
总结来说,OGNL的投影功能增强了Struts2中数据处理的灵活性,而Struts2作为Struts1的升级版,解决了原框架的一些问题,提供了更现代、更灵活的MVC架构。
2013-01-09 上传
2010-04-07 上传
2012-01-29 上传
2020-08-29 上传
2009-12-22 上传
2014-03-26 上传
2012-12-13 上传
2019-06-01 上传
顾阑
- 粉丝: 17
- 资源: 2万+
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析