欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Strut2如何對請求參數(shù)的封裝

 更新時(shí)間:2017年12月26日 09:57:42   作者:hypmxy  
這篇文章主要介紹了淺談Strut2如何對請求參數(shù)的封裝,具有一定借鑒價(jià)值,需要的朋友可以參考下

眾所周知,Strut2的Action類通過屬性可以獲得所有相關(guān)的值,如請求參數(shù)、Action配置參數(shù)、向其他Action傳遞屬性值(通過chain結(jié)果)等等。要獲得這些參數(shù)值,我們要做的唯一一件事就是在Action類中聲明與參數(shù)同名的屬性,在Struts2調(diào)用Action類的Action方法(默認(rèn)是execute方法)之前,就會(huì)為相應(yīng)的Action屬性賦值。

要完成這個(gè)功能,有很大程度上,Struts2要依賴于ValueStack對象。這個(gè)對象貫穿整個(gè)Action的生命周期(每個(gè)Action類的對象實(shí)例會(huì)擁有一個(gè)ValueStack對象)。當(dāng)Struts2接收到一個(gè).action的請求后,會(huì)先建立Action類的對象實(shí)例,但并不會(huì)調(diào)用Action方法,而是先將Action類的相應(yīng)屬性放到ValueStack對象的頂層節(jié)點(diǎn)(ValueStack對象相當(dāng)于一個(gè)棧)。只是所有的屬性值都是默認(rèn)的值,如String類型的屬性值為null,int類型的屬性值為0等。

在處理完上述工作后,Struts2就會(huì)調(diào)用攔截器鏈中的攔截器,當(dāng)調(diào)用完所有的攔截器后,最后會(huì)調(diào)用Action類的Action方法,在調(diào)用Action方法之前,會(huì)將ValueStack對象頂層節(jié)點(diǎn)中的屬性值賦給Action類中相應(yīng)的屬性。大家要注意,在這里就給我們帶來了很大的靈活性。也就是說,在Struts2調(diào)用攔截器的過程中,可以改變ValueStack對象中屬性的值,當(dāng)改變某個(gè)屬性值后,Action類的相應(yīng)屬性值就會(huì)變成在攔截器中最后改變該屬性的這個(gè)值。

從上面的描述很容易知道,在Struts2的的Action類可以獲得與屬性同名的參數(shù)值就是通過不同的攔截器來處理的,如獲得請求參數(shù)的攔截器是params,獲得Action的配置參數(shù)的攔截器是staticParams等。在這些攔截器內(nèi)部讀取相應(yīng)的值,并更新ValueStack對象頂層節(jié)點(diǎn)的相應(yīng)屬性的值。而ValueStack對象就象一個(gè)傳送帶,將屬性值從一個(gè)攔截器傳到了另一個(gè)攔截器(當(dāng)然,在這其間,屬性值可能改變),最后會(huì)傳到Action對象,并將ValueStack對象中的屬性的值終值賦給Action類的相應(yīng)屬性。

當(dāng)我們在顯示層使用EL表達(dá)式,不僅可以訪問到EL表達(dá)式中11個(gè)隱藏對象里的屬性,也能夠訪問到valueStack中的對象屬性值,是因?yàn)閟truts2對HttpServletRequest做了進(jìn)一步的封裝.

public class StrutsRequestWrapper extends HttpServletRequestWrapper {
	public StrutsRequestWrapper(HttpServletRequest req) {
		super(req);
	}
	public Object getAttribute(String s) {
		...... 
		ActionContext ctx = ActionContext.getContext();
		Object attribute = super.getAttribute(s);
		//先從request范圍獲取屬性值 
		if (ctx != null) {
			if (attribute == null) {
				//如果從request范圍沒有找到屬性值,即從ValueStack中查找對象的屬性值 
				...... 
				ValueStack stack = ctx.getValueStack();
				//獲取valueStack對象 
				attribute = stack.findValue(s);
				//從valueStack中的對象中查找指定的屬性值 
				......
			}
		}
		return attribute;
	}
}

總結(jié)

以上就是本文關(guān)于淺談Strut2如何對請求參數(shù)的封裝的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • ThreadPoolExecutor線程池原理及其execute方法(詳解)

    ThreadPoolExecutor線程池原理及其execute方法(詳解)

    下面小編就為大家?guī)硪黄猅hreadPoolExecutor線程池原理及其execute方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java結(jié)合redis實(shí)現(xiàn)接口防重復(fù)提交

    Java結(jié)合redis實(shí)現(xiàn)接口防重復(fù)提交

    本文主要介紹了Java結(jié)合redis實(shí)現(xiàn)接口防重復(fù)提交,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java常用的時(shí)間類以及其轉(zhuǎn)化方式

    Java常用的時(shí)間類以及其轉(zhuǎn)化方式

    這篇文章主要介紹了Java常用的時(shí)間類以及其轉(zhuǎn)化方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Mybatis Mapper接口工作原理實(shí)例解析

    Mybatis Mapper接口工作原理實(shí)例解析

    這篇文章主要介紹了Mybatis Mapper接口工作原理實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java都有哪些創(chuàng)建線程的方法

    Java都有哪些創(chuàng)建線程的方法

    這篇文章主要介紹了Java都有哪些創(chuàng)建線程的方法,文章分享Java創(chuàng)建線程得幾種方法及推薦使用哪種方法,下面詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • 初學(xué)者Android studio安裝圖文詳解

    初學(xué)者Android studio安裝圖文詳解

    本文給大家分享android studio 安裝圖文詳解包括下載安裝及遇到的問題,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09
  • Spring-ImportSelector接口功能使用案例

    Spring-ImportSelector接口功能使用案例

    ImportSelector接口是至spring中導(dǎo)入內(nèi)部類或者外部類的核心接口,只需要其定義的方法內(nèi)返回需要?jiǎng)?chuàng)建bean的class字符串就好了,這篇文章主要介紹了Spring-ImportSelector接口功能介紹,需要的朋友可以參考下
    2023-09-09
  • java實(shí)現(xiàn)傾斜水印鋪滿整張圖

    java實(shí)現(xiàn)傾斜水印鋪滿整張圖

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)傾斜水印鋪滿整張圖的具體代碼,教大家如何控制水印之間的空隙,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java進(jìn)階核心之InputStream流深入講解

    Java進(jìn)階核心之InputStream流深入講解

    這篇文章主要給大家介紹了關(guān)于Java進(jìn)階核心之InputStream流的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • java實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)后綴的方法

    java實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)后綴的方法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)后綴的表達(dá)式方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評論