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类型) |
热门文章
优秀文章