29.OGNL与ValueStack(VS)-总结OGNL[重点]】的更多相关文章

转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.Struts2使用OGNL作为默认的表达式语言. 相对于EL表达式,它提供了平时我们需要的一些功能,如:支持对象方法调用,支持各类静态方法调用和值访问,支持操作集合对象.OGNL有一个上下文的概念,这个上下文件实质就是一个Map结构,它实现了java.u…
1.值栈入门 下面我们建立struts2ognl项目来练习ognl的使用. 步骤一.搭建strust2的开发环境 步骤二.建立LoginAction,主要代码如下: package com.asm; public class LoginAction extends ActionSupport{ private User user; public String execute() throws Exception { return SUCCESS; } ...省略user的get/set方法 }…
一.OGNL 1.1 概述 1.2 OGNL 五大类功能 1.3 演示 二.ValueStack 2.1 概述 2.2 ValueStack结构 2.3 结论 2.3 一些问题 三.OGNL表达式常见使用符号 3.1 #号 3.2 %号 3.3 $号 一.OGNL 1.1 概述 OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言.比el表达式功能强大.Struts2将ognl表达式语言,集成当sturts2框架中,做为它的默认表达式语言…
利用OGNL获取ValueStack中:根栈和contextMap中的数据 原则:OGNL表达式如果以#开头,访问的contextMap中的数据 如果不以#开头,是访问的根栈中的对象的属性(List集合) 1.在动作类中 public String execute() {         // 操作ValueStack         // 从当前线程中获取ActionContext对象         ActionContext ac = ActionContext.getContext();…
ValueStack基础:OGNL 要了解ValueStack,必须先理解OGNL(Object Graphic Navigatino Language)! OGNL是Struts2中使用的一种表达式语言,它可以用于JSP的标签库中,以便能够方便的访问各种对象的属性:它用于界面将参数传递到Action(并进行类型转换)中:它还可以用于struts2的配置文件中!所以,非常有必要理解OGNL的基本机制. Root对象 OGNL称为对象图导航语言.所谓对象图,即以任意一个对象为根,通过OGNL可以访…
原文地址:http://blog.csdn.net/li_tengfei/archive/2010/12/25/6098134.aspx 前言: Strut2的Action类通过属性可以获得所有相关的值,如请求参数属性值等.要获得这些参数值,我们要做的唯一一件事就是在Action类中声明与参数同名的属性.在Struts2调用Action类的Action方法(默认是execute方法)之前,就会为相应的Action属性赋值.要完成这个功能,有很大程度上,Struts2要依赖于ValueStack对…
什么是OGNL表达式? OGNL是Object Graphic Navigation Language 是操作对象属性的开源表达式. Struts2框架使用OGNL作为默认的表达式语言. 为什么我们学习OGNL 在学习JSP的时候,我们已经学习过了EL表达式.EL表达式用起来也十分简单-我们在Struts2框架中也是可以使用EL表达式的-那么OGNL表达式好在哪里呢?? 支持对象方法调用,如xxx.doSomeSpecial() 支持类静态的方法调用和值访问,表达式的格式[例如:"@@floor…
什么是OGNL表达式? OGNL是Object Graphic Navigation Language 是操作对象属性的开源表达式. Struts2框架使用OGNL作为默认的表达式语言. 为什么我们学习OGNL 在学习JSP的时候,我们已经学习过了EL表达式.EL表达式用起来也十分简单...我们在Struts2框架中也是可以使用EL表达式的...那么OGNL表达式好在哪里呢?? 支持对象方法调用,如xxx.doSomeSpecial() 支持类静态的方法调用和值访问,表达式的格式[例如:"@@f…
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html $用于i18n和struts配置文件 #取得ActionContext的值 %将原来的文本串解析为ognl,对于本来就是ognl的文本不起作用.形式:%{要解析的文本串}…
ValueStack&ActionContext(非常重点:值栈) 1.针对用户的每次动作访问,都会创建属于自己的ValueStack对象 2.ValueStack中的的常用方法:功能一定要知道干什么的.实现类OgnlValueStack getContext():返回的是一个Map<String,Object> *getRoot():返回的是一个CompoundRoot. CompoundRoot就是一个ArrayList的子类(就是一个List).实现了一个栈结构 Compound…
时间:2017-1-12 12:02 --OGNL1.OGNL表达式是什么    OGNL的全称是Object-Graph Navigation Language的缩写,中文名是对象图导航语言,它是一种功能强大的表达式语言.    比EL表达式功能强大.    Struts2将OGNL表达式语言集成到Struts2框架中,作为它的默认表达式语言.2.OGNL表达式的功能    1)支持对象方法调用,如:xxx.doSomeMethod()    2)支持类静态的方法调用和值访问.    3)访问…
OGNL简介 OGNL的全称是Object Graph Navigation Language,即对象导航图语言.它是一个开源项目,工作在视图层,其通过简单一致的表达式语言来读取合适者Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型的转换. OGNL简介 OGNL的计算都是围绕着OGNL上下文来进行的,OGNL上下文实际就是一个Map集合,由ognl.OgnlContext类来表示(其被封装到ActionContext中).其可以包含一个或多个上下文对象. 先面以一个例子…
一.OGNL 1)什么是OGNL? 解析:OGNL是Object Graph Navigation Language(对象图导航语言)它是强大的表达式语言. 2)用途:通过简单一致的表达式语法来读取和设置java对象的属性值.(调用对象方法,遍历整个对象的结构图,实现 字段类型转换等功能) 3)OGNL表达式的计算都是围绕OGNL上下文来进行的,OGNl上下文实际上就是一个Map对象,由ognl.OgnlContext类 (实现了java.util.Map接口)来表示.OGNL上下文可以包含一个…
在Struts2中,一个请求在终于到达Action的方法之前,Action对象本身会被压入ValueStack(实际上就是放到ValueStack的CompoundRoot中),所以Action对象是CompoundRoot中的一个元素.看以下的代码: public class UserAction { private String username; private Integer age; private boolean valid; //查看用户的具体信息 public String de…
要了解Struts2与OGNL表达式的关系,我们必须先搞清楚以下三个概念: 1.  ActionContext它是Action运行的上下文环境,Action的多项设置都存放在次,我们每一次Action调用都会创建一个ActionContext.通常情况下我们可以通过静态方法getContext()来获得Action上下文,进而进行其它操作,比如说可以得到request.session.application. 2.  ValueStack此对象主要是由OGNL框架实现,具体的实现类是com.op…
一.OGNL概述 1.1 什么是OGNL OGNL的全称是对象图导航语言( object-graph Navigation Language),它是一种功能强大的开源表达式语言,使用这种表达式语言,可以通过某种表达式语法,存取Java对象的任意属性,调用Java对象的方法,同时能够自动实现必要的类型转换.如果把表达式看作是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁. 1.2 OGNL的作用 Struts2默认的表达式语言就是OGNL,它具有以下特点:…
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 下面我们建立struts2ognl项目来练习ognl的使用. 步骤一.搭建strust2的开发环境 步骤二.建立LoginAction,主要代码如下: package com.asm; public class LoginAction extends ActionSupport{ private User user; public String execute() thro…
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 下面我们在com.asm.vo.User类中增加一个字段private Address addres;,并提供此字段的get/set方法,随后再在login.jsp中增加如下代码: 城  市:<input type="text" name="user.addres.city"><br> 然后再在loginSuc.jsp中…
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 首先在LoginAction中增加如下字段并提供相应的get/set方法: private List studentList = new ArrayList(); 然后再在execute中为其初始化赋值,代码如下: studentList.add(new Student("jack", 20, 86.0f)); studentList.add(new Studen…
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 首先在LoginAction中增加如下字段并提供相应的get/set方法: private List myList = new ArrayList(); private Set mySet = new HashSet(); private Map myMap = new HashMap(); 然后再在execute方法中初始化这些集合对象,代码如下: myList.add(…
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 建立一个新的类:Student,在此省略代码. 然后在loginSuc.jsp中增加如下代码: 调用普通类中的构造方法  : <s:property value="new com.asm.vo.Student('jack','20','85.5')"/><br> 调用普通类中的构造方法并访问其字段 : <s:property valu…
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 在loginSuc.jsp中增加如下代码: 调用Math类中的静态方法:<s:property value="@java.lang.Math@min(1,2)"/><br> 调用Math类中的静态方法_方式(2):<s:property value="@@min(1,2)"/><br> 调用Mat…
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 首先在User中增加一个成员方法,代码如下: public String get(){ return "这是User中的get方法"; } 在LoginAction中也有类似的get方法,随后再在loginSuc.jsp中增加如下代码: 调用值栈对象中的普通方法(2):<s:property value="user.username.length(…
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 我们知道,除了可以从值栈中获取信息,还可以从Stack Context中获取信息,只是要加上#,下面我们通过scope对象来演示.首先是在LoginAction中增加如下字段: Map myRequest; Map mySession; 随后再用前面提到的“在Action中获取Scope对象”的方式二来完成这些对象的初始化.即实现RequestAware和SessionAw…
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html N语法[0]:<s:property value="[0]"/><br> N语法[1]:<s:property value="[1]"/><br> N语法[0].top:<s:property value="[0].top"/><br> N语法[1].t…
N语法[0]:<s:property value="[0]"/><br> N语法[1]:<s:property value="[1]"/><br> N语法[0].top:<s:property value="[0].top"/><br> N语法[1].top:<s:property value="[1].top"/><br> N语法…
时间:2017-1-6 16:53 修改struts.xml配置文件不需要重启服务器.Struts2框架    一.        *   介绍Struts2        *   关于Struts2配置(关于Action配置)        *   关于Struts2结果类型    二.        *   Struts2处理请求参数        *   Struts2的类型转换(了解)        *   Struts2的校验    三.        *   Struts2的国际化 …
前言 前面已经把struts2讲内容说了一半了,我写的很详细,希望对博友们有帮助. 一.OGNL表达式语言概述 1.1.OGNL表达式简介 百度上是这样说: OGNL是Object-Graph Navigation Language的缩写,它是一个单独的开源项目.Struts2框架使用OGNL作为默认的表达式语言. 它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的 结构图,实现字段类型转化等功能.它使用相同的表达式去存取对象的属性.…
//还会补充 首先要有一个意识 ,为什么要了解这个?: struts2中的表单是怎么通过表达式(EL or OGNL)来传给Action 和 拿到Action的值的. 值栈(根)对象也可以直接使用EL表达式访问,比如这里可以直接通过${user.username}来获取username的值,我们知道el表达式只能访问四种scope范围内的对象,那为什么这里能访问到值栈对象呢?原因是struts2对HttpServletRequet进行了一次封装,封装的代码主要是重写了getAttribute方法…
OGNL简介: (1)OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.  struts2框架默认就支持Ognl表达式语言(所以struts必须引用的包:ognl.jar): (2)struts2的ognl的作用:页面取值使用: (3)OGNL和EL的区别: EL表达式语言:用于页面取值,jsp页面取值的标准(默认可以直接使用,应用范围更加广泛):   OGNL表达式语言:struts2标签默认支持的表达式语言,必须配置st…