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

Java中Struts2的值棧ValueStack詳解

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

值棧

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

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

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

1.值棧的作用

值棧可以作為一個(gè)數(shù)據(jù)中轉(zhuǎn)站在前臺(tái)與后臺(tái)之間傳遞數(shù)據(jù),最常見(jiàn)的就是將 Struts2 的標(biāo)簽與 OGNL 表達(dá)式結(jié)合使用。

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

2.值棧的聲明周期

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

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

3.值棧的獲取方式

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

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

1) 在request中獲取值棧

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

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

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

2)在ActionContext中獲取值棧

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

ActionContext 獲取 ValueStack 對(duì)象的方式如下所示:

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

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

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

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

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

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

相關(guān)文章

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

    maven包沖突排查的解決方法

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

    SpringBoot啟動(dòng)后初始化的幾種方式匯總

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

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

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

    jboss配置方法簡(jiǎn)明教程

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

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

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

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

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

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

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

    java Hibernate多對(duì)多映射詳解及實(shí)例代碼

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

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

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

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

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

最新評(píng)論

北辰区| 鹤峰县| 剑河县| 黎城县| 名山县| 巴彦县| 革吉县| 苗栗县| 鄂州市| 方山县| 原平市| 丹寨县| 平度市| 新安县| 同江市| 海阳市| 武邑县| 卫辉市| 临朐县| 乌拉特中旗| 玉田县| 阿克| 石台县| 昭平县| 长武县| 昌吉市| 汤阴县| 浮梁县| 浦城县| 时尚| 荣成市| 永寿县| 垫江县| 湖南省| 宜丰县| 九龙城区| 蓝山县| SHOW| 白水县| 上杭县| 江北区|