十八、ValueStack&ActionContext(非常重点:值栈)
- ValueStack&ActionContext(非常重点:值栈)- 1、针对用户的每次动作访问,都会创建属于自己的ValueStack对象![]()  - 2、ValueStack中的的常用方法:功能一定要知道干什么的。实现类OgnlValueStack![]()  
- getContext():返回的是一个Map<String,Object>
- *getRoot():返回的是一个CompoundRoot。CompoundRoot就是一个ArrayList的子类(就是一个List)。实现了一个栈结构 ![]()  CompoundRoot():默认的构造方法。实际就是创建一个List集合 CompoundRoot(List):用一个集合来初始化一个CompoundRoot对象 cutStack(int):按照集合中的索引,剪出一个新的List集合 peek():取集合中的第一个元素。get(0) pop():从集合中删除第一个元素 - push(Object):向集合中的第一个元素位置插入数据
 peek():CompoundRoot中的第一个元素。get(0)
- pop():从CompoundRoot集合中删除第一个元素
- push(Object):向CompoundRoot集合中的第一个元素位置插入数据
- size():获取 CompoundRoot这个集合的大小
- setValue(String,Object):第一个参数,是OGNL表达式。向自己(getContext())得到那个Map中尝试放东西。
- setParameter(String,Object):第一个参数,是OGNL表达式。向自己(getContext())得到那个Map中尝试放东西。
- findString(String expr):返回的是一个String类型的,否则报错.第一个参数,是OGNL表达式。
- findValue():返回的是一个Object。第一个参数,是OGNL表达式。
 3、ActionContext
 static ThreadLocal<ActionContext> actionContext = new ThreadLocal<ActionContext>();每个线程都会有唯一的ActionContext,且一个线程中只有一个ActionContext。 ![]()  getApplication():返回的是一个Map getContext():放回的当前线程上的ActionContext对象 getContextMap():返回ActionCOntext中的那一个Map getParameters():返回的是一个Map getSession():返回的是一个Map getValueStack():返回的是当前线程中的ValueStack实例 get(String):从ActionContext的Map中获取数据 最终总结: ![]()  4、ServletActionContext决定contextMap中会存哪些数据![]()  总结:都是从ActionContext的那个大Map中获取的。 5、在执行动作方法前,contextMap中放了以下东西contextMap中 key value 备注 request ServletRequest中的那个Map session HttpSession中的那个Map application ServletContext中的那个Map parameters 请求参数Map<String,String[]> attr 也是一个AttributeMap 获取数据依次从contextMap中的requestMap、sessionMap、applicationMap中搜索 
- push(Object):向集合中的第一个元素位置插入数据
 
                     
                    
                 
                    
                
 
			 
			 
			 
			 
			
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号