struts2 OGNL表达式

五、OGNL简介(非常重要)

1、什么是OGNL

OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个单独的开源项目。 Struts2框架使用OGNL作为默认的表达式语言。

2、OGNL的功能

前提:OGNLstruts2整合的一个开源项目,所以在struts2中,要想使用OGNL表达式,必须使用Struts2标签库

2.1、支持普通方法的调用

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@ taglib uri="http://www.itheima.com/functions/myfunction" prefix="myfn" %>
 3 <%@ taglib uri="/struts-tags" prefix="s" %>
 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 5 <html>
 6   <head>
 7     <title>OGNL-Expression</title>
 8   </head>
 9   <body>
10       <%--el表达式: ${}
11           jsp表达式:<%= %>
12       --%>
13
14       <%--EL表达式:只能调用静态方法 --%>
15       abcdefg---->ABCDEFG
16       <br/>
17       ${myfn:touppoercase("abcdefg")}
18       <hr/>
19       <%--OGNL表达式:它可以访问普通方法
20           OGNL表达式必须写在struts2的标签中
21           s:property它就类似于jsp的表达式,把值输出到浏览器上
22
23           value属性中的内容不再是我们看到的字符串,它是一个OGNL表达式。必须知道
24           如果想让他变成一个普通的字符串,在值外面套上单引号
25       --%>
26       <s:property value="OGNL-Expression"/> 这是一个OGNL表达式<br/>
27       <s:property value="‘OGNL-Expression‘"/>这是一个普通的字符串<br/>
28       <s:property value="‘OGNL-Expression‘.length()"/>使用普通字符串调用了获取长度的方法

jsp

(EL表达式只能调用静态方法)

2.2、访问静态成员(静态属性,静态方法)

 1     <%--OGNL访问静态属性:
 2           访问静态属性的方式:@全类名@静态属性名称
 3       --%>
 4       <s:property value="@[email protected]_VALUE" /><br/>
 5       <%--OGNL访问静态方法:
 6           访问静态方法的方式:@全类名@静态方法名
 7           struts2的框架默认是禁用静态方法调用的。我们可以通过配置开启。
 8           struts.ognl.allowStaticMethodAccess=false把它改为true
 9       --%>
10       <s:property value="@[email protected]()" />

jap

OGNL改写文件下载:

             

             

2.3、操作集合对象

a、创建List对象:

1     <%--OGNL操作map和List --%>
2       <%-- 使用的是s:radio的标签,创建list集合
3            {}就相当于创建了一个list集合
4            list属性中的取值是一个OGNL表达式
5        --%>
6       <s:radio name="gender" list="{‘男‘,‘女‘}"></s:radio><br/>

jsp

b、创建Map对象:

1     <%--使用s:radio创建一个map
2           #{}表示创建一个map
3           1和0作为value给raido标签的value属性赋值
4           男和女作为key,显示到页面的内容
5       --%>
6       <s:radio name="gender1" list="#{‘1‘:‘男‘,‘0‘:‘女‘}" />

jsp

时间: 2024-09-30 15:36:53

struts2 OGNL表达式的相关文章

struts2 ognl表达式访问值栈

1:简单的说,值栈是对应每一个请求对象的轻量级的数据存储中心,在这里统一管理着数据,供Action.Result.Interceptor等Struts2的其他部分使用,这样数据被集中管理起来而不凌乱. 简单的说,值栈能够线程安全的为每个请求提供公共的数据存取服务. 当有请求的时候,Struts2会为每个请求创建一个新的值栈,也就是说,栈和请求是一一对应的,不同的请求,值栈也不一样,而值栈封装了一次请求所有需要操作的相关的数据. 正是因为值栈和请求的对应关系,因此值栈能保证线程安全的为每个请求提供

Struts2学习之路(六)—— OGNL表达式

OGNL全称为Object-Graph Navigation Language,可译为对象图导航语言.此处介绍的OGNL表达式内容,仅限于在struts2标签中应用,形式如下: <s:property value="xxx" /> 以下为列举的一些应用形式: 1.访问值栈中action的普通属性: <s:property value="username" /> 2.访问值栈中对象的属性(setter getter方法): <s:prop

Struts2之OGNL表达式

OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.Struts2框架使用OGNL作为默认 的表达式语言. 相对于EL表达式,它提供了平时我们需要的一些功能,如: 支持对象方法调用,如xxx.sayHello(); 支持类静态方法调用和常量值访问,表达式的格式为@[类全名(包括包路径)]@[方法名|值名],例如:@[email protected]('foo%s','bar')或@[email protected]_NAME;

Struts2中OGNL表达式的用法

OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言,能通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能. 一.为什么要使用OGNL 视图层的表达式语言通常是用来简化数据的访问操作,取代Java脚本代码,提供更清晰的视图层实现.比如,要获取user对象的age属性,利用OGNL表达式可以写成: <s:property value="user.age&

Struts2学习笔记(OGNL表达式)

Struts2学习笔记(OGNL表达式) Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言: JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言: Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python.Ruby和Smarttalk等)的一些起特性: Velocity,严格来说不是表达式语言,它是一种基于Ja

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

struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点: 能够访问对象的方法,如list.size(); 能够访问静态属性和静态方法,只需要在类名前,方法前加上@,如@[email protected]; 支持赋值操作.如赋值#value=5; 能够访问OGNL上下文和ActionContext; 能操作集合类对象. 使用OGNL: public class Test { public static void main

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

一.什么是OGNL,有什么特点? OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一种可以方便地操作对象属性的开源表达式语言.OGNL有如下特点: 1.支持对象方法调用,形式如:objName.methodName(): 2.支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路)]@[方法名 |  值名],例如: @java.lang.String@format('foo %s', 'bar')或@tutorial.

Struts2:OGNL表达式详解

OGNL用于操作ValueStack中的数据.它负责两件事.第一是在接收HTTP请求时将请求中的字符串转换成Java中的类型,比如int.String等,并赋值给ValueStack上的JavaBean,第二是在页面渲染的时候,从ValueStack中获取属性,并将Java类型转换成字符串进行输出.整个过程如下图: (侵权可删) 在HTTP的请求参数中,可以包含OGNL表达式(这就是当初Struts2爆重大漏洞的原因了). user.name=xxx表示给user属性中的name属性进行赋值.

struts2学习笔记(7)------------ognl表达式

OGNL表达式(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一种可以方便地操作对象属性的开源表达式语言. Struts2自行维护一个特定范围的"银行",Action将数据放入其中,而JSP页面可从中取数据,表面上似乎看起来像是jsp可以直接访问Action数据.. 当Action属性不再是简单的值,而是某个对象,数组,集合时,就需要使用ognl表达式来访问这些对象,数组,集合内的数据了. 1)ognl的stack Conte