Struts2中OGNL

struts2ognl <!-- ognl表达式,配合struts2标签使用 <s:property/>类似jsp的表达式(),将值输出到浏览器上 value:设置的字符串默认为一个ognl表达式,应该根据该表达式去获得值 如果将值按字符串形式输出,加单引号括起来 --> <s:property value="OGNL-Expression"/> <s:property value="abc"/> <s:property value="'OGNL-xyz 阅读详情

浅析值栈
ValueStack对象
相当于一个栈,它贯穿整个Action的生命周期,每个Action类的对象实例都会拥有一个ValueStack对象
当Struts2接收到一个*.action请求后,并不是直接调用Action方法,而是先将Action类的相应属性放到ValueStack对象的顶层节点
值栈也位于内存中
,它也是和parameters、request、session、application、attr对象放在一起的
值栈属于ONGL Context里面的根对象。也就是说它位于整个内存中最最重要的地方,所以叫根对象
根对象和另外五个对象是有区别的,根对象可以省写#号,比如<s:propertyvalue="user.username"/>
值栈的生命周期与request请求相关,每次请求产生一个值栈。默认所有的Action会被自动放到值栈里

 

服务器跳转时共用值栈
假设从一个Action11通过服务器跳转到Action22的话,就意味着这两个Action是共享一个值栈的,因为一次请求只使用一个值栈
这时内存中情况是这样的:首先接收到Action11请求后,会产生一个值栈,在栈顶存放Action11对象以及它所有的属性
然后经过服务器跳转到Action22,这时就会把Action22对象压入值栈的栈顶位置,此时Action11对象以及它的所有属性就位于栈底了

 

取值过程
栈的特征是后进先出。于是首先到栈顶的对象里查找是否存在这个属性,如果栈顶的Action22对象中不存在这个属性的话
它就会继续向下寻找直至栈底对象,一直查找是否存在这个属性
如果最后找到该属性的话,那么就会在JSP页面中通过<s:propertyvalue="username"/>输出属性值
如果在Action22和Action11都有一个同名的同类型的username属性的话,那么将输出Action22中的属性值
因为它是先从栈顶开始寻找属性的,值栈的特征就是后进先出,但有个前提:请求过程是通过服务器跳转的

 

三个语法
假设此时想要获取Action11中的username属性的话,就可以使用值栈的Top语法或者N语法
使用Top语法
获取值栈中的第二个对象的属性:<s:property value="[1].top.username"/>
使用 N 语法
获取值栈中的第二个对象的属性:<s:propertyvalue="[1].username"/>
另外值栈还有一个@语法,例如使用@语法调用Action中的静态方法:<s:property value="@vs@getVOMethod()"/>
@vs@get()等价于@vs1@getVOMethod()
,指的是栈顶对象的静态getVOMethod()方法
同理@vs2@getVOMethod()就是取值栈中第二个对象的静态getVOMethod()方法

 

客户端跳转时使用各自的值栈
假如中间某一个步骤中出现了客户端跳转的话,那么两个Action所使用的就是两个不同的值栈了
所以在Action22中就不能再使用Action11中的属性了,在最后跳转到的JSP页面中也就无法获取Action11的属性了
也即从Action22跳转到JSP页面时使用的是redirect的话,那么最后值栈中是没有任何的Action对象的
这个时候我们可以通过链接传参,比如<result type="redirect">test.jsp?netname=${username}</result>
意思就是取出Action22中的username属性作为参数,通过浏览器地址栏传递到JSP页面中
然后使用OGNL中的#号获取Paraments对象的属性,即<s:propertyvalue="#parameters.netname"/>就可以取到值了

 

手工向值栈中压入对象
正常情况下值栈保存的是Action对象,而我们也可以直接往值栈中添加其它对象,这时可以在Action中添加如下代码
向值栈中添加对象:ActionContext.getContext.getValueStack().push(new Student("沈浪",22));
而且我们手工往值栈中添加的Student对象会位于栈顶。这是因为Struts2会首先初始化Action,然后才能调用它的方法
初始化Action的时候,便把Action放到值栈中了,然后在执行它的execute()方法时,就又往值栈中添加了Student对象

 

