Struts2 之 Action类与 jsp 页面的数据交互

本文介绍了如何在Struts2框架中实现Action类与JSP页面之间的数据交互,特别是通过OGNL表达式访问值栈中的数据。在对象栈中,可以使用`ActionContext.getContext().getValueStack().push()`方法将数据推入栈顶,然后在JSP页面中通过<s:property/>标签或者EL表达式进行取值。对于Map栈中的数据,需要加上#前缀来访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Struts2标签,需要先在页面中引入Struts2标签库:(标签库的位置在struts2-core-2.3.1.2.jar包中
<%@ taglib prefix="s" uri="/struts-tags" %>


* Action 类接收数据的三种方式

    1.使用Action属性接收    2.使用DomainModel接收    3.使用ModelDriven接收 (推荐使用)


* Action 类返回数据的方式

用OGNL表达式显示值栈中的数据的时候:

  • 如果要访问对象栈中的值,直接访问属性即可。
  • 如果要访问Map栈中的值,需要加#。


值栈(Map栈、对象栈)方式:


1.对象栈的操作


将对象放到栈顶:  ActionContext.getContext().getValueStack().push(user);
       页面获取方式:  <s:property value="username"/> 

将对象放到栈顶:ActionContext.getContext().getValueStack().push("xxx");

       页面获取方式:   <s:property/>

将list存放到对象栈:ActionContext.getContext().getValueStack().push(userList);

    页面获取方式:  <s:iterator>
                     <s:property value="username"/>
                     <s:property value="userage"/>
                  </s:iterator> 

   注:
           <s:propertory/>是一个输出标签:
           说明:如果不写value属性,则直接输出栈顶元素。如果在对象栈中出现相同的元素,则会从上往下找,直到找到就停止了
2.Map栈的操作
把数据直接放到Map栈:ActionContext.getContext().put("a", "xxx");
         页面获取方式:<s:property value="a"/> 或者 ${a}
把对象直接放到Map栈:ActionContext.getContext().put("a", user);

         页面获取方式:<s:property value="a.username"/> 或者 ${a.username}

将list存放到Map栈:ActionContext.getContext().put("userList"userList);
         页面获取方式:<s:iterator value="#personList">
                         <s:property value="username"/>
                         <s:property value="userage"/>
                      </s:iterator> 


把数据放到Request域:ServletActionContext.getRequest().setAttribute("a""xxx");
        页面获取方式:<s:property value="#request.a"/> 或者 ${requestScope.a}

把对象放到Request域:ServletActionContext.getRequest().setAttribute("a"user);
        页面获取方式:<s:property value="#request.a.username"/> 或者 ${requestScope.a.username}



把数据放到session域:ServletActionContext.getRequest().getSession().setAttribute("a""xx");
把数据放到Application域:ServletActionContext.getServletContext().setAttribute("a""xxx"); 

页面获取方式同Request域


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值