`
cat猫先生
  • 浏览: 4236 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts2-OGNL详解

阅读更多

一.什么是OGNL
OGNL是基于java运行环境与文本世界的沟通的桥梁;
1.什么是OGNL表达式
OGNL表达式就是所谓的属性链;

2.Struts2中的设置和取得
<s:textfield name="username" label="UserName"/>

获取
user.portfolio.name
这是一种比较复杂的情况,加入在属性链上出现null的情况如何呢?
解决方案是:
框架会尝试进行创建,这就需要属性的类型满足javaBean的要求:
(1)必须有无参的构造方法;
(2)公开的属性要有set,get方法;

3.使用List和数组
java代码                                                OGNL
list.get(0)                                             list[0]
((user)list.get(0)).getName                  list[0].name
list.size()                                              list.size
list.isEmpty                                          list.isEmpty
array[0]                                               array[0]
array.length                                        array.length

list的创建
List list = new ArrayList(3);           {1,2,3}
list.add("111");
list.add("222");
list.add("333");

4.Map的使用
map.get("foo");                                      map['foo']   map.foo
map.get(new Integer(1))                       map[1]
((User)map.get("userA").getName())     map['userA'].Name
map.size();                                             map.size
map.isEmpty();                                       map.isEmpty

map的创建
                                       #{“foo”:"bar","baz":"whazzit"}


5.过滤和投影
OGNL支持两种集合的处理方式;
过滤,允许你根据某一规则过滤一系列对象;
投影:允许你根据某个规则转换一系列对象;
过滤语法:collectionName.{? expression}
投影语法:collectionName.{expression}
users.{? #this.age>30}                            从集合当中获取年龄大于30的用户的新集合

users.{^ #this.age>30}                           从集合当中获取年龄大于30的第一个用户

users.{$ #this.age>30}                           从集合当中获取年龄大于30的最后一个用户
users.{username}                                    获取所用用户的用户名集合
users.{firstName + '' + lastName}            获取所有用户的firstName+lastName集合
users.{? #this.age>30}.{userName}       从集合当中获取年龄大于30的用户的用户名集合

二.高级OGNL知识
1.字面值类型
Char                                       'a'
String                                     'aaa',"aaaa" ,"a" 当只有一个字符组成字符串时要使用双引号
Boolean                                  true false
int                                          123
double                                    123.5
BigDecimal                             123b
BigInteger                             123h

2.操作符
+ 加,-减,* 乘, / 除,++ ,--,% 取余, ==,<,>,=
操作符合想象的一样,没有什么特别的,

3.方法的调用
Java代码                                          OGNL
userBean.makeUserNo()             makeUserNo() 此处假设userBean已经在valuestack中
userBean.getUserNO()                    userNO
                                                       getUserNO()
4.访问静态方法和字段
有两种访问方法:
1.需要指定完全限定的类名
@[fullClassName]@[property or methodCall]
实例:
@com.test.UserBean@userName
@com.test.UserBean@makeUserNO()
2.根据valuestack解析;
@vs@userName
@vs@makeUserNO()

         

 

分享到:
评论

相关推荐

    Struts2之Ognl详解案例TextOgnl

    在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象的属性。这篇博客将深入探讨OGNL在Struts2中的应用,并通过案例"TextOgnl"来展示其工作原理。 一、OGNL的基本...

    Struts2的OGNL详解

    ### Struts2中的OGNL详解 #### 一、OGNL简介 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,它属于一种Expression Language(EL),主要用于在Java环境中访问对象属性。OGNL的设计思想非常独特...

    struts2-057-exp

    该漏洞是由于Struts2的OGNL(Object-Graph Navigation Language)表达式处理不当导致的,OGNL是一种强大的脚本语言,用于在对象图中导航和操作数据。 3. **漏洞原理** 当用户提交的HTTP请求包含特定的OGNL表达式时...

    Struts框架教程内含源码以及说明书可以自己运行复现.zip

    在“3.Struts2 - OGNL 详解.md”中,你会了解到OGNL(Object-Graph Navigation Language),这是Struts2中用于表达和访问对象图的表达式语言。OGNL用于在视图层和Action之间传递数据,使数据绑定变得简单高效。 “4....

    精通struts2的ognl表达式

    ### 精通Struts2中的OGNL表达式 在深入探讨Struts2框架的核心功能时,理解并熟练掌握OGNL(Object-Graph Navigation Language)表达式的应用是至关重要的一步。OGNL是一种强大的表达式语言,它允许开发者通过简洁、...

    struts2 ognl的用法

    ### Struts2中OGNL的使用详解 #### 一、OGNL简介 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置一个对象图中的属性。它在Struts2框架中扮演着极其重要的角色,是Struts2实现...

    struts2讲义-详解

    OGNL(Object-Graph Navigation Language)是Struts2中的默认表达式语言,用于在Action与视图之间传递数据。它支持复杂的数据绑定和动态属性访问,大大简化了视图层的编程。 九、Struts2插件 Struts2拥有丰富的插件...

    struts2中OGNL的一些概念及原理说明

    ### Struts2中OGNL的概念及原理说明 #### 一、OGNL表达式的基本用法与特点 **OGNL**,即**Object Graphic Navigation Language**(对象图导航语言),是Struts2框架中用于处理对象及其属性的强大工具之一。通过...

    struts2_ognl基本用法.doc

    ### Struts2 OGNL 基本用法详解 #### 一、访问值栈中的Action及对象属性 OGNL(Object-Graph Navigation Language)是Struts2框架中用于访问和操作Java对象的一种强大表达式语言。在Struts2中,OGNL主要用于访问值...

    J2EE考试复习试题-struts2-spring-hibernate(答案整合完毕).doc

    - **基础类库**:构建Struts 2应用的基础类库包括`struts2-core`、`commons-logging`、`xwork-core`、`freamarker`以及`ognl`等。 - **控制器类**:Struts 2中的控制器类是一个普通的POJO对象,这意味着它可以被...

    struts2-spring-hibernate

    Struts2-Spring-Hibernate整合框架详解 在Java Web开发领域,Struts2、Spring和Hibernate是三个非常重要的开源框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。将这三个框架整合在一起,可以...

    Struts2 OGNL表达式实例详解

    Struts2 OGNL表达式实例详解 Struts2 OGNL表达式实例详解主要介绍了Struts2 OGNL表达式实例详解,相关实例代码,需要的朋友可以参考。Object Graph Navigation Language(对象图导航语言),就是用点来访问成员变量...

    struts2深入详解源码1-5章

    本资料包包含的是《Struts2深入详解》一书的源码分析,涵盖了从第一章到第五章的内容,并附带了相关的jar包,方便读者结合理论与实践进行学习。 首先,让我们从第一章开始,Struts2的基础知识。这一章通常会介绍...

    Struts2知识点详解

    这个"Struts2知识点详解"涵盖了从基础到高级的所有核心概念,旨在帮助开发者深入理解并熟练运用Struts2。 1. **Struts2框架结构**:Struts2的核心是Action类,它是处理用户请求的中心。通过Action类,开发者可以...

    struts2入门实例教程详解

    ### Struts2入门实例教程详解 #### 一、环境搭建与基本配置 在开始学习Struts2框架之前,首先需要确保开发环境的正确搭建。根据提供的文档,所使用的开发工具为MyEclipse6,Web服务器为Tomcat6,Struts版本为...

    struts-2.3.24-all 官方最新框架下载

    - **常用jar**:这些JAR文件可能是Struts 2框架中常用的特定组件或库,例如OGNL(Object-Graph Navigation Language)表达式语言库,用于数据绑定和表达式评估。 3. **关键概念**: - **Action**:在Struts 2中,...

    struts2 s2-045

    2. **struts.properties** 文件中的**struts.enable.OGNL.properties.update** 设置为`true`:这将允许修改服务器上的OGNL表达式,增加了RCE的风险。 3. 使用了易受攻击的Struts2版本:S2-045影响的版本范围广泛,...

    starting-struts2-chinese

    #### 三、Struts2核心组件详解 ##### 3.1 Actions - **Action类**:处理用户的请求,并控制应用程序的流程。每个Action都对应一个特定的用户请求。 - **Action接口**:Struts2中的Action必须实现Action接口或其子...

Global site tag (gtag.js) - Google Analytics