Struts2 OGNL深度解析:核心用法与示例

需积分: 10 17 下载量 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应用至关重要。