Struts2对Ognl的支持】的更多相关文章

                                                  Struts2对Ognl的支持 一. 写作背景 由于工作性质的变化,最近一直在研究struts2,从源码到各个技术点的分析,突然之间发现以前对struts2的ognl这一块的知识覆盖的还不是很全面.再加上笔者身处在深圳这个城市,这些天来一直高温不断,人显得特别的烦躁不安,唯有技术(当然个人爱好还是很广泛的,例如溜冰.篮球.气枪打气球等)能让笔者从燥热中平静下来,故花上几个小时整理了这篇博客,若有失…
一.OGNL的概念 OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能. Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言: JSTL(JSP Standard Tag Library),J…
一.OGNL是什么? OGNL(Object-Graph Navigation Language)对象图导航语言,是一种表达式语言,它可以 1.遍历对象的结构图 2.存取对象的属性(实例属性和静态属性) 3.调用对象的方法(实例方法和静态方法) 4.操作集合对象(数组.List.Map) 5.new对象 (自动初始化,需要无参构造器) 6.自动进行类型转换 -- 总的来说这货就是提供一种简便的方式来进行数据转移和类型转换. 1.数据转移数据从前端页面过来,参数拦截器将它们拍到Action对应的属…
一.Struts2可以将所有标签分成3类: UI标签:主要用于生成HTML元素的标签. 非UI标签:主要用于数据库访问,逻辑控制等标签. Ajax标签:用于Ajax支持的标签. 对于UI标签,则有可以分为两类: 表当标签:表单标签主要用与生成HTML页面的from元素,以及普通表单元素的标签. 非表单标签:非表单标签主要用于生成页面的树.Tab页等. 流程控制标签:主要包含用于实现分页.循环等流程的标签. 数据访问标签:主要包含用于输出ValueStack中的值,完成国际化等功能的标签. Str…
OGNL简介: (1)OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.  struts2框架默认就支持Ognl表达式语言(所以struts必须引用的包:ognl.jar): (2)struts2的ognl的作用:页面取值使用: (3)OGNL和EL的区别: EL表达式语言:用于页面取值,jsp页面取值的标准(默认可以直接使用,应用范围更加广泛):   OGNL表达式语言:struts2标签默认支持的表达式语言,必须配置st…
一.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框架中,做为它的默认表达式语言…
时间:2017-1-12 12:02 --OGNL1.OGNL表达式是什么    OGNL的全称是Object-Graph Navigation Language的缩写,中文名是对象图导航语言,它是一种功能强大的表达式语言.    比EL表达式功能强大.    Struts2将OGNL表达式语言集成到Struts2框架中,作为它的默认表达式语言.2.OGNL表达式的功能    1)支持对象方法调用,如:xxx.doSomeMethod()    2)支持类静态的方法调用和值访问.    3)访问…
一.简介        struts2确实一个非常棒的MVC框架.这里部分记述一下struts2对AJAX的支持.实现AJAX有两种方式,一种是使用原生的javascript代码实现,一种是使用第三方的ajax框架(jquery,dwr,dojo等),jquery和dwr比较简单,做项目时也会经常用到.Struts2并没有发明新的AJAX框架,而是使用两个较为流行的框架,即Dojo框架和DWR框架. Dojo是一个用javascript语言实现的开源DHTML工具包,是一个客户端的AJaX框架,…
两者的结合原理 底层源码分析 栈原理 先进后出 我们的valuestack其实是一个接口 在实现类中有这个参数 CompoundRoot的类继承的是ArrayList,具体实现弹栈和压栈的方法具体实现原理 在OgnlValueStack实现类中分别有弹栈和压栈的方法 查看值栈中两部分的内容 (Root部分和context) 使用DEBUG标签 页面需要倒入标签库 输入地址栏回车出现一个Deug的链接,点击即可 Root部分 默认情况下,栈中放置当前访问的Action对象 Context部分 Co…
此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核心配置.动态方法调用.结果集的处理 传送门 JavaWeb_(Struts2框架)Log4j的配置以及解决中文乱码 传送门 JavaWeb_(Struts2框架)参数传递之接收参数与传递参数 传送门 JavaWeb_(Struts2框架)Ognl小案例查询帖子 传送门 JavaWeb_(Struts…
1.Struts与OGNL的结合原理 (1)值栈: OGNL表达式要想运行就要准备一个OGNLContext对象,Struts2内部含有一个OGNLContext对象,名字叫做值栈. 值栈也由两部分组成,一部分叫做root,里面放置的是栈,另一部分是context放入的是数据中心. (2)栈: 利用了栈先进先出的特点,每次放入元素的时候是放入到索引为零的位置,取出的时候也是取出索引为零的元素,即:从下图的最上方元素取,符合栈的先进先出的特性. 2.<s:debug>标签(查看值栈中的内容) (…
1 OGNL概述 OGNL是对象图导航语言Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能.它使用相同的表达式去存取对象的属性.在前面的例子中,登录页面输入框的name用到的名字就是OGNL的表达式,比如:“账号:<input type="text" name=&qu…
一.Struts2标签的优势 标签库简化了用户对标签的使用 结合OGNL使用,对于集合.对象的访问功能非常强大 提供可扩展的主题.模板支持.极大简化了视图页面的编写 不依赖任何表现层技术 Struts2标签的分类: 通用标签(Generir Tags) 数据标签(Data Tags) 控制标签(Control Tags) UI标签(UI Tags) Ajax标签(Ajax Tags) 二.数据标签 web.xml <filter> <filter-name>struts2</…
Struts2总结 Struts2完整的处理流程: 1  客户端发送请求,交给struts2控制器(StrutsPrepareAndExecuteFilter). 2  Filter控制器进行请求过滤,如果是/actionName.action,/actionName(默认)两种格式请求,执行后给Action处理. 3 Filter控制器创建一个ValueStack对象,讲Action对象压入栈顶,将request,session,application等对象装入Context区域. 4  Fi…
技术分析之OGNL表达式概述(了解)        1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写        * 所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其它对象        * 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能.它使用相同的表达式去存取对象的属性        2. Struts2框架使用OGNL作为默认的表达式语言 …
什么是OGNL表达式? OGNL是Object Graphic Navigation Language 是操作对象属性的开源表达式. Struts2框架使用OGNL作为默认的表达式语言. 为什么我们学习OGNL 在学习JSP的时候,我们已经学习过了EL表达式.EL表达式用起来也十分简单...我们在Struts2框架中也是可以使用EL表达式的...那么OGNL表达式好在哪里呢?? 支持对象方法调用,如xxx.doSomeSpecial() 支持类静态的方法调用和值访问,表达式的格式[例如:"@@f…
一.OGNL概述 1.1OGNL是对象图导航语言(Object-Graph Navigation Languaged)的缩写,他是一种功能强大的表达式语言,通过简单一致的表达式语法,可以存取Java对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型的转化功能.他使用相同的表达式去存取对象的属性.如果吧表达式看作一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与java对象之间沟通的桥梁. 1.2OGNL的要素 表达式:表达式是整个OGNL的核心,OGNL会根据表达式去对…
一.什么是OGNL  Object Graph Navigation Language对象图导航语言. 是Struts2默认的表达式语言,开源,功能更强大.和EL表达式有点相似 存取对象的属性,调用对象的方法 访问静态方法,静态属性 访问值栈及Stack Context 支持赋值.运算操作.字段类型转化等. 二.简单例子 导入所需要的struts2的包 web.xml增加struts2过滤器 <filter> <filter-name>struts2</filter-name…
一.OGNL表达式 1.概述 1.1什么是OGNL ​ OGNL是Object-Graph Navigation Language的缩写,俗称对象图导航语言. 它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能. ​ Eg: hibernate 查询方式 : 对象导航查询. ​ 其实就是查询出来了一个对象之后,通过对象里面的getXXX() 来获取关联的对象. ​ 它是一个开源项目,并不是struts发明…
今天分享的是Struts2框架中的一种ognl表达式语言,主要分两个目标去学习    1.理解struts2传值的优先级    2.ognl与el的区别 一:ognl表达式语言简介 OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言,让你通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能. 1.1:简单对 对象图导航语言举例分析    假如现在项目中有两个…
ONGL简介: OGNL 的全称是对象图导航语言( Object-Graph Navigation Language),它是一种功能强大的开源表达式语言,使用这种表达式语言,可以通过某种表达式语法,存储 java 对象的任意属性,调用 java 对象的方法,同时能够自动实现必要的类型转换.如果把表达式看作是一种带有语义的字符串,那么 OGNL 无疑成为了这个语义字符串于 java 对象之间的沟通桥梁. OGNL的要素 表达式:表达式是整个OGNL的核心,OGNL会根据表达式去对象中取值,所有的O…
Web项目中加入struts2 的支持 在lib下加入strut2的jar包 2. 在web.xml中添加配置 <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filt…
Struts2对异常支持(声明式异常.自动的异常处理), 异常处理(运行期异常事务自动回滚) 1. 自定义异常类,继承RuntimeException或Exception实现构造方法. 2. 配置异常:全局页面跳转,与全局异常处理.其他包如果想使用,需要继承. <global-results> <result name="error">/error.jsp</result> <result name="input">/…
OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能.此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的.OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示.它里面可以存放很多个JavaBean对象.它有一个上下文根对象.上下文中的…
OGNL表达式语言(#号的用法) 用法1:访问OGNL上下文和Action上下文,#相当ActionContext.getContext() 1.  如果访问其他Context中的对象,由于他们不是根对象,所以在访问时,需要添加#前缀 也可写为#request[‘userName’]或#session[‘userName’]或#appliction[‘userName’] 2 .OGNL会设定一个根对象(root对象),在Struts2中根对象就是ValueStack(值栈) .如果要访问根对象…
在Struts2中,一个请求在终于到达Action的方法之前,Action对象本身会被压入ValueStack(实际上就是放到ValueStack的CompoundRoot中),所以Action对象是CompoundRoot中的一个元素.看以下的代码: public class UserAction { private String username; private Integer age; private boolean valid; //查看用户的具体信息 public String de…
OGNL:Object-Graph Navigation Language.对象图形化导航语言 OGNL是集成进struts2框架中比較强大的技术有助于传输数据和类型转换,OGNL由表达式语言和类型装换器组成. 表达式语言: 我们已经在jsp表单input名和jsp标签使用该语言了.他用来绑定java端的数据属性和基于字符串的 视图层表示.表达式语言甚至能够进行方法调用,目的就在于方便数据訪问.大多数时候OGNL表达式不 须要转义,如需转义的话,须要用到%{表达式}符号.框架会把它依照表达式来处…
ognl它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对Java对象图进行导航. 先看一张示意图 如果是下面的除了第一种valueStack的下面几种类型我们的方式就要用#号,如有一个request的属性我们就是这么用 #request.req  就相当于request.getAttribute("req"); 下面我们做一个实例: 首先写一个Test.JAVA package com.fish; import java.util.A…
OGNL: Object Graph Navigation Language index.jsp: <body> 访问属性 <a href="<%=contextPath %>/ognl.action?username=u&password=p">ognl</a> </body> struts.xml: <?xml version="1.0" encoding="UTF-8"…
OGNL(Object-Graph Navigation Language的简称),对象图导航语言,它是一门表达式语言,除了用来设置和获取Java对象的属性之外,另外提供诸如集合的投影和过滤以及lambda表达式等.在Struts2中有大量的使用,本篇我们一起来研究一下OGNL表达式在Struts2中的使用. 首先是获取值栈中的普通属性,问题来了,哪些属性会被封装到值栈中呢?首先是我们在Action中设置的默认参数,其次是我们通过url地址传递给Action的参数,好了接下来我们做一下测试:首先…