浅析OGNL
OGNL是Object-GraphNavigation Language的缩写,是一种功能强大的表达式语言
通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能
OGNL用得最多的地方就是和Struts2的标签绑定,也可以在配置文件中通过${}使用OGNL表达式

 

OGNL中$号的使用
1..
在国际化资源文件中,引用OGNL表达式
2..在struts.xml文件中,引用OGNL表达式

 

OGNL中%号的使用
1..
使用%{}可以取出保存在值堆栈中的Action对象,直接调用它的方法
2..如果Action继承了ActionSupport,那么在页面标签中可以使用%{getText('key')}获取国际化信息

 

OGNL中#号的使用
OGNL中的#号可以取出堆栈上下文中存放的对象

名称

作用

例子

attr

用于按request>>session>>application顺序访问其属性

#attr.userName相当于按顺序从三个范围读取userName属性直到找到为止

request

包含当前HttpServletRequest的属性的Map

#request.userName相当于request.getAttribute("userName")

session

包含当前HttpSession的属性的Map

#session.userName相当于session.getAttribute("userName")

application

包含当前应用的ServletContext的属性的Map

#application.userName相当于application.getAttribute("userName")

parameters

包含当前HTTP请求参数的Map

#parameters.id[0]相当于request.getParameter("id")

 

获取Action中的属性值或者Action中的对象的某某属性值
利用<s:property/>标签可以直接获取Action中的引用类型user里面的username属性
同样可以通过user.address.addr获取user中引用类型address中的addr属性的值
像这种一层一层往下传递的访问方式,即所谓的导航,也就是一步步的往下调用

 

调用Action的对象里面的普通方法
默认的会把Action放到值栈里面,而值栈在访问的时候,并不需要值栈的名字
当我们调用<s:propertyvalue="user.getVOMethod()"/>的时候
它会自动到值栈里面查找Action对象里面有没有user对象,然后它就发现有user
然后它就再找user里面有没有getVOMethod()方法,然后它发现有,于是调用getVOMethod()
实际上调用User中的getVOMethod()方法的过程与获取表单中的姓名密码的方式都是相同的
都是到值栈里面查找,找是否存在user对象,如果存在,接着查找user中是否存在某某属性或方法

 

调用Action中的静态方法
同样我们也可以在JSP页面中写一个OGNL表达式调用Action中的静态方法
调用Action中的静态方法时,与调用user对象的getVOMethod()方法的过程,是截然不同的
此时value的写法是固定的,以@开头,后面跟上具体的包名,然后@加上静态方法
比如<s:propertyvalue="@com.jadyer.action.LoginAction@getStatic()"/>
另外user对象是LoginAction中的一个属性,这个属性会自动的放到值栈里面
而值栈调用的时候,不用加上@或者包名等等,所以直接user.getVOMethod()就可以了

 

调用JDK类中的静态方法
可以使用<s:propertyvalue="@@floor(46.58)"/>输出floor()的执行结果
这就意味着如果不在@@中指定类的话,默认的就表示java.lang.Math类
当前大多数情况下,我们都不会省略这个类,都会写全了的,然后在后面加上静态方法

 

集合的伪属性
OGNL能够引用集合的一些特殊的属性,这些属性并不是JavaBean模式,例如size()、length()
当表达式引用这些属性时,OGNL会调用相应的方法,这就是伪属性
比如获取List的大小:<s:propertyvalue="testList.size"/>
      List的伪属性:
size、isEmpty、iterator
       Set的伪属性:size、isEmpty、iterator
       Map的伪属性:size、isEmpty、keys、values
  Iterator的伪属性:next、hasNext
Enumeration伪属性:next、hasNext、nextElement、hasMoreElements

 

获取集合中元素的实质就是调用它的toString()方法
它还可以直接获取集合中的元素,事实上是在调用集合的toString()方法
所以我们可以根据实际情况通过重写集合的toString()方法来实现个性化输出
甚至它还可以像访问数组那样,直接testList[2]获取集合中的元素
但这种方法只适用于List,不适用于Map。因为Map的索引是key,不是数值
另外,由于HashSet中的元素是没有顺序的,所以也不能用下标获取单个元素

 

