日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Strus2中关于ValueStack详解

發布時間:2023/12/19 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Strus2中关于ValueStack详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是ValueStack

它是一個接口com.opensymphony.xwork2.util.ValueStack。我們使用它是將其做為一個容器,用于攜帶action數據到頁面。在頁面上通過ognl表達式獲取數據。?
valueStack主要是將action數據攜帶到頁面上,通過ognl獲取數據

1.ValueStack有一個實現類叫OgnlValueStack.?
2.每一個action都有一個ValueStack.(一個請求,一個request,一個action,一個valueStack) valueStack生命周期就是request生命周期。?
3.valueStack中存儲了當前action對象以及其它常用web對象(request,session,application.parameters)?
4.struts2框架將valueStack以“struts.valueStack”為名存儲到request域中。

valueStack結構

?
ValueStack中 存在root屬性 (CompoundRoot) 、 context 屬性 (OgnlContext )!并且context中含有root?
* CompoundRoot 就是ArrayList?
* OgnlContext 就是 Map

list集合中存儲的是action相關信息?
map集合中存儲的是相關映射信息,包含 paramters,request,session,application attr等。

我們想要從list中獲取數據,可以不使用#號.(它就是ognl的root)?
如果從map中獲取數據,需要使用#. (其實在struts2中的map–context其實就是ognlContext)

結論:?
ValueStack它有兩部分 List Map?
在struts2中List就是root Map就是ognlContext.?
默認情況下,在struts2中從valueStack獲取數據從root中獲取。

值棧對象的創建 ,ValueStack 和 ActionContext 是什么關系 ?

valueStack是每一次請求時,都會創建.

ActionContext ctx = ActionContext.getContext(); if (ctx != null) { stack = ctx.getValueStack(); }
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

如何獲得值棧對象?

對于valueStack獲取有兩種方式:

1.通過 request獲取

ValueStack vs=(ValueStack) ServletActionContext.getRequest().getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);

2.通過ActionContext獲取.

ValueStack vs=ActionContext.getContext().getValueStack();

向值棧保存數據 (主要針對 root)

主要有兩個方法?
push(Object obj)——->底層就是 root.add(0,obj) 將數據存儲到棧頂。?
set(String name,Object obj);—–>底層是將數據封裝到HashMap中,在將這個HashMap通過push存儲。

在jsp中 通過?<s:debug />?查看值棧的內容

在JSP中獲取值棧的數據

root中數據不需要#,而context中數據需要#

1.如果棧頂是一個Map集合,獲取時,可以直接通過Map集合的key來獲取value.

<s:property value="username"/>

2.如果棧頂數據不是一個Map,沒有key值,可以使用序號來獲取。

<s:property value="[0]"> 從0的位置向下查找所有。<s:property value="[0].top"> 只查找0位置上數據。

如何獲取OgnlContext中數據:?
request:?<s:property value="#request.username"/>?
session:?<s:property value="#session.username"/>?
application:<s:property value="#application.username"/>?
attr:?<s:property value="#attr.username"/>?
parameters:<s:property value="#parameters.cid[0]"/>

轉載于:https://www.cnblogs.com/xtdxs/p/6527380.html

總結

以上是生活随笔為你收集整理的Strus2中关于ValueStack详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。