Struts-ValueStack和OGNL总结】的更多相关文章

1. 属性哪来的 当我们通过Action处理完用户请求以后,可以直接在页面中获取到 action 的属性值. 如果我们在页面中尝试遍历四个域中的属性,会发现域中并没有username之类的Action中的属性. 但是我们自己又没有在域中进行设置,经过研究发现request域中出现了一个奇怪属性 属性的名字:struts.valueStack 属性的类型:OgnlValueStack ValueStack翻译过叫做值栈,顾名思义就是存储值的栈 Struts在每次处理请求都会创建一个新的ValueS…
一.值栈(ValueStack) 1.实现类:OGNLValueStack 2.对象栈:CompoundRoot(针对的是类级别的) (1)继承自 ArrayList —— 先进后出 (2)提供了栈的几个操作:peek() 返回栈顶对象,pop() 弹出栈顶对象,push() 将对象压入栈顶 (3)默认情况下,会将当前 Action 对象压入栈顶.通过这个 Action 对象,可以访问到该 Action 的所有属性以及错误信息. (4)获取方式 可以通过 ValueStack 对象的 getRo…
前言 本文简要介绍了Apache Struts的OGNL注入缺陷,文章中介绍使用简单的应用程序复现OGNL注入.深入研究针对公共漏洞,并理解这类漏洞. 内容 安装Apache Tomcat服务器(入门) 熟悉Java应用程序在服务器上的工作方式(Web服务器基础知识) Struts应用程序示例(Struts应用程序示例) 表达语言注入(表达式语言注入) 了解OGNL注射(对象图导航语言注入) CVE-2017-5638根本原因(CVE-2017-5638根本原因) CVE-2018-11776根…
一.ValueStack     1.ValueStack是一个接口,在struts2中使用OGNL(Object-Graph Navigation Language)表达式实际上是使用         实现了ValueStack接口的类OgnlValueStack.它是ValueStack的默认实现类. 2.ValueStack贯穿整个action的生命周期,每一个action实例都拥有一个ValueStack对象,其中保存了当前action对象和其他相关对象. 3.struts2把Value…
(1)最近学习struts相框,我们在快乐struts强大.为了便于使用转发,但不了解详细的内部数据存储: (2)网上找了很多关于struts数据存储的原理,但我还没有找到一个具体的解释,本书上找到了 ValueStack和OGNL实现Struts2表单数据的存储原理 特分享给大家! (3)下面是部分截图:解说了关于struts框架中数据表单等的存储! watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGxnZW4xNTczODc=/font/5a6L5…
Struts中的OGNL和EL表达式笔记 OGNL(Object-Graph Navigation Language),可以方便的操作对象属性的表达式语言. 1.#符号的用途 一般有三种方式: 1.1.访问非根对象属性,如类似于#session.msg表达式,由于Struts2的值栈被当做根对象, 所以访问其他非根对象时,需要加#符号. #符号相当于ActionContext.getContext( ): #session.msg表达式相当于ActionContext.getContext().…
出现“警告: Could not find property [struts.valueStack]”这样的问题,是由于少引用了log4j.jar包,不过,不引用也不影响使用.看个人的爱好了.…
我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用   Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码复用.Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求.Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签…
一.OGNL 1.1.定义 OGNL是Object-Graph Navigation Language的缩写,它是一个单独的开源项目. Struts2框架使用OGNL作为默认的表达式语言.它是一种功能强大的表达式语言, 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能.它使用相同的表达式去存取对象的属性. 1.2.OGNL的功能 1.2.1.支持普通方法的调用 基础:<s:property value="">类…
Map栈 :request,session,application的一个属性值或一个请求参数的值. 若想访问ContextMap里的某个对象的属性,可以使用以下几种之一: #object.propertyName #object['propertyName'] #object["propertyName"] 示例: 返回session中的code属性:#session.code; 返回request中的customer对的name属性值:#request.customer.name 返…