Lambda表达式
补充一下:使用Lambda表达式可以在OGNL中书写递归式子,在帮助中对它有很详细的说明
打开帮助中的//struts-2.0.14-all//struts-2.0.14//docs//index.html页面
在左侧的Documentation下面点击Guides链接,然后在这个页面中点击OGNL
最后跳转到//struts-2.0.14-all//struts-2.0.14//docs//docs//ognl.html
将这个页面右侧的下拉条拖放到最下面,就会看到它的说明了,它举的例子如下所示
<s:property value="#fib =:[#this==0? 0 : #this==1 ? 1 : #fib(#this-2)+#fib(#this-1)], #fib(11)" />
Lambda表达式的语法是:[...] ,中括号前面有一个冒号,所有东西都在中括号里面写
也就是说我们只要看到一个冒号跟着一个中括号,就表示这里使用的是Lambda表达式
#this指的是表达式的参数
所以这个例子可以这样理解:先判断这个参数是否等于零,如果等于零,那么它的值最后就是零
如果参数不等于零,就再判断它是否等于壹。如果参数等于壹,那么它的值最后就是壹
如果参数不等于壹,就继续调用#fib。注意这里已经用中括号将整体的值赋给了fib
实际上很少能够用得到Lambda表达式

 

利用投影获取属性
利用投影获取List中对象的username属性时,其中{}表示的是一个集合
stus.{username}就表示将suts中所有的username属性取出组成一个新的列表

 

