JavaEE--SSH--structs2-OGNL表达式,contextMap,值栈valueStack的介绍及使用
2018-03-09 15:39
716 查看
一.概述:OGNL意为对象图导航语言.是一种表达式语言.原本是xwork的默认表达式语言,后来被整合进struts2中成为默认表达式语言.它可以通过某种表达式语法.存取Java对象的任意属性.调用Java对象的方法.同时能够自动实现必要的类型转换.
二.使用前提:1.导包使用OGNL表达式需要引入下面两个包.javassist-3.11.0.GA.jar
ognl-3.0.6.jar
2.jsp页面引入标签库<%@taglib uri="/struts-tags" prefix="s"%>
三.基本用法:1.<s:property value="ONGLexpression "/> 从上下文对象中取得的value值输出到浏览器上.2.OGNL表达式调用普通方法: <s:property value=" 'OGNLexpression'.length() "/>3.OGNL表达式调用静态属性: <s:property value="@java.lang.Integer.MAX_VALUE "/> //获得int类型最大值4.OGNL表达式调用静态方法:<s:proprety value="@java.lang.math@random()" /> 5.OGNL表达式创建集合 List: <s:radio name="sex" list="{'man','women'}" label="性别" /> //radio标签可以显示一个单选按钮 Map: <s:radio name="sex" map="#{'man':'男','women':'女'}" label="性别"/>
四:OGNL上下文对象ContextMap.ContextMap是struts2中封装的数据最大的对象.我们每次请求的所有数据都可以装到里面.它是一个map结构.key是字符串.value是对象.ContextMap中封装了大量的数据,但我们只看常用的封装内容.applicaiton :封装应用域的所有数据session: 封装会话域的所有数据request: 封装请求域的所有数据valueStack: 值栈,list结构 ,重点学习.
既然提到了ContextMap.那就必须说说ActionContext
五.ActionContextActionContext是strtus2提供的一个实现类,是对ContextMap进行的再一次封装.使用它操作上下文对象更加方便.
1.ActionContext创建的时机:当我们每次访问的Action创建时,核心控制器会帮我们创建ActionContext.2.ActionContext的线程安全:由于JavaWeb工程是多线程的,每个线程在访问action时都会创建自己的ActionContext,如何保证在获取ActionContext时,每个线程都能获取到自己的那个呢?答案是将ActionContext绑定到当前线程上.
六.获取ContextMap中的数据.1.action中往上下文对象存数据:ActionContext ac = ActionContext.getContext();ac.put("name","柳岩");2.从页面上获取:<h1>获取大MAP中的数据</h1>
<s:property value="#name" />3.struts2.xml配置文件<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
<package name="p1" extends="struts-default">
</package>
<package name="p2" extends="p1">
<action name="demo02" class="cn.asiainfo.struts2.web.action.ActionDemo02"
method="demo01">
<result name="success" type="dispatcher">/demo02.jsp</result>
</action>
</package>
</struts>
4.效果如图:
5.结论:我们在contextMap上存的数据是可以在jsp页面上通过OGNL表达式获取的.
七:值栈(valueStack)
1.介绍:valueStack是struts的一个接口.OgnlValueStack是valueStack的实现类.当一个请求进来的时候struts2会创建一个Action实例,同时创建一个OgnlValueStack值栈实例,生命周期和Action一样长.
值栈的结构是List,是一个可以快速访问的容器.可以从页面上取数据. 另外值栈里面定义了一个ContextMap的引用,通过值栈也可以访问到contextMap的内容.
2.使用:
action上获取值栈对象:
ActionContext ac = ActionContext.getContext();
ValueStack vs = ac.getValueStack();
值栈对象存对象:
vs.push(object);
页面上取值栈中的值.
我们想取值栈中对象的属性值:
可以在action中定义属性的get,set方法.
然后在jsp页面通过
<s:property value="属性名">或
<s:property value="[栈中位置].属性名">来进行获取.o
觉得对你有帮助或者喜欢的可以点个赞哦~~
二.使用前提:1.导包使用OGNL表达式需要引入下面两个包.javassist-3.11.0.GA.jar
ognl-3.0.6.jar
2.jsp页面引入标签库<%@taglib uri="/struts-tags" prefix="s"%>
三.基本用法:1.<s:property value="ONGLexpression "/> 从上下文对象中取得的value值输出到浏览器上.2.OGNL表达式调用普通方法: <s:property value=" 'OGNLexpression'.length() "/>3.OGNL表达式调用静态属性: <s:property value="@java.lang.Integer.MAX_VALUE "/> //获得int类型最大值4.OGNL表达式调用静态方法:<s:proprety value="@java.lang.math@random()" /> 5.OGNL表达式创建集合 List: <s:radio name="sex" list="{'man','women'}" label="性别" /> //radio标签可以显示一个单选按钮 Map: <s:radio name="sex" map="#{'man':'男','women':'女'}" label="性别"/>
四:OGNL上下文对象ContextMap.ContextMap是struts2中封装的数据最大的对象.我们每次请求的所有数据都可以装到里面.它是一个map结构.key是字符串.value是对象.ContextMap中封装了大量的数据,但我们只看常用的封装内容.applicaiton :封装应用域的所有数据session: 封装会话域的所有数据request: 封装请求域的所有数据valueStack: 值栈,list结构 ,重点学习.
既然提到了ContextMap.那就必须说说ActionContext
五.ActionContextActionContext是strtus2提供的一个实现类,是对ContextMap进行的再一次封装.使用它操作上下文对象更加方便.
1.ActionContext创建的时机:当我们每次访问的Action创建时,核心控制器会帮我们创建ActionContext.2.ActionContext的线程安全:由于JavaWeb工程是多线程的,每个线程在访问action时都会创建自己的ActionContext,如何保证在获取ActionContext时,每个线程都能获取到自己的那个呢?答案是将ActionContext绑定到当前线程上.
六.获取ContextMap中的数据.1.action中往上下文对象存数据:ActionContext ac = ActionContext.getContext();ac.put("name","柳岩");2.从页面上获取:<h1>获取大MAP中的数据</h1>
<s:property value="#name" />3.struts2.xml配置文件<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
<package name="p1" extends="struts-default">
</package>
<package name="p2" extends="p1">
<action name="demo02" class="cn.asiainfo.struts2.web.action.ActionDemo02"
method="demo01">
<result name="success" type="dispatcher">/demo02.jsp</result>
</action>
</package>
</struts>
4.效果如图:
5.结论:我们在contextMap上存的数据是可以在jsp页面上通过OGNL表达式获取的.
七:值栈(valueStack)
1.介绍:valueStack是struts的一个接口.OgnlValueStack是valueStack的实现类.当一个请求进来的时候struts2会创建一个Action实例,同时创建一个OgnlValueStack值栈实例,生命周期和Action一样长.
值栈的结构是List,是一个可以快速访问的容器.可以从页面上取数据. 另外值栈里面定义了一个ContextMap的引用,通过值栈也可以访问到contextMap的内容.
2.使用:
action上获取值栈对象:
ActionContext ac = ActionContext.getContext();
ValueStack vs = ac.getValueStack();
值栈对象存对象:
vs.push(object);
页面上取值栈中的值.
我们想取值栈中对象的属性值:
可以在action中定义属性的get,set方法.
然后在jsp页面通过
<s:property value="属性名">或
<s:property value="[栈中位置].属性名">来进行获取.o
觉得对你有帮助或者喜欢的可以点个赞哦~~
相关文章推荐
- JavaEE--SSH--hibernate框架介绍及基本使用
- 为何使用EL表达式能够访问valueStack中对象的属性、采用OGNL表达式创建List/Map集合对象
- Struts2之OGNL表达式与值栈对象及常用标签的使用
- JavaEE--SSH--struts2-介绍及使用入门
- SSH:Struts2框架(Ognl表达式的讲解和使用说明)
- JavaEE--SSH--structs2-自定义多个拦截器及拦截器链(栈)的使用演示
- JavaEE--SSH--structs2-拦截器(Interceptor)的原理及使用
- OGNL表达式,值栈(ValueStack),类型转换
- struts里面值栈valuestack和上下文contextMap的理解和使用
- JavaEE--SSH--structs2-使用注解替代struts.xml配置文件
- 【Struts2五】ValueStack以及ognl表达式二(经常使用标签)
- ognl表达式的使用和值栈
- S7.2_Struts2_OGNL OGNL表达式的投影和选择技术范例,OGNL表达式#和$符号的使用范例,以及值栈
- struts2中使用OGNL表达式
- Struts2使用之值栈与OGNL-使用
- C#正则表达式使用介绍
- Struts2 使用OGNL表达式访问ENUM对象
- 使用struts2中的ognl表达式调用类方法
- 在Struts2中使用OGNL介绍
- OGNL表达式的使用方法