OGNL表达式(转载)
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)

<title>Struts2OGNL表达式的基本使用</title>
</head>
<body>
<!-- a、使用s:property标签输出内容:要想输出内容到页面得使用Struts2的标签库
value属性:把value取值所对应的内容输出到页面
若想直接输出文本,则需要用引号引起来。
-->
输出基本内容:<s:property value="'OGNLExpresession'"/>
<hr/>
<!-- b、访问普通方法 -->
输出字符串的长度:<s:property value="'OGNLExpresession'.length()"/> <br/>
输出转大写字符:<s:property value="'OGNLExpresession'.toUpperCase()"/> <br/>
切割字符串:<s:property value="'OGNLExpresession'.split('L')"/>
<hr/>
<!-- c、访问静态属性
语法 :
@类的全路径@静态字段
-->
输出整数的最大值:<s:property value="@java.lang.Integer@MAX_VALUE"/>
<hr/>
<!-- d、访问静态方法
语法:
@类的全路径@静态方法
注意:
使用静态方法时,需要在struts.xml中开启静态方法调用的开关。
-->
输出一个随机数:<s:property value="@java.lang.Math@random()"/>
<hr/>
<!-- e、操作集合(List和Map)
语法:
声明list集合:{"aa","bb"}
声明map集合:#{"key":"value","key":"value"}
-->
输出html普通标签的单选按钮:<br/>
<input type="radio" name="sex" value="男"/>男
<input type="radio" name="sex" value="女"/>女<br/>
使用Struts2标签输出单选按钮:list集合方式<br/>
<s:radio list="{'男','女'}" name="sex"></s:radio><br/>
使用Struts2标签输出单选按钮:map方式<br/>
<s:radio list="#{'男':'男','女':'女' }" name="sex"/> </body>


<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
使用EL表达式:<br/>
${c.username}<br/>
${requestScope.p }<br/>
${sessionScope.p }<br/>
${applicationScope.p }<br/>
<hr/>
使用OGNL表达式:<br/>
<!-- 如果是在action动作类中直接声明的变量,OGNL直接取值即可。 -->
<!-- 在域对象中的数据需要使用#开头 -->
<!--
注:如果对象在action动作类中直接声明,则取值需要使用c.username
如果对象在方法中手动添加到valueStack对象中,则取值不需要c.username,直接username即可。
-->
<s:property value="c.username"/><br/>
<%-- <s:property value="[1].username"/><br/> --%>
<s:property value="#request.p"/><br/>
<s:property value="#session.p"/><br/>
<s:property value="#application.p"/><br/>
<s:property value="#attr.p"/><br/>
<hr/>
<!-- 不写value属性:获得的是栈顶数据 -->
<s:property/>
<s:debug/>
</body>
</html>


<%@page import="com.opensymphony.xwork2.util.ValueStack"%>
<%@page import="com.opensymphony.xwork2.ActionContext"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 在页面查看调试信息 -->
${ username}<br/>
<s:debug/>
<s:property value="username"/><br/> == vs.findValue("username");
<s:property value="[1].username"/><br/>
<s:property value="#session.p"/><br/>
<s:property value="#application.p"/>
<hr/>
<% ActionContext ac = ActionContext.getContext();
ValueStack vs = ac.getValueStack();
String name = (String)vs.findValue("username");
out.print(name);
String p = (String)vs.findValue("#session.p");
out.print(p);
%>
</body>
</html>

OGNL表达式(转载)的更多相关文章
- [JavaWeb基础] 029.OGNL表达式介绍
1.OGNL概述 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对 ...
- Ognl表达式基本原理和使用方法
Ognl表达式基本原理和使用方法 1.Ognl表达式语言 1.1.概述 OGNL表达式 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,他是一个 ...
- Struts2深入学习:OGNL表达式原理
今天看了ognl表达式,不是很理解,准备以后再回头复习: http://developer.51cto.com/art/201203/322509.htm#case1
- Struts2的OGNL表达式语言
一.OGNL的概念 OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者 ...
- struts2学习笔记--OGNL表达式1
struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点: 能够访问对象的方法,如list.size(); 能够访问静态属性 ...
- struts2 OGNL表达式
一.OGNL OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对 ...
- OGNL表达式
一.什么是OGNL,有什么特点? OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一种可以方便地操作对象属性的开源表达式语言 ...
- OGNL表达式(待解答)
OGNL表达式的路径到底怎样的?下面代码看不懂为什么要这样?
- OGNL表达式struts2标签“%,#,$”
一.什么是OGNL,有什么特点? OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一种可以方便地操作对象属性的开源表达式语言.OGN ...
随机推荐
- Spring MVC 原理图
SpringMVC的工作原理图: SpringMVC流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherServlet收到请求调用HandlerMa ...
- 怎么查看SAS到期时间
通过以下命令,可以查看SAS到期时间: proc setinit; run;
- virtualbox创建虚拟机
两种方式: 1.使用.vdi硬盘镜像文件 2.使用操作系统新建 方法1: #结束! 方法2:
- Linux之间用SSH传输文件 一行命令实现
把本机的文件传到目标: cd /home/ && tar czv test | ssh root@HostIP -p 22 'tar xz' 解释: 如你所见,这行命令其实由多个命令组 ...
- cocos子节点转父节点坐标 原理浅析(局部坐标转世界坐标同理)
在CCNode的类中,有一个得到 一个节点坐标系转换父亲坐标系的一个矩阵,节点内坐标乘以这个矩阵,就可以转换为在节点父节点中的坐标,方法名为: Mat4& Node::getNodeToPar ...
- for循环中进行联网请求数据、for循环中进行异步数据操作,数据排序错乱问题解决;
for循环中进行联网请求数据,由于网络请求是异步的,第一个网络请求还没有回调,第二次第三次以及后续的网络请求又已经发出去了,有可能后续的网络请求会先回调:这时我们接收到的数据的排序就会错乱:怎么才能让 ...
- 洛谷 P2629 好消息,坏消息
题目描述 uim在公司里面当秘书,现在有n条消息要告知老板.每条消息有一个好坏度,这会影响老板的心情.告知完一条消息后,老板的心情等于之前老板的心情加上这条消息的好坏度.最开始老板的心情是0,一旦老板 ...
- leetCode 557. Reverse Words in a String I
Input: "Let's take LeetCode contest" Output: "s'teL ekat edoCteeL tsetnoc" 解:输入一 ...
- 了解Python内存管理机制,让你的程序飞起来
引用: 语言的内存管理是语言设计的一个重要方面.它是决定语言性能的重要因素.无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征.这里以Python语言为例子,说明一门动态类型的.面 ...
- <Linux> Ubuntu error: ssh: connect to host master port 22: No route to host lost connection
iptables当找到匹配的规则时,就会执行相应的动作,而不会向下继续匹配.因为ssh端口开放的规则在all规则之后,所以永远都不会匹配到,也就是ssh永远被禁止. root下执行:iptables ...