Struts2 OGNL深度解析:核心用法与示例
需积分: 10 148 浏览量
更新于2024-08-01
收藏 369KB DOC 举报
"OGNL是Object-Graph Navigation Language的缩写,是一种强大的表达式语言,常用于Struts2框架中,用于在视图层与模型层之间进行数据绑定和表达式运算。这篇学习笔记主要涵盖了Struts2中OGNL的常见用法,包括从不同作用域获取属性值以及创建和遍历列表等操作。"
正文:
OGNL在Struts2框架中扮演着至关重要的角色,它允许开发者在Action类和JSP页面之间灵活地传递和操作数据。以下是对标题和描述中提到的OGNL知识点的详细说明:
1. **获取属性范围中的值**:
OGNL可以轻松访问不同作用域内的对象属性,如Request、Session、Application。在JSP页面中,我们可以使用`<s:property>`标签配合OGNL表达式来获取这些值。例如:
- `#request.req`:访问Request作用域内的`req`属性。
- `#session.sess`:访问Session作用域内的`sess`属性。
- `#application.app`:访问Application作用域内的`app`属性。
2. **通过OGNL表达式创建list集合并遍历**:
OGNL不仅可以读取对象属性,还可以动态创建集合并在视图层遍历。例如,要在JSP页面上创建一个列表并显示其内容,可以这样做:
```jsp
<%
List<String> list = new ArrayList<>();
list.add("Item1");
list.add("Item2");
list.add("Item3");
pageContext.setAttribute("myList", list);
%>
<s:iterator value="#myList">
<s:property/>
<br/>
</s:iterator>
```
这段代码首先在PageContext中设置了一个名为`myList`的列表,然后使用`<s:iterator>`标签遍历这个列表,`<s:property>`标签用于输出每个迭代项的值。
3. **OGNL的表达式语法**:
OGNL表达式的语法非常灵活,支持点号(`.`)路径表达式、数组索引、方法调用等多种形式。例如,可以使用`#session.user.name`来获取Session中的`user`对象的`name`属性,或者`#list[0]`来访问列表的第一个元素。
4. **OGNL的条件语句和逻辑运算**:
OGNL还支持条件表达式和逻辑运算,如`#{user.isAdmin ? 'Admin' : 'User'}`,这会在`user.isAdmin`属性为真时输出'Admin',否则输出'User'。
5. **OGNL的集合操作**:
OGNL可以对集合进行过滤、映射和其他操作。例如,`#{list[? @this.startsWith('I')]}`会返回一个只包含以'I'开头的元素的新列表。
6. **OGNL的变量赋值**:
在JSP页面中,可以通过OGNL表达式给页面作用域的变量赋值,如`<s:set name="myVar" value="Hello, OGNL!"/>`。
7. **OGNL的类型转换**:
OGNL可以自动或显式地进行类型转换。例如,`#{'123' + 456}`的结果将是一个整数`579`,因为OGNL会尝试将字符串转换为数字进行加法运算。
8. **OGNL的异常处理**:
当OGNL表达式执行时遇到错误,可以使用`try/catch`结构来捕获和处理异常。
OGNL在Struts2中提供了强大的数据访问和表达式处理能力,使得开发者能够更加灵活地控制应用的视图层表现。理解并熟练掌握OGNL的用法对于开发高效且健壮的Struts2应用至关重要。
2010-09-28 上传
2011-04-10 上传
点击了解资源详情
2019-03-21 上传
2019-04-03 上传
2009-11-06 上传
点击了解资源详情
我在_WS
- 粉丝: 1
- 资源: 11
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载