struts2值栈存取数据小结(使用ognl表达式)

前言:使用ognl和struts2标签库的时候要在 jsp页面 中 加入这么一行

<%@ taglib uri="/struts-tags" prefix="s" %>

struts(统一格式):

        <action name="ognl" class="com.demo.test1.OnglAction" method="ognl1">
            <result name="ognl1" >/OnglPage.jsp</result>
        </action>

User(统一用一个User):

public class User {
    String username;
    String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

===============================================================================================================================================================

一、直接向值栈中存放数据

action:

    /**
     * 一、直接以键值对的形式设置(创建)值栈stack
     * @return
     */
    public String ognl1(){
        ValueStack stack = ActionContext.getContext().getValueStack();
        stack.set("username", "name1");//创建一个值栈的key
        stack.setValue("username", "name2");//对已有的值栈的value进行修改
        return "ognl1";
    }

jsp:

 直接以键值对的形式设置(创建)值栈stack:<br>
    <s:property value="username"/> <br>

就可以在jsp页面中看到  name2

================================================================================================================================================================

二、向值栈中存放对象

action:

    /**
     * 二、存储对象
     *     1、声明user
     *     2、创建getUser方法
     *     3、设置user实例的属性值
     * 创建user实例的时候就已经放进了值栈中
     */
    User user;
    public User getUser() {
        return user;
    }
    public String ognl2(){
        user=new User();
        user.setUsername("张三");
        user.setPassword("123456");
        return "ognl2";
    }

jsp:

    向值栈中存放对象并显示:<br>
    <s:property value="user.username"/><br>
    <s:property value="user.password"/>

================================================================================================================================================================

三、值栈中存放list集合

action:

    /**
     * 三、值栈中存放list集合
     */
    //获得user和list实例
    User user1=new User();
    User user2=new User();
    User user3=new User();
    ArrayList<User> list=new ArrayList<User>();
    //获得get方法
    public User getUser1() {
        return user1;
    }
    public User getUser2() {
        return user2;
    }
    public User getUser3() {
        return user3;
    }
    public ArrayList<User> getList() {
        return list;
    }
    public String ognl3(){
        //设置user的值
        user1.setUsername("name1");
        user1.setPassword("pwd1");
        user2.setUsername("name2");
        user2.setPassword("pwd2");
        user3.setUsername("name3");
        user3.setPassword("pwd3");
        //user加入list集合
        list.add(user1);
        list.add(user2);
        list.add(user3);
        return "ognl3";
    }
    

jsp:

  向值栈中存放list:<br>
  <s:property value="list[0].username"/><br>
  <s:property value="list[0].password"/><br>
  list遍历list取值<!-- 遍历list方式取值 -->
  <s:iterator value="list" >
      <s:property value="username"/>
      <s:property value="password"/><br>
  </s:iterator>

%使用


1 在struts2标签中表单标签

(1)在struts2标签里面使用ognl表达式,如果直接在struts2表单标签里面使用ognl表达式不识别,只有%之后才会识别。

时间: 2024-08-03 00:08:38

struts2值栈存取数据小结(使用ognl表达式)的相关文章

Struts2 值栈总结(ValueStack)

1.获取值栈 1 //获取值栈的第一种方式 2 ValueStack valueStack1 = (ValueStack) ServletActionContext.getRequest().getAttribute("struts.valueStack"); 3 //获取值栈的第二种方式 4 ValueStack valueStack2 = ActionContext.getContext().getValueStack(); 5 System.out.println(valueSt

(十)Struts2 值栈/OGNL

值栈是一组对象,按照提供的顺序存储以下这些对象: 序号 对象和说明 1 Temporary对象 实际中存在各种在页面执行期间创建的temporary对象.例如,JSP标签循环集合的当前迭代值. 2 Model对象 如果在struts应用程序中使用Model对象,则当前Model对象放在值堆栈上的action之前. 3 Action对象 这是指正在执行的当前action对象. 4 命名对象 这些对象包括#application,#session,#request,#attr和#parameters

如何自学Struts2之Struts2值栈和OGNL语言[视频]

如何自学Struts2之Struts2值栈和OGNL语言[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95

从值栈获取数据

--------------------siwuxie095 从值栈获取数据 1.使用 Struts2 标签 + OGNL 表达式 获取值栈数据 主要:<s:property value="OGNL 表达式"/> 2.具体步骤 (1)在 Action 中向值栈放数据 (2)从 JSP 页面中获取值栈数据 3.具体实现 (1)编写 Action DataAction.java: package com.siwuxie095.action; import com.opensym

struts2值栈ValueStack中都有哪些东西?

com.opensymphony.xwork2.dispatcher.HttpServletRequest application com.opensymphony.xwork2.dispatcher.HttpServletResponse com.opensymphony.xwork2.ActionContext.name com.opensymphony.xwork2.ActionContext.application attr com.opensymphony.xwork2.ActionC

struts2值栈分析

前段日子对ognl表达式不是很理解,看了几本书上关于ognl表达式的描述后还是感觉很难,前几天学习了struts2中值栈的内容,现在感觉ognl表达式其实很容易. struts2中利用值栈来存储数据,在struts2中,把数据存在值栈中,然后在jsp页面用ognl表达式取出. 在struts2中的action有三种方法获取值栈 ValueStack valueStack=ActionContext.getContext().getValueStack(); ValueStack valueSta

struts2 值栈的理解

之前工作中当遇到JSP在struts2取值的时候,对于# % 什么的使用一直处于不太明白的状态(虽然之前学习struts2的时候有学到过). 今天再次遇到,整理一下. struts2上下文如上图所示.其中值栈里的内容我们经常用到的主要就是当前action的属性值.可以用s:debug标签看到. 对于在JSP里取值栈里的值:<s:property value="artist.bio" /> 值栈里的值是可以“升级”的,使用的是set标签,其中可以用scope指明要升级到的范围

Struts2的标签库(二)——OGNL表达式

Struts2的标签库(二) --OGNL表达式 1.Struts2中的OGNL表达式增加了ValueStack的支持. 注:ValueStack--实际上是一个容器对象,该对象在启动Struts2框架时被创建,当前端的JSP页面向Action发送请求时,Struts2框架会将请求的数据封装并存放在栈顶,当请求结束后,此栈顶的数据被清除.Struts2的标签访问数据就是通过访问ValueStack来实现的. 2.Struts2可以直接从对象中获取属性,可以自动搜索Stack Context的所有

Struts2学习之路(六)—— OGNL表达式

OGNL全称为Object-Graph Navigation Language,可译为对象图导航语言.此处介绍的OGNL表达式内容,仅限于在struts2标签中应用,形式如下: <s:property value="xxx" /> 以下为列举的一些应用形式: 1.访问值栈中action的普通属性: <s:property value="username" /> 2.访问值栈中对象的属性(setter getter方法): <s:prop