zoukankan      html  css  js  c++  java
  • Struts2的Stack Context和ValueStack

    1、提到Struts2的传值功能时,经常会见到Stack Context和Value Stack,不理解的话很容易晕掉。

    •       ValueStack(值栈):Struts2将OGNL上下文设置为Struts2中的ActionContext(内部使用的仍然是

    OgnlContext),并将值栈设为OGNL的根对象。

    •       StackContext(map):stack上下文,它包含一系列对象,包括request、session、attr、applicationmap等。

    2、访问Stack Context中的对象的属性时要使用"#对象名.属性名"的方式,

    使用push标签可以将原来位于StackContext中的对象放到ValueStack的栈顶。

    用push标签将对象保存在ValueStack的栈顶后,只需要使用"属性名"就可以直接访问了。

    如下面的例子:

     1 <body>
     2  <s:bean name="cg.struts.at.User"id="user">
     3    <s:param name="username" value="'cg'"/>
     4    <s:param name="password" value="'p123'"/>
     5  </s:bean>
     6  <table border="1" width="80%">
     7   <tr align="center">
     8    <td colspan="4">用户信息</td>
     9   </tr>
    10   <tr align="center">
    11    <td>用户名:</td>
    12    <td><s:property value="#user.username"/></td>
    13    <td>密码:</td>
    14    <td><s:property value="#user.password"/></td>
    15   </tr>  
    16  </table>


     使用push标签,简化值的访问
     

     1 <s:push value="#user">
     2   <table border="1" width="80%">
     3    <tr align="center">
     4     <td colspan="4">用户信息</td>
     5    </tr>
     6    <tr align="center">
     7     <td>用户名:</td>
     8     <td><s:property value="username"/></td>
     9     <td>密码:</td>
    10     <td><s:property value="password"/></td>
    11    </tr>  
    12   </table>
    13  </s:push>
    14 </body>

    3、如果ValueStack栈顶是集合对象的话,通常可以用iterator标签取得位于ValueStack的顶端的集合对象,

    遍历集合并输出,遍历完成后集合对象会被移出ValueStack。

    4、在页面输出ValueStack和Stack Context的方法

      只要在<body>标签中加入<s:debug/>,运行时就可以生成相应的链接,点击该链接就可以显示stack相关信息。

    6、在jsp中用OGNL表达式获取不同范围的值

        6.1获取地址后面的参数信息(即上海)(http://localhost:8080/strutslogin/login.action?address=上海)的方法如下:

       <s:property value="parameters.address"/>

        6.2获取上述request中信息的方法如下:

       <s:property value="#request.address"/>

        6.3获取上述session中信息的方法如下:

       <s:property value="#session.address"/>

        6.4获取上述application中信息的方法如下:

       <s:property value="#application.address"/>

        6.5使用"#attr.参数名"的方法访问各种变量的顺序是:

       request>session>application 

  • 相关阅读:
    【liunx】使用xshell连接虚拟机上的CentOS 7,使用xhell连接本地虚拟机上的Ubuntu, 获取本地虚拟机中CentOS 7的IP地址,获取本地虚拟机中Ubuntu 的IP地址,linux查看和开启22端口
    eclipse启动tomcat, http://localhost:8080无法访问
    java合并PDF,itext.jar
    关于给springboot添加定时器的两种方式
    HttpClient post提交数据,汉字转码
    java 中文与unicode互转
    微信公众号里的图片下载并显示
    根据url下载图片和页面
    java获取指定日期之前或之后的时间
    java计算文件大小
  • 原文地址:https://www.cnblogs.com/ahudyan-forever/p/5890557.html
Copyright © 2011-2022 走看看