最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Struts2的值棧ValueStack詳解

 更新時間:2023年08月07日 11:15:46   作者:吳聲子夜歌  
這篇文章主要介紹了Java中Struts2的值棧ValueStack詳解,值棧(ValueStack)就是 OGNL 表達式存取數(shù)據(jù)的地方,在一個值棧中,封裝了一次請求所需要的所有數(shù)據(jù),需要的朋友可以參考下

值棧

值棧(ValueStack)就是 OGNL 表達式存取數(shù)據(jù)的地方。

在一個值棧中,封裝了一次請求所需要的所有數(shù)據(jù)。

在使用 Struts2 的項目中,Struts2 會為每個請求創(chuàng)建一個新的值棧,也就是說,值棧和請求是一一對應(yīng)的關(guān)系,這種一一對應(yīng)的關(guān)系使值棧能夠線程安全地為每個請求提供公共的數(shù)據(jù)存取服務(wù)。

1.值棧的作用

值??梢宰鳛橐粋€數(shù)據(jù)中轉(zhuǎn)站在前臺與后臺之間傳遞數(shù)據(jù),最常見的就是將 Struts2 的標(biāo)簽與 OGNL 表達式結(jié)合使用。

值棧實際上是一個接口,在 Struts2 中利用 OGNL 時,實際上使用的就是實現(xiàn)了該接口的 OgnlValueStack 類,這個類是 OGNL 的基礎(chǔ)。

2.值棧的聲明周期

值棧貫穿整個 Action 的生命周期,每個 Action 類的對象實例都擁有一個 ValueStack 對象,在 ValueStack 對象中保存了當(dāng)前 Action 對象和其他相關(guān)對象。

Struts2 框架把 ValueStack 對象保存在一個名為 struts.valueStack 的 request 屬性中,也就是說,值棧與 Action 的生命周期一致。值棧的生命周期隨著 request 的創(chuàng)建而創(chuàng)建,隨著 request 的銷毀而銷毀。

3.值棧的獲取方式

要獲取值棧中存儲的數(shù)據(jù),首先應(yīng)該獲取值棧。

值棧的獲取有兩種方式,具體如下。

1) 在request中獲取值棧

ValueStack 對象在 request 范圍內(nèi)的存儲方式為 request.setAttribute(“struts.valueStack”,valuestack),可以通過如下方式從 request 中取出值棧的信息。

//獲取 ValueStack 對象,通過 request 對象獲取
ValueStack valueStack = (ValueStack)ServletActionContext.getRequest()
            .getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);

ServletActionContext.STRUTS_VALUESTACK_KEY 是 ServletActionContext 類中的常量,它的值為 struts.valueStack。

2)在ActionContext中獲取值棧

在使用 Struts2 框架時,可以使用 OGNL 操作 Context 對象從 ValueStack 中存取數(shù)據(jù),也就是說,可以從 Context 對象中獲取 ValueStack 對象。實際上,Struts2 框架中的 Context 對象就是 ActionContext。

ActionContext 獲取 ValueStack 對象的方式如下所示:

//通過 ActionContext 獲取 valueStack 對象
ValueStack valueStack = ActionContext.getContext().getValueStack();

ActionContext 對象是在 StrutsPrepareAndExcuteFilter 的 doFilter() 方法中被創(chuàng)建的,在源碼中用于創(chuàng)建 ActionContext 對象的 createActionContext() 方法內(nèi)可以找到獲取的 ValueStack 對象的信息。

方法中還有這樣一段代碼:

ctx=new ActionContext(stack.getContext());

從上述代碼中可以看出,ValueStack 對象中的 Context 對象被作為參數(shù)傳遞給了 ActionContext 對象,這也就說明 ActionContext 對象中持有了 ValueStack 對象的引用,因此可以通過 ActionContext 對象獲取 ValueStack 對象。

到此這篇關(guān)于Java中Struts2的值棧ValueStack詳解的文章就介紹到這了,更多相關(guān)Struts2的值棧ValueStack內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • maven包沖突排查的解決方法

    maven包沖突排查的解決方法

    Maven包沖突是指項目中引用了多個版本的相同依賴,解決方法包括依賴排除、統(tǒng)一依賴版本、依賴管理等,驗證排查和處理后,重新執(zhí)行依賴樹命令,確保無沖突,感興趣的可以了解一下
    2026-01-01
  • SpringBoot啟動后初始化的幾種方式匯總

    SpringBoot啟動后初始化的幾種方式匯總

    這篇文章主要介紹了SpringBoot啟動后初始化的幾種方式匯總,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java實現(xiàn)文件的分割與合并

    Java實現(xiàn)文件的分割與合并

    這篇文章主要為大家詳細介紹了Java實現(xiàn)文件的分割與合并,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • jboss配置方法簡明教程

    jboss配置方法簡明教程

    這篇文章主要介紹了jboss配置方法,較為簡明扼要的說明了jboss服務(wù)器所需要的JDK環(huán)境安裝設(shè)置以及jboss的安裝與下載,并分析了配置與使用中的常見問題,需要的朋友可以參考下
    2016-08-08
  • java讀取資源路徑的幾種實現(xiàn)方式

    java讀取資源路徑的幾種實現(xiàn)方式

    文章總結(jié)了Java讀取資源路徑的幾種方式,并指出了在JUnit測試文件和普通類中讀取資源路徑的區(qū)別,普通類中讀取資源路徑時,只返回主目錄,而JUnit測試文件中可以精確到所在模塊
    2025-02-02
  • 解決maven?maven.compiler.source和maven.compiler.target的坑

    解決maven?maven.compiler.source和maven.compiler.target的坑

    這篇文章主要介紹了解決maven?maven.compiler.source和maven.compiler.target的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot的啟動速度優(yōu)化

    SpringBoot的啟動速度優(yōu)化

    隨著我們項目的不斷迭代 Bean 的數(shù)量會大大增加,如果都在啟動時進行初始化會非常耗時,本文主要介紹了SpringBoot的啟動速度優(yōu)化,感興趣的可以了解一下
    2023-09-09
  • java Hibernate多對多映射詳解及實例代碼

    java Hibernate多對多映射詳解及實例代碼

    這篇文章主要介紹了java Hibernate多對多映射詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 關(guān)于junit單元測試@Test的使用方式

    關(guān)于junit單元測試@Test的使用方式

    這篇文章主要介紹了關(guān)于junit單元測試@Test的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java 實戰(zhàn)項目之教材管理系統(tǒng)的實現(xiàn)流程

    Java 實戰(zhàn)項目之教材管理系統(tǒng)的實現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)教材管理系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11

最新評論

罗源县| 治多县| 确山县| 金坛市| 广水市| 炉霍县| 兰考县| 合肥市| 德化县| 慈溪市| 内丘县| 乌恰县| 营山县| 昆山市| 黑水县| 固安县| 个旧市| 定襄县| 霞浦县| 南川市| 琼中| 新安县| 喀什市| 库伦旗| 巨野县| 衡阳县| 察隅县| 台南市| 高台县| 平安县| 辛集市| 武安市| 都兰县| 广安市| 泌阳县| 桃园市| 遂宁市| 中山市| 黄浦区| 平罗县| 钟祥市|