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

  • 相关阅读:
    FileUpload 改变控件显示的文字
    MongoDB:分片(简介 & 自动分片 & 片键)
    MD5加密
    解决查询access数据库含日文出现“内存溢出”问题
    MVC Page分页控件
    Access 执行查询时,抛出“标准表达式中数据类型不匹配”的错误
    WCF 内存入口检查失败 Memory gates checking failed
    键值对集合Dictionary<K,V>根据索引提取数据
    ADO.NET EF 4.2 中的查询缓存(避免查询缓存)
    Unicode解码转换为中文
  • 原文地址:https://www.cnblogs.com/maxiaoshuai/p/5455371.html
Copyright © 2011-2022 走看看