(总结)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化后,方法就不存在了,就成为了一个指定格式的字符串)

posted @ 2016-05-03 16:08  窗外是绿色的  阅读(2646)  评论(0编辑  收藏  举报