ContextMap数据结构

1 OGNL与Struts2的关系

OGNL是Struts2默认表达语言。Strtus2定义的一个接口,叫ValueStack,字面意思为值栈。OgnlValueStack是ValueStack接口的实现类,当客户端发起一个请求,Struts2架构会创建一个Action实例同时创建一个OnglvalueStack实例,OnglvalueStack贯彻整个 Action的生命周期,Struts2中使用 OGNL将请求Action的参数封装为对象存储到值栈中,并通过 OGNL 表达式读取中的对象属性。

2 OgnlValueStack的数据结构

ContextMap:即OgnlContext上下文,它是一个map结构。

ValueStack:继承了 ArrayList,实现了压栈和出栈的功能,作为上下文的 Root 对象,存储了Action 实例。

注意:我们在JSP页面上使用<s:debug></s:debug>标签查看值栈的以上两部分内容。

3 ContextMap的数据结构

ContextMap是Struts2封装好的一次请求可能出现的最大的数据容器,它的结构是一个Map集合。

key value
application ServletContext应用对象(Map类型)
session HttpSession(Map类型)
valueStack CompounRoot (ArrayList类型)
action 当前执行的动作类相关数据  【不是Map类型】
request HttpServletRequest(Map类型)
parameters 请求参数(Map类型)
attr 四大域的属性数据(Map类型)

热门文章

优秀文章