利用选择获取属性
OGNL表达式是很灵活的,可以同时使用选择技术与投影技术获取属性
使用选择技术时,#this代表当前元素,问号?是把所有满足条件的元素都取出来
上箭头^是开始的意思,所以stus.{^#this.grade>=60}.{username}输出的是[张三]
注意,此时输出文本中包含中括号,这表示它是一个列表
而stus.{?#this.grade>=60}.{username}[0]输出的是张三,是字符串,二者是不同的
美元符号$是结束的意思,所以stus.{$#this.grade>=60}.{username}输出的是[王五]
这三个符合:问号、上箭头、美元符所返回的都是List

 

补充
1..
当OGNL取不到值的时候,它不会报错,而是什么都不显示
2..<s:property value="[0]"/>返回的是ValueStack中从上至下的所有的Object
    <s:propertyvalue="[1]"/>返回的是ValueStack中从上至下的第二个Object
3..<s:property value="[0].username"/>返回的是成员变量username的值
    假设ValueStack中存在两个Action的话,如果第一个Action如果没有username变量
    那么它会继续找第二个Action。那么在什么情况下ValueStack中会存在两个Action呢
    答案是在struts.xml中配置的是从一个Action通过<resulttype="chain">跳转到另一个Action
4..<constantname="struts.ognl.allowStaticMethodAccess"value="true"/>
    在Struts2.1.6中必须设置struts.ognl.allowStaticMethodAccess为true之后
    才允许使用OGNL访问静态方法。而在Struts2.0.11则无需设置,即可直接访问


Struts 2 s 标签大全

在JSP中使用taglib编译指令导入标签库 <%@ taglib prefix="s"uri="/struts-tags" %>

A:
<s:ahref=""></s:a>-----超链接,类似于html里的<a></a>
<s:actionname=""></s:action>-----执行一个view里面的一个action
<s:actionerror/>-----如果action的errors有值那么显示出来
<s:actionmessage/>-----如果action的message有值那么显示出来
<s:append></s:append>-----添加一个值到list,类似于list.add();
<s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajax

B:
<s:beanname=""></s:bean>-----类似于struts1.x中的,JavaBean的值

C:
<s:checkbox></s:checkbox>-----复选框
<s:checkboxlistlist=""></s:checkboxlist>-----多选框
<s:comboboxlist=""></s:combobox>-----下拉框
<s:component></s:component>-----图像符号

D:
<s:date/>-----获取日期格式
<s:datetimepicker></s:datetimepicker>-----日期输入框
<s:debug></s:debug>-----显示错误信息
<s:div></s:div>-----表示一个块,类似于html的<div></div>
<s:doubleselect list="" doubleName=""doubleList=""></s:doubleselect>-----双下拉框

E:
<s:iftest=""></s:if>
<s:elseiftest=""></s:elseif>
<s:else></s:else>-----这3个标签一起使用,表示条件判断

F:
<s:fielderror></s:fielderror>-----显示文件错误信息
<s:file></s:file>-----文件上传
<s:formaction=""></s:form>-----获取相应form的值

G:
<s:generator separator=""val=""></s:generator>----和<s:iterator>标签一起使用

H:
<s:head/>-----在<head></head>里使用,表示头文件结束
<s:hidden></s:hidden>-----隐藏值

I:
<s:i18nname=""></s:i18n>-----加载资源包到值堆栈
<s:includevalue=""></s:include>-----包含一个输出,servlet或jsp页面
<s:inputtransferselectlist=""></s:inputtransferselect>-----获取form的一个输入
<s:iterator></s:iterator>-----用于遍历集合

L:
<s:label></s:label>-----只读的标签

M:
<s:merge></s:merge>-----合并遍历集合出来的值

O:
<s:optgroup></s:optgroup>-----获取标签组
<s:optiontransferselect doubleList="" list=""doubleName=""></s:optiontransferselect>-----左右选择框

P:
<s:param></s:param>-----为其他标签提供参数
<s:password></s:password>-----密码输入框
<s:property/>-----得到'value'的属性
<s:pushvalue=""></s:push>-----value的值push到栈中,从而使property标签的能够获取value的属性

R:

<s:radiolist=""></s:radio>-----单选按钮
<s:reset></s:reset>-----重置按钮

S:
<s:selectlist=""></s:select>-----单选框
<s:setname=""></s:set>-----赋予变量一个特定范围内的值
<s:sortcomparator=""></s:sort>-----通过属性给list分类
<s:submit></s:submit>-----提交按钮
<s:subset></s:subset>-----为遍历集合输出子集

T:
<s:tabbedPanelid=""></s:tabbedPanel>-----表格框
<s:table></s:table>-----表格
<s:textname=""></s:text>-----I18n文本信息
<s:textarea></s:textarea>-----文本域输入框
<s:textfield></s:textfield>-----文本输入框
<s:token></s:token>-----拦截器
<s:tree></s:tree>-----树
<s:treenodelabel=""></s:treenode>-----树的结构

U:
<s:updownselectlist=""></s:updownselect>-----多选择框
<s:url></s:url>-----创建url


Struts2的OGNL详解 OGNL详细讲解, 学习跟多的利用! 立即下载

相关推荐

使用Docker搭建MaxKB智能体平台

【代码】使用Docker搭建MaxKB智能体平台。

janthinasnail的博客 711

Struts2中的OGNL表达式

完整版见https://jadyer.github.io/

半步多 8562

差分逻辑电平——LVDS、CML、LVPECL、HCSL互连

首先了解差分逻辑电平结构,也包括单端逻辑电平常见的逻辑电平_常用的逻辑电平-优快云博客注:ECL >> PECL >> LVPECL演变而来;QDR(Quad Data Rate):四倍数据倍率本文章只涉及差分逻辑电平:LVDS 、LVPECL、CML (高速)(最常用)在任何给定的系统设计中,必须设计驱动器侧和接收器侧之间的时钟逻辑转换。通过在它们之间增加衰减电阻和偏置电路来将一个差分时钟转换为其他类型的差分逻辑,来衰减摆幅电平并重新偏置共模输入接收器。

weixin_45365488的博客 4万+

关于OGNL表达式

1.1 OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任 意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能;可以让我们用非常简单的表达式访问对象层 1.2 OgnlContext(ongl上下文)其实就是Map集合 OgnlContext=根对象(1)+非根...

Ann257725的博客 303

UE5实现物体高亮描边效果(含UE相关源码浅析)

UE5实现物体高亮描边效果

专注GIS开发 7335

利用 Python 爬虫进行舆情监测的实战方法

舆情监测是指对互联网上的公众舆论进行监测和分析的过程。它可以帮助企业和组织了解公众对其品牌、产品或服务的看法,以及市场竞争情况。通过舆情监测,企业可以及时发现潜在的问题和机会,从而做出相应的决策。通过本实战案例,我们了解了如何利用 Python 爬虫进行舆情监测的整个流程。从数据采集到数据分析,再到可视化展示,每一步都提供了详细的代码示例和注释。希望这些方法和技巧能够帮助你在实际工作中更好地进行舆情监测,从而为企业的决策提供有力的支持。wordcloud。

u014481728的博客 1055

深入解析Struts2中的OGNL表达式及其强大功能

值栈(ValueStack)是什么值栈(ValueStack),是 Struts2 的数据中转站,栈中自动保存了当前Action 对象和其他相关对象(包括常用的 Web 对象的引用,如 request、session、application 等),也可以手动保存自己的数据对象,同时也可以随时随地将对象从值栈取出或操作(通过 OGNL 表达式)值栈(ValueStack),

蓝鲸鱼计算机软件开发工作室 1308

搞懂 SAPUI5 Fiori 应用的 OData 授权维护:从 IWSG、IWSV 到 S_SERVICE 的完整实践

本文探讨了SAP Fiori项目中常见的授权问题及其解决方案。文章指出,开发人员常误将OData服务访问问题归咎于前端代码或配置,而实际上多因授权默认值未正确带入角色所致。详细分析了IWSG(前端服务组元数据)和IWSV(后端业务服务)两个关键对象的作用机制,强调应通过PFCG角色的Authorization Default入口维护服务对象,而非直接修改S_SERVICE授权对象。文章还提供了前后端授权配置的具体操作步骤,并特别提醒需同时配置前端和后端授权,才能确保应用完整可用性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 212

struts2之ognl

本文章给大家介绍下struts2框架的子控制器类的赋值操作及原理 目录 OGNL ValueStack ActionContext OGNL在页面中获取后台数据格式 OGNL OGNL(Object-Graph Navigation Language的简称),对象图导航语言,它是一门表达式语言,除了用来设置和获取Java对象的属性之外,另外提供诸如集合的投影和过滤以及lambda表达式等 接下来给大家展示两个JavaBean类,整个OGNL的介绍,将围绕着这两个类展开 ...

鑫709的博客 1067

SAP HANA 中的 Union Node Pruning:让 Calculation View 少走弯路的关键优化

摘要:SAP HANA的Union Node Pruning技术通过在执行前排除无关数据源来优化查询性能。该技术主要采用三种方式:Constant Mapping(适用于规则稳定的场景)、Pruning Configuration Table(灵活性高)和Column-Based Pruning(基于列可用性)。典型应用场景包括分层存储的数据查询,如区分当前和历史销售数据。需要注意的是,当查询发生Unfolding且不含聚合时,Pruning可能失效,此时可通过NO_CALC_VIEW_UNFOLDING提

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 875

WPF实战项目十七(客户端):数据等待加载弹框动画

1、在Common文件夹下新建文件夹Events,新建扩展类UpdateLoadingEvent。2、新建一个静态扩展类DialogExtensions来编写注册和推送等待消息弹框方法。3、在ViewModel中添加实现类NavigationViewModel。5、在View文件夹下新建用户控件ProgressView.xmal。4、在主窗体MainView.xmal中给弹窗界面命名。6、在MainView.xmal.cs中注册消息。

yigu4011的博客 2348

struts2标签<s:property value=""/> ognl和el

1、struts2标签解释 http://zhidao.baidu.com/question/88668316.html?fr=qrl&index=0 2、struts2 的标签中 property是什么意思?怎么用? http://zhidao.baidu.com/question/310639670.html  Struts2中的property标签 是用于取得OgnlContext

liudan75562349的专栏 5442

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

STRUTS2中的OGNL

[类全名(包括包路经)]@[方法名|值名]例如:访问OGNL上下文(OGNLcontext)和ActionContext操作集合对象类图ValueStackValueStack是一个接口,在struts2中使用OGNL表达式实际上是使用实现了ValueStack接口的类OgnlValueStack,这个类是OgnlValueStack的基础。ValueStack贯穿整个action的生命周期。每一个action实例都拥有一个ValueStack对象。

2501_90251017的博客 966

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

struts2 之 OGNL

struts2 之 OGNLOGNLOGNL 简介ValueStackOGNL 的jar包OnglExpression示例讲解Demo1DemoAction OGNL OGNL 简介 OGNL 的全称是Object Graph Navigation Language(对象图导航语言), 它是一种强大的表达式语言 OgnlContext( ognl上下文 ) 其实就是Map(教室、老师、学生) m...

qq_44641053的博客 283

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Struts2之ognl

Struts2之ognl基础OGNL什么是OGNLOGNL上下文ValueStack值栈什么是值栈值栈的存储位置总结 OGNL 什么是OGNL OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言。 OGNL上下文 OgnlContext(OGNL上下文)其实就是Map集合 OgnlContext由根对象(1个)+非根对象(N个)组成 root 非根对象要通过"#key"访问,根对象可以省略"#key"(因为根对象只有一个,加不加#

m0_46699799的博客 279

struts2 ognl_Struts2 OGNL

struts2 ognlStruts2 OGNL is the expression language where OGNL stands for Object-Graph Navigation Language. OGNL is tightly coupled in Struts2 and used to store form parameters as java bean variables ...

从零开始的教程世界 228

Struts2之OGNL

Struts2之OGNL简介案列说明 简介 1 OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言 2 OgnlContext(ongl上下文)其实就是Map OgnlContext=根对象(1)+非根对象(N) 非根对象要通过"#key"访问,根对象可以省略"#key" 注:context:英文原意上下文,环境/容器 重点...

qq_44847231的博客 175

struts2 中的ognl

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

快乐小编的专栏 735

Struts2之Ognl

OGNL简介 1.1 OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言 1.2 OgnlContext(ongl上下文)其实就是Map (教室、老师、学生) OgnlContext=根对象(1)+非根对象(N) 老师:跟对象 1 学生:非根对象 EL表达式和OGNL的区别: EL 是为了方便在这个9...

only老K的博客 qq:1025271924 273

Struts2学习笔记三:OGNL表达式学习、Struts2与Ognl表达式的结合原理

文章目录1. Struts2学习笔记三:OGNL表达式学习、Struts2与Ognl表达式的结合原理1.1. 什么是OGNL表达式1.2. 使用OGNL表达式1.3. Struts2和ONGL表达式的结合原理 1. Struts2学习笔记三:OGNL表达式学习、Struts2与Ognl表达式的结合原理 1.1. 什么是OGNL表达式 OGNL:对象视图导航语言,是比EL表达式有更加丰富的功能,E...

公子&小白的博客 725

struts2的OGNL的使用

要谈OGNL在Struts2中的应用,首先得明白OGNL到底是什么 在值栈中的对象,可以直接访问,但是用#.对象的时候却又访问不到,但用#this.对象的时候又可以访问得到,用%所有的没关系的 OGNL 的历史 OGNL 最初是为了能够使用对象的属性名来建立 UI 组件 (component) 和 控制器 (controllers) 之间的联系,简单来说就是:视图 与 控制器

daniel_wu2007的专栏 701

Struts2中的OGNL

什么是OGNL OGNL 英文Object-Graph Navigation Language(对象导航语言),听着挺悬乎,其实就是一种表达式语言,OGNL是一种强大的技术,它被集成在Struts2中,用来帮助数据转移和类型转换。   我们使用OGNL表达式将java端的数据属性和基于文本的视图层中的字符串绑定起来,这通常出现在表单输入字段的name属性或者struts2标签的各种属性

RiceToLife的博客 502

Struts2中的OGNL详解

一、OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能。 二、OGNL的基础知识: 1. OGNL表达式的计算是围绕OGNL上下文进行的 OGNL上下文实际上...

297

struts2之ognl表达式

struts2之ognl基础前言ognlValueStack(值栈) 前言 之前讲了基于maven的struts2框架项目的简单流程,这次主要讲关于struts2的ognl。 ognl 什么是ognl? OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言。 说起表达式语言我们就会想起来el表达式,ognl表达式与el表达式最大的区别就是他可以存值也可以取值,而el表达式只能取值。 什么是ognl上下文? OgnlContext(OGN

JiangHu_Java的博客 355
上一篇: Jsp EL语法
下一篇: JSTL标签使用
飞翔的迈克
博客等级 码龄18年 51粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值