程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> struts2中valueStack,stackContext以及actionContext的關系,struts2valuestack

struts2中valueStack,stackContext以及actionContext的關系,struts2valuestack

編輯:JAVA綜合教程

struts2中valueStack,stackContext以及actionContext的關系,struts2valuestack


一,首先給出三者的定義

  1.valueStack: 裡面存放的是Action類中通過set方法設置的屬性值(表單傳過來的值等),由OGNL框架實現;   2.stackContext: 也是用來存值的,stack上下文,它包含一些列對象,包括request/session/attr/application map等。    3.actionContext: 是action的上下文,可以得到request,session,application等.    我們在JSP頁面中訪問value stack的內容時,是不用加#,而如果是訪問stack context的其他對象則要加上#。   二,如何獲得ActionContext?   1.在自定義的攔截器中:使用ActionInvocation.getInvocationContext()或者使用ActionContext.getContext()。   2.在Action類中:讓攔截器注入或者使用ActionContext.getContext()。   3.在非Action類中:讓Action類傳遞參數、使用注入機制注入或者使用ActionContext.getContext()。   注意:只有運行在request線程中的代碼才能調用ActionContext.getContext(),否則返回的是null。     三,ActionContext有什麼作用?     1.通過ActionContext可以獲得HttpServletRequest類:
HttpServletRequest request = (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);
  2.通過ActionContext也可以獲得request的Map:
Map requestMap = (Map) actionContext.get("request");

  因此,在JSP中,用“#request”來獲得request的Map,用“#request.key”或者“#request[‘key‘]”來讀取Map中的值。

 

四,那ValueStack與ActionContext到底有什麼聯系和區別:

  ~~~簡單兩句話概括就是:~~~

 

  相同點:它們都是在一次HTTP請求的范圍內使用的,即它們的生命周期都是一次請求。   不同點:值棧是棧的結構,ActionContext是映射(Map)的結構。

 

需要詳細了解ActionContext的可以去參考這篇文章:http://www.bubuko.com/infodetail-355138.html

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved