Struts2 OGNL详解:Day32-33 笔记

需积分: 9 1 下载量 173 浏览量 更新于2024-07-20 1 收藏 12.26MB PDF 举报
"传智168期JavaEE Struts2 杜宏 day32~day33 笔记" 在JavaEE开发中,Struts2是一个广泛应用的MVC框架,而OGNL(Object-Graph Navigation Language)是Struts2的核心组成部分,用作其默认的表达式语言。本笔记主要围绕Struts2中的OGNL使用进行讲解,由阿滔整理,涵盖了day32和day33的学习内容。 1. OGNL简介 OGNL是一种强大的表达式语言,它允许开发者通过简洁的语法来访问和操作对象图。在Struts2框架中,OGNL用于处理Action对象和视图层之间的数据交互。XWork库提供了OGNL表达式的支持,而实际使用的版本为ognl-3.0.5.jar。 2. OGNL的主要功能 - **对象方法调用**:可以直接调用对象的方法,如`object.doSomeSpecial()`。 - **静态方法调用和值访问**:可以访问类的静态方法和静态属性。 - **访问上下文**:包括OGNLContext和ActionContext,尤其是ValueStack(值栈),它是Struts2中数据传递的关键。 - **赋值操作**:可以用来设置对象的属性值。 - **集合操作**:方便地操作集合对象,如列表、数组等。 3. Struts2中的OGNL使用 - 在Struts2的标签中,`<s:property value="ognl表达式">`用来展示OGNL表达式的结果。例如,`<s:property value="'abc'.length()" />`将输出字符串"abc"的长度。 - 静态成员访问时,如果`struts.ognl.allowStaticMethodAccess`配置为`true`,则可以调用类的静态方法,如`<s:property value="@java.lang.Math@max(10,20)" />`。 - JSP页面中,可以使用相同的方式通过OGNL表达式来访问和显示数据。 4. 示例代码 - `ognl1.jsp`是一个简单的示例,展示了如何在JSP页面中使用OGNL表达式。`<s:property value="'abc'.length()" />`会输出3,表示字符串"abc"的长度。而`<s:property value="@java.lang.Math@max(10,20)" />`则会输出20,这是Math类的静态方法max的结果。 总结,学习Struts2中的OGNL,关键在于理解OGNLContext、root和非root的概念,以及如何在Struts2标签中正确使用OGNL表达式来调用对象方法、访问静态成员和操作集合。熟悉这些概念和用法,将有助于提升JavaEE应用开发的效率。