OGNL表达式(转载)

 

1.什么是OGNL

OGNL:Object Graphic Navigation Language(对象图导航语言)

它是Struts2中默认的表达式语言。使用表达式需要借助Struts2的标签.

OGNL与EL的区别:

EL/JSTL 数学运算等等表达式: 都有一个明确的返回值,都只能取值。

     OGNL表达式: 它不仅可以取值,还可以赋值(赋值操作只能由Struts来完成)

OGNL表达式的写法:   属性.属性.属性的方式   <input type="text" name="user.user"/>

OGNL表达式的基本使用:

  • 使用s:property标签输出内容
  • 访问普通方法
  • 访问静态方法
  • 访问静态属性
  • 操作集合(List AND Map)
  1. <title>Struts2OGNL表达式的基本使用</title>
  2. </head>
  3. <body>
  4. <!-- a、使用s:property标签输出内容:要想输出内容到页面得使用Struts2的标签库
  5. value属性:把value取值所对应的内容输出到页面
  6. 若想直接输出文本,则需要用引号引起来。
  7. -->
  8. 输出基本内容:<s:property value="'OGNLExpresession'"/>
  9. <hr/>
  10. <!-- b、访问普通方法 -->
  11. 输出字符串的长度:<s:property value="'OGNLExpresession'.length()"/> <br/>
  12. 输出转大写字符:<s:property value="'OGNLExpresession'.toUpperCase()"/> <br/>
  13. 切割字符串:<s:property value="'OGNLExpresession'.split('L')"/>
  14. <hr/>
  15. <!-- c、访问静态属性
  16. 语法 :
  17. @类的全路径@静态字段
  18. -->
  19. 输出整数的最大值:<s:property value="@java.lang.Integer@MAX_VALUE"/>
  20. <hr/>
  21. <!-- d、访问静态方法
  22. 语法:
  23. @类的全路径@静态方法
  24. 注意:
  25. 使用静态方法时,需要在struts.xml中开启静态方法调用的开关。
  26. -->
  27. 输出一个随机数:<s:property value="@java.lang.Math@random()"/>
  28. <hr/>
  29. <!-- e、操作集合(List和Map)
  30. 语法:
  31. 声明list集合:{"aa","bb"}
  32. 声明map集合:#{"key":"value","key":"value"}
  33. -->
  34. 输出html普通标签的单选按钮:<br/>
  35. <input type="radio" name="sex" value="男"/>
  36. <input type="radio" name="sex" value="女"/><br/>
  37. 使用Struts2标签输出单选按钮:list集合方式<br/>
  38. <s:radio list="{'男','女'}" name="sex"></s:radio><br/>
  39. 使用Struts2标签输出单选按钮:map方式<br/>
  40. <s:radio list="#{'男':'男','女':'女' }" name="sex"/>
  41.  
  42. </body>
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib uri="/struts-tags" prefix="s" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>Insert title here</title>
  9. </head>
  10. <body>
  11. 使用EL表达式:<br/>
  12. ${c.username}<br/>
  13. ${requestScope.p }<br/>
  14. ${sessionScope.p }<br/>
  15. ${applicationScope.p }<br/>
  16. <hr/>
  17. 使用OGNL表达式:<br/>
  18. <!-- 如果是在action动作类中直接声明的变量,OGNL直接取值即可。 -->
  19. <!-- 在域对象中的数据需要使用#开头 -->
  20. <!--
  21. 注:如果对象在action动作类中直接声明,则取值需要使用c.username
  22. 如果对象在方法中手动添加到valueStack对象中,则取值不需要c.username,直接username即可。
  23. -->
  24. <s:property value="c.username"/><br/>
  25. <%-- <s:property value="[1].username"/><br/> --%>
  26. <s:property value="#request.p"/><br/>
  27. <s:property value="#session.p"/><br/>
  28. <s:property value="#application.p"/><br/>
  29. <s:property value="#attr.p"/><br/>
  30. <hr/>
  31. <!-- 不写value属性:获得的是栈顶数据 -->
  32. <s:property/>
  33. <s:debug/>
  34. </body>
  35. </html>
  1. <%@page import="com.opensymphony.xwork2.util.ValueStack"%>
  2. <%@page import="com.opensymphony.xwork2.ActionContext"%>
  3. <%@ page language="java" contentType="text/html; charset=UTF-8"
  4. pageEncoding="UTF-8"%>
  5. <%@ taglib uri="/struts-tags" prefix="s" %>
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  7. <html>
  8. <head>
  9. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  10. <title>Insert title here</title>
  11. </head>
  12. <body>
  13. <!-- 在页面查看调试信息 -->
  14. ${ username}<br/>
  15. <s:debug/>
  16. <s:property value="username"/><br/> == vs.findValue("username");
  17. <s:property value="[1].username"/><br/>
  18. <s:property value="#session.p"/><br/>
  19. <s:property value="#application.p"/>
  20. <hr/>
  21. <%
  22.  
  23. ActionContext ac = ActionContext.getContext();
  24. ValueStack vs = ac.getValueStack();
  25. String name = (String)vs.findValue("username");
  26. out.print(name);
  27. String p = (String)vs.findValue("#session.p");
  28. out.print(p);
  29. %>
  30. </body>
  31. </html>

