Struts(21)OGNL具体解释】的更多相关文章

1.什么是OGNL? 2.Struts 2 OGNL 表达式      ======================  华丽丽的分割线  ======================  1.什么是OGNL? 1.0. OGNL简介: OGNL(Object Graphic Navigation Language)对象导航语言,OGNL是一种功能强大的EL(Expression Language,表达式语言),可以通过简单的表达式来访问Java对象中的属性,而不是直接调用对象的获取和设置方法.这可…
Struts2 中内置了OGNL表达式的支持,使得Struts2的具有比Struts1更为强大的数据訪问的功能.本文主要解说OGNL的用法.并不会去解说一些原理性的东西.想要了解的朋友能够自己去查阅相关的资料 在OGNL的使用主要分下面部分来解说:1.使用OGNL訪问对象(不同范围的取值) 2.OGNL的集合操作(OGNL元素符,以及过滤和投影功能) 3.OGNL訪问静态成员(怎么訪问静态成员) 4. lambda表达式,在OGNL中使用一些简单的函数以及OGNL总结(在总结之后会具体解释Str…
好吧,坎坷的过程我就不说了,直接上结论: 在struts2中使用基于ognl的自动类型转换时,Action中的对象属性必须同时添加get/set方法. 例如: 客户端表单: <s:form action="registPro"> <s:textfield name="user.id" label="id"/> <s:textfield name="user.name" label="用户…
JSP页面便利集合的时候,代码如下 <s:iterator value="storageList" id="stList" status="st"> <tr> <td class="list_data_number"><s:property value="#st.index+1"/></td> <td class="list_dat…
-----------------------------ognl表达式------------------------ OGNL:对象视图导航语言.  ${user.addr.name} 这种写法就叫对象视图导航.OGNL不仅仅可以视图导航.支持比EL表达式更加丰富的功能. 1.使用OGNL准备工作 1.1 导包 struts2 的包中已经包含了.所以不需要导入额外的jar包 1.2 代码准备…
OGNL(Object Graph Navigation Language),是一种表达式语言.使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性.调用Java对象树的方法.同时能够自动实现必要的类型转化.如果我们把表达式看做是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁.既然OGNL那么强大,那么让我们一起来研究一下他的API,看看如何使用OGNL. OGNL的API看起来就是两个简单的静态方法: public static…
Person.jsp (struts.xml中省略) package com.mzy.entity; public class Person { private String name; private String sex; private int age; public Person() { super(); } public Person(String name, String sex, int age) { super(); this.name = name; this.sex = se…
OGNL:Object graphic Navgation Language(对象图形的导航语言)…
继上篇博客 既然我们知道了不使用struts给我们带来这么多弊端,那么以下我们来看看struts是怎样封装的.怎么解决我们出现的问题的? 先来说一下struts的基本流程,帮助大家理解以下的代码: Struts基本简要流程例如以下: 1.client浏览器发出HTTP请求. 2.依据web.xml配置.该请求被FilterDispatcher接收. 3.依据struts.xml配置.找到须要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton. 4.Action调用业务逻辑组件…
前言 本文简要介绍了Apache Struts的OGNL注入缺陷,文章中介绍使用简单的应用程序复现OGNL注入.深入研究针对公共漏洞,并理解这类漏洞. 内容 安装Apache Tomcat服务器(入门) 熟悉Java应用程序在服务器上的工作方式(Web服务器基础知识) Struts应用程序示例(Struts应用程序示例) 表达语言注入(表达式语言注入) 了解OGNL注射(对象图导航语言注入) CVE-2017-5638根本原因(CVE-2017-5638根本原因) CVE-2018-11776根…
OGNL是通常要结合Struts 2的标志一起使用,如<s:property value="#xx" /> struts页面中不能单独使用,el可以单独使用 ${sessionScope.username} 页面取值区别: 名称 servlet ognl                                                                           el parameters request.getParameter(&q…
文件下载 1.写action类 package com.gyf.web.action; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import com.opensymphony.xwork2.ActionSupport; public class DownloadAction3 extends Acti…
要在jsp中使用Struts2的标志,先要指明标志的引入.通过jsp的代码的顶部增加下面的代码: <%@taglib prefix="s" uri="/struts-tags" %>   If elseif  else 描写叙述: 运行主要的条件流转. 參数: 名称 必需 默认 类型 描写叙述 备注 test 是   boolean 决定标志里的内容是否显示的表达式 else标志没有这个參数 id 否   Object/String 用来标识元素的id.…
ValueStack里有map(request, session, attr, parameters)和对象栈. Map调用的方法: ActionContext.getContext().put(k,v)/ get(k) 对象栈的调用方法: ActionContext.getContext.getValueStack().push(obj)/pop(); OGNL格式: struts.xml, OGNL的格式为: ${ognl} jsp里 OGNL的格式为: %{ognl} 语法: user=f…
(1)ValueStack是一个借口,在Struts2中使用OGNL表达式实际上是使用实现了ValueStack接口类的OgnlValueStack,它是ValueStack的默认实现类. (2)ValueStack贯穿整个action的生命周期,每一个action实例都拥有一个ValueStack对象,其中保存了当前action对象和其他相关对象. (3)struts2把ValueStack对象保存在名为struts.valueStack的request域中,ValueStack作用域为req…
参考:Struts与OGNL结合 struts2在配置文件中可以调用Action的属性,在JSP页面也可以取出Action的属性值(前提是属性有get,set方法). 第一个例子: 1.Action中 //文件下载名 public String getDownloadFileName(){ String downloadFileName = ""; String filename = fileName + ".xls"; try { downloadFileName…
一.值栈简介: 二.OGNL引入: com.cy.action.HelloAction.java: package com.cy.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.util.ValueStack; public class He…
一.ActionContext的重要性 struts中的数据都存放在ActionContext里,所以这部分是Action中的核心. ActionContext又称广义值栈,既然有广义值栈就有侠义值栈. 1.广义值栈,指的是ActionContext对象,是Action运行的上下文,包含着request.session.application.attr.parameters.和侠义值栈(Value Stack)等.以后说值栈的时候默认指的就是广义值栈. 2.侠义值栈,ActionContext以…
1.Struts与OGNL的结合原理 (1)值栈: OGNL表达式要想运行就要准备一个OGNLContext对象,Struts2内部含有一个OGNLContext对象,名字叫做值栈. 值栈也由两部分组成,一部分叫做root,里面放置的是栈,另一部分是context放入的是数据中心. (2)栈: 利用了栈先进先出的特点,每次放入元素的时候是放入到索引为零的位置,取出的时候也是取出索引为零的元素,即:从下图的最上方元素取,符合栈的先进先出的特性. 2.<s:debug>标签(查看值栈中的内容) (…
引用我这里想知道的是同名的多个参数,会被自动的放置在List或者数组中,我想知道是怎么实现的,因为取一个参数和取多个同名的参数是不同的方法: 一个是request.getParameter 一个是request.getParameterValues 先解释一下: Struts或则XWorlk提供的Interceptor,操作的是已经被封装好的Parameters的Map了.相信你应该看到过这句话.(在CheckboxInterceptor中有) Java代码 收藏代码Map parameters…
由于Struts多用OGNL语言所以使用给类标签之前需引入<%@taglib prefix="s" uri="/struts-tags"%> 1.form(表单)标签 form标签主要用于生成表单元素,是所有UI组件中最特别的一种标签,其他的UI组件要与服务器交互数据,必须放在form标签内. <s:form name="form1" action="要提交的action的名字" method="提…
整理电脑, 发现这么个文档, 留个纪念... 1. 2016-11-17 ================================ 3.采集任务编制页面,表格表头点击实现升序/降序排列 5.socket编程 6.多线程 7.webservice 8.读写分离 9.定时任务 10.报文解析 13.webservice 14.accept方法是一种阻塞方法?什么意思? 2. 2016-11-18 2.kafka broker服务器(kafka的节点) protobuf 安装,使用.2个作用:…
greenDAO: Android ORM for your SQLite database 1. greenDao库获取 英文标题借鉴的是greendrobot官网介绍greenDao时给出的Title,链接:http://greenrobot.org/greendao/,有兴趣的可以点进去(不用外网),里面有使用说明及相关资料的下载接口.greenDao目前版本已经更新到3.x.x,与2.x.x相比支持的功能发生了很大的改变(后面会提到),所以强烈推荐使用最新的版本.如3.1.1版本的获取方…
1.截取字符串abcdace的acealert('abcdace'.substring(4)); 2.规避javascript多人开发函数重名问题命名空间封闭空间js模块化mvc(数据层.表现层.控制层)seajs变量转换成对象的属性对象化 3.javascript面向对象中继承实现function Person(name){        this.name = name;} Person.prototype.showName = function(){        alert(this.n…
转载:http://bbs.blueidea.com/thread-3107428-1-1.html 1.截取字符串abcdefg的efg //alert('abcdefg'.substring(4)); 2.判断一个字符串中出现次数最多的字符,统计这个次数 /*var str = 'asdfssaaasasasasaa'; var json = {}; for (var i = 0; i < str.length; i++) { if(!json[str.charAt(i)]){ json[s…
catalog . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch Fix 1. Description OGNL provides, among other features, extensive expression evaluation capabilities. A request that included a specially crafted request p…
文件空行处理 1. 在文件中的每一行后面添加一个空行. sed 'G' test.txt 解释: Get命令是将保留空间的内容取出,并添加到当前模式空间的内容之后(添加一行).当保留空间为空时,效果为往模式空间添加一行空行. 2. 保证文件中的每一行后面都有一行空行.和1不同的是,如果文件中本身包含空行,则合并成一行. sed '/^$/d;G' test.txt 解释:首先删除空行,再添加一行空行. 3. 删除偶数行 sed 'n;d' test.txt 解释:n的意思读入下一行,并且输出当前…
第九章:四大组件之Broadcast Receiver   一.广播的功能和特征 广播的生命周期很短,经过调用对象-->实现onReceive-->结束,整个过程就结束了.从实现的复杂度和代码量来看,广播无疑是最迷你的Android 组件,实现往往只需几行代码.广播对象被构造出来后通常只执行BroadcastReceiver.onReceive方法,便结束了其生命周期.所以有的时候我们可以把它当做函数看也未必不可. Android中的四大组件是 Activity.Service.Broadca…
一 1. 面向对象的思想主要包括什么? 答: 继承,多态,封装,类,对象,接口,聚集,聚合,泛化 2. 什么是ASP.net中的用户控件 答: 用户控件就是使用.ascx作为扩展名的文件,其将多种服务器端控件组合在一起,作为一个单独的控件服务于页面.这种用户控件存在的问题如,将其拖到不同级别的目录下后里面的图片等的相对路径会变得不准确.需要自已写方法调整. 3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS.CLS和CLR分别作何解释? 答: 应用程…
1. 零配置使用struts2-convention-plugin-2.3.16.jar,rest使用struts2-rest-plugin-2.3.16.jar 1.1 Struts2的convention插件的主要特点是“约定优于配置”,对于Struts2而言,它会自动在你创建的action.actions.struts.struts2这四个包下自动搜索,只要实现了com.opensymphony.xwork2.Action接口的类或者是类名以“Action”结尾的类,Struts2就会认为…