(總結)struts2中 值棧,action屬性,request屬性,session屬性 設置域獲取


可在多個地方設置屬性,action域,request屬性,session屬性等。

 

action自帶屬性或者action中有getUser()之類方法即可認為action帶有屬性;

獲取到request之后,即可進行屬性設置,如下圖所示:

request獲取方法

獲取到session之后,即可進行屬性設置,如下圖所示:

session獲取方法

 

 

后台設置好屬性后,前台即可獲取,可用struts2標簽獲取,也可用普通標簽獲取,也可在jsp頁面的內嵌JS代碼中獲取,下面分別介紹。

后台普通返回屬性時(不設為json時),用struts2標簽獲取后台屬性:

1.獲取action屬性

<s:property value="name"/>   //這個只能獲取action的默認屬性

<s:property value="student.getName()"/>  //這個只能獲取action對象域的某個屬性值

2.獲取reqeust屬性

<s:property value="#reqeust.name"/>    //這個只能獲取request中設置的屬性

<s:property value="#request.student.getName()"/>  m//這個只能獲取request域對象的某個屬性值

3.獲取session屬性

<s:property value="#session.name"/>      //這個只能獲取session中設置的屬性

<s:property value="#session.student.getName()"/>   //這個只能獲取session域對象的某個屬性值

后台普通返回屬性時(設為json時),用struts2標簽獲取后台屬性:

      獲取基本類型的屬性值和不設為json時一致,但不能獲取到域對象的內容值

原來的對象數據已經json化了,那些方法已經不存在了,所以只能獲取基本類型的數據

 

 

 

后台普通返回屬性時(不設為json時),普通HTML標簽獲取屬性

1.獲取action屬性

<input type="text" value="${name}"/ >     //這個可以獲取action的默認屬性

<input type="text" value="${student.getName()}"/>    //這個可以獲取action對象域的某個屬性值

上述兩個input標簽均能獲取到action中的屬性值,但是也可以獲取到request和session中設置的屬性值,優先級時 request屬性 > action屬性 > session屬性

2.獲取reqeust屬性

<input type="text" value="${request.name}"/ >    //這個只能獲取request中設置的屬性

<input type="text" value="${request.student.getName()}"/>   //這個只能獲取request域對象的某個屬性值

3.獲取session屬性 

<input type="text" value="${session.name}"/ >    //這個只能獲取session中設置的屬性

<input type="text" value="${session.student.getName()}"/>   //這個只能獲取session域對象的某個屬性值

 后台普通返回屬性時(不設為json時),普通HTML標簽獲取屬性

       獲取基本類型的屬性值和不設為json時一致,但不能獲取到域對象的內容值

原來的對象數據已經json化了,getter方法已經不存在了,所以不能再獲取對象數據的域值了

 

 

 

后台普通返回屬性時(不設為json時),JSP頁面的內嵌JS代碼獲取屬性

普通類型屬性獲取

1.獲取action屬性

'${name}'

2.獲取request屬性

'${request.name}'

或者

'${name}'

3.獲取session睡醒

'${name}'

或者

'${session.name}'

類對象獲取

這種情況下,返回來的對象時hash嗎?

需要將后台的類對象json化,才能在前天正常使用

后台普通返回屬性時(設為json時),JSP頁面的內嵌JS代碼獲取屬性

普通類型屬性獲取

1.獲取action屬性

'${name}'      //這個既能獲取到aciton的屬性,也可以獲取到request或者session中的屬性值,優先級順序為: request屬性  > action屬性>session屬性

2.獲取request屬性

'${request.name}'

或者

'${name}'

3.獲取session屬性

'${name}'

或者

'${session.name}'

和不設為json格式的使用方式一樣。

類型對象屬性獲取

${student}.name    //因為json格式化后,原來的對象實際上已經不存在了,不能在調用屬性獲取方法了,只支持 . 運算符。

同理,這兒既可以獲取到action的域對象,也可以獲取到request的域對象,還可以獲取到session的域對象,依然有優先級,優先級順序為: request屬性  > action屬性>session屬性

${session.data}.student.datas[0].dataId    //獲取json串的某個對象student的屬性datas數組(或列表)的第一個元素的dataId域值

 

 

 

綜上:action、request和session中的基本類型的屬性值,在普通HTML標簽,struts2特有標簽和JSP頁面內嵌JS代碼中均可以比較完美地獲取(JSP內嵌JS代碼獲取字符串需要加一個 '');

        action、request和session中的對象域JSON化后,普通HTML標簽和struts2標簽中的<s:property value="">不能獲取對象域屬性值,但是JSP內嵌JS代碼可以很好地處理返回的json字符串。

        

一個比較笨的能夠在JSP頁面的內嵌JS代碼  和 struts2 的property 共同使用時,可以設置不同名稱的對象,一個是正常格式的對象數據,另一個是JSON格式化的對象數據(json化后,方法就不存在了,就成為了一個指定格式的字符串)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM