struts2框架中ActionContext对象详解
来源:互联网 发布:sql语句执行顺序limit 编辑:程序博客网 时间:2024/06/07 12:12
一、了解OGNL表达式:
(1) Object Graphic Navigation language(对象图形导航语言)的缩写,它是一种功能性极强的表达式语言,使用它可以存取任意属性,调用对象中的方法。其作用的就是为了简化访问对象中的属性值!
(2) OGNL表达式的解析都是围绕OGNL上下文进行的,OGNL表达式是一个map对象,其中包含多个java对象,其中有一个对象十分的特殊,这个对象称为根对象!
a.一个OGNL表达式若没有指定目标对象,默认就是从根对象开始查找!
b.若要访问非根对象中的属性,就要在访问根对象的前面需加#前缀!
二、了解值栈(valueStack):
(1)valueStack是值栈的对外接口,实际对应的类是OgnlValueStack,OgnlValueStack对象中包含了一个ArrayList集合来作为栈,默认action对象位置值栈的栈顶位置。
a.void push(Objext o) 可用来将一个对象数据压入栈顶.
b.set(String key,Objext obj) 则是将数据放入Map对象当中,并将Map对象压入栈顶位置!
(2) OGNL表达式在取数据的时候,其规则是先从栈的栈顶(action对象)中开始查找,先判断是否有Map对象,根据key取值;不是Map对象,则寻找该对象的getKey()方法,得到其值,若没有方法,则查找key变量(要求必须是public修饰)均为找到,就去第二个对象中向下查找!
三、详细了解ActionContext:
(1)struts2框架在解析OGNL表达式的时候,OGNL上下文就是ActionContext,而根对象就是Action对象!
例如:若给出一个OGNL表达式 : "class.user..name"
首先判断这个OGNL表达式前缀没有带#,所以这个一个根对象,struts2框架会在值栈的栈顶对象中查找 getclass()方法,得到class对象,然后通过class对象,在其中查找getUer()方法,得到user对象,然后值 user对象中查找getName())方法,得到最终的值!
(2)对于客户端发送的每一次请求,struts2框架都会自动的创建一个ActionContext和值栈对象,请求处理完毕以后这两个对象会自动的销毁!ActionContext对象相当于一个大大的容器,里面包含了application、session、parameters、valueSatck、attr属性。(其中valueStack对象就是值栈对象)
(3)ActionContext中的application、session、parameters等对象都是非根对象,在OGNL表达式中要访问他们,需要在表达式前面加上#前缀!
例如:① #appliation.userName等于 ActionContext.getContext().getApplication().get("userName");
② #session.userName等效于ActionContext.getContext().getSession().get("userName");
③ #parameters.userName等ActionContext.getContext()..getParameters().get("userName");
四、struts2框架中ActionContext对象内部结构图形详解:
- struts2框架中ActionContext对象详解
- Struts2中ActionContext、 ServletActionContext详解
- Struts2中的ActionContext详解
- Struts2中ActionContext介绍
- Struts2中ActionContext
- Struts2中ActionContext介绍
- Struts2中ActionContext介绍
- struts2中ActionContext应用
- struts2中ActionContext是什么
- 在struts2 中通过ActionContext访问Session对象
- 详解struts2中的ActionContext数据中心
- 详解struts2中的ActionContext数据中心
- 详解struts2中的ActionContext数据中心
- struts2中ActionContext是什么东东???
- struts2中ActionContext是什么东东???
- struts2中ActionContext是什么东西?
- Struts2里ActionContext及获得HttpServletRequest对象
- struts2 理解ActionContext对象和OGNL
- Silver Cow Party POJ
- JAVA arraylist的线程安全
- C与C++混合编程
- 精准平特一肖公式/平码三中三/平码3中3/平特一肖/平特一码/平特1码
- 用Kibana和logstash快速搭建实时日志查询、收集与分析系统
- struts2框架中ActionContext对象详解
- 2015 ASIA THAILAND
- Asp.net core拦截器
- JavaSE_42th_异常
- Spring4深入理解01----Bean配置(依赖注入和控制反转的区别)
- css之border&三角形
- Spring4深入理解01----Bean配置(依赖注入和控制反转的区别)
- 信息安全问题频发的社交里,谁来保护我们的隐私?
- 一起来玩AZURE SQL(一)AZURE SQL 介绍