OGNL表达式(转载)的更多相关文章

  1. [JavaWeb基础] 029.OGNL表达式介绍

    1.OGNL概述 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对 ...

  2. Ognl表达式基本原理和使用方法

    Ognl表达式基本原理和使用方法 1.Ognl表达式语言 1.1.概述 OGNL表达式 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,他是一个 ...

  3. Struts2深入学习:OGNL表达式原理

    今天看了ognl表达式,不是很理解,准备以后再回头复习: http://developer.51cto.com/art/201203/322509.htm#case1

  4. Struts2的OGNL表达式语言

    一.OGNL的概念 OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者 ...

  5. struts2学习笔记--OGNL表达式1

    struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点: 能够访问对象的方法,如list.size(); 能够访问静态属性 ...

  6. struts2 OGNL表达式

    一.OGNL OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对 ...

  7. OGNL表达式

    一.什么是OGNL,有什么特点?     OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一种可以方便地操作对象属性的开源表达式语言 ...

  8. OGNL表达式(待解答)

    OGNL表达式的路径到底怎样的?下面代码看不懂为什么要这样?

  9. OGNL表达式struts2标签“%,#,$”

    一.什么是OGNL,有什么特点? OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一种可以方便地操作对象属性的开源表达式语言.OGN ...

随机推荐

  1. 2017.7月(关于vertical-align等)

    1.Jquery 可以使用$('.class',$object)的形式,$object是jQuery对象,在该对象的子元素中查找'.class' 2.line的问题,input和button作为inl ...

  2. sshd服务安装

    SSHD服务 介绍:SSH 协议:安全外壳协议.为 Secure Shell 的缩写.SSH 为建立在应用层和传输层基础上的安全协议. 作用:sshd服务使用SSH协议可以用来进行远程控制, 或在计算 ...

  3. Maven Project pom.xml属性解析

    pom.xml文件: groupId 定义了项目属于哪个组,根据自己的情况命名,比如谷歌公司的angular项目,就取名为 com.google.angular artifactId  定义了当前Ma ...

  4. CNN卷积层基础:特征提取+卷积核+反向传播

    本篇介绍卷积层的线性部分 一.与全连接层相比卷积层有什么优势? 卷积层可以节省参数,因为卷积运算利用了图像的局部相关性——分析出一小片区域的特点,加上Pooling层(汇集.汇聚),从附近的卷积结果中 ...

  5. Spqrk笔记

    LSM:Least square method 最小二乘法 ALS:Alternating Least Squares 交替最小二乘法 http://blog.csdn.net/dreamer2020 ...

  6. SQL SERVER 数据压缩

    从SQL SERVER 2008开始,SQL SERVER 提供了对数据进行压缩的功能,启用数据压缩无须修改应用程序. 数据压缩可有效减少数据的占用空间,读取和写入相同数据花费的IO也响应减少,从而可 ...

  7. Java平台编写运行Ruby和Python

    Java不仅是一门编程语言,还是一个平台,通过JRuby和Jython,我们可以在Java平台上编写和运行Ruby和Python程序.

  8. 把自己的代码发布到npm(npm publish)

    写了代码如何发布到npm包? 示例 demo1 demo2 1.注册npm账号 在npm官网注册https://www.npmjs.com/注意邮箱要验证,会发送验证链接到你的注册邮箱,没有验证的话是 ...

  9. collections之python基本应用

    Collections主要功能 Counter 类 defaultdict 类 namedtuple 类 deque类 orderedDict类 Counter 是一个有助于 hashable 对象计 ...

  10. 认识JDBC

    内容: 1.JDBC介绍 2.JDBC入门 3.JDBC工具类实际使用 4.预处理对象 5.JDBC连接池 1.JDBC介绍 (1)基本概念介绍 什么是JDBC: JDBC(Java DataBase ...