我是靠谱客的博主 大胆白昼,最近开发中收集的这篇文章主要介绍JavaWeb----学习(24)----struts2---OGNL,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 关于值栈:

1).  ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的.

2). ValueStack:

I.  可以从 ActionContext 中获取值栈对象
II. 值栈分为两个逻辑部分

    > Map 栈: 实际上是 OgnlContext 类型, 是个 Map, 也是对 ActionContext 的一个引用. 里边保存着各种 Map:
             requestMap, sessionMap, applicationMap, parametersMap, attr
             
    > 对象栈: 实际上是 CompoundRoot 类型, 是一个使用 ArrayList 定义的栈. 里边保存各种和当前 Action 实例相关的对象.
                       是一个数据结构意义的栈.

 

 2. Struts2 利用 s:property 标签和 OGNL 表达式来读取值栈中的属性值

     2.1JSP 页面上可以利用 OGNL(Object-Graph Navigation Language: 对象-图导航语言) 访问到值栈(ValueStack) 里的

           对象属性.
 
     2.2 值栈中的属性值:
 
         2.2.1 对于对象栈: 对象栈中某一个对象的属性值
     
         2.2.2 Map 栈: request, session, application 的一个属性值 或 一个请求参数的值.
     
  2.3  读取对象栈中对象的属性:
 
     2.3.1 若想访问 Object Stack 里的某个对象的属性. 可以使用以下几种形式之一:
        
              object.propertyName ; object['propertyName'] ; object["propertyName"]    
        
     2.3.2 ObjectStack 里的对象可以通过一个从零开始的下标来引用. ObjectStack 里的栈顶对象可以用 [0] 来引用,
             它下面的那个对象可以用 [1] 引用

<body>
     ProductPrice:<s:property value="[0].productPrice"/>
</body>

    2.3.3 [n] 的含义是从第 n 个开始搜索, 而不是只搜索第 n 个对象
    ····
    2.3.4若从栈顶对象开始搜索, 则可以省略下标部分: message

<body>
     ProductPrice:<s:property value="productPrice"/>
</body>

   2.3.5 结合 s:property 标签: <s:property value="[0].message" />  <s:property value="message" />
 
 2.4  默认情况下, Action 对象会被 Struts2 自动的放到值栈的栈顶.

     可以结合 s:property 标签标签来查看当前值栈的状态。

     导入 s:property 标签

 <%@ taglib prefix="s" uri="/struts-tags" %>

    使用<s:debug>标签查看当前值栈的状态。

<body>
      <s:debug></s:debug>     
</body>

 从值栈的状态可以看出,在默认状态下,Action对象(Product)会被struts2自动放到栈顶


                      

  2.5 读取ContextMap里的对象的属性。在调用的属性前面加上#

<s:property value="#request.request"/>

 2.6 调用字段和方法。

        2.6.1  利用OGNL可以调用任何一个java类的离的静态字段和方法

        2.6.2 利用OGNL可以调用被压带对象栈的对象的公共字段和方法。

       2.6.3 默认情况下, Struts2 不允许调用任意 Java 类静态方法需要重新设置 struts.ognl.allowStaticMethodAccess 标记变量的值为

               true.

2.7         >可以利用OGNL访问数组类型对象的属性

              >可以利用OGNL访问List类型对象的属性

              >可以利用OGNL访问Map类型对象的属性

最后

以上就是大胆白昼为你收集整理的JavaWeb----学习(24)----struts2---OGNL的全部内容,希望文章能够帮你解决JavaWeb----学习(24)----struts2---OGNL所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部