OGNL(Object Graphic Navigation Language)对象图导航语言。Struts2框架使用ognl作为默认的表达式语言。
作用:取值,获取JavaBean中的属性,获取List或者数组元素,获取Map的键值对,还可进行逻辑运算
一、ognl对普通方法的调用
<s:properties value = " " /> “ ” 内部是ognl表达式 value中字符串需要用单引号,可以使用API
二、ognl对静态变量和静态方法的调用
如果时静态方法,首先都要开启静态使用,在struts.xml中配置 <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
调用时 使用 @类的全路径@[静态变量或者静态方法] <s:property value="@java.lang.Math@abs(-100)"/>
三、ActionContext
其中包含两个部分,一个是StackValue 一个是contextMap:application、session、request、action、parameters、attr
1、在contextMap中存储数据
先根据ServletActionContext获取到ActionContext对象ac. ac.put(String name , Object obj );
//获得动作类的上下文ActionContext包含了contextmap和valuestack ActionContext ac = ServletActionContext.getContext(); //在contextmap中存储数据,默认的相当于request,因为ActionContext的生命周期和request一样都是一次请求 ac.put("name", "zhangsan");
//把数据存储在会话范围 ac.getSession().put("user", "李四");
在页面中取数据 <s:property value="#name"/> <s:property value="#session.user"/>
2、在值栈中存取数据
请求传递的参数存储在值栈中,同事把Action对象也压入栈中,属性对象在上,Action对象在下,所有对象的值既可以从栈顶取出,也可以通过Action对象中的属性取出