struts2利用值栈实现参数传递

值栈

在struts2框架中,MVC的设计模式使得视图层和控制层分离,在这之间传递参数可以使用值栈。值栈就是 OGNL 表达式存取数据的地方。在一个值栈中,封装了一次请求所需要的所有数据,Struts2 会为每个请求创建一个新的值栈,值栈和请求是一一对应的关系,这种一一对应的关系使值栈能够线程安全地为每个请求提供公共的数据存取服务。

使用方法:以下主要是两个方面,其他页面间参数传递可参考之前的博客

action到jsp页面间

首先需要获取值栈对象,将参数放到值栈中,跳转到jsp页面时取出参数即可,具体步骤如下:

  1. 获取context对象ActionContext context=ServletActionContext.getContext();
  2. 获取值栈对象:ValueStack stack=context.getValueStack();
  3. 将参数放到值栈中:stack.set("param",param);
  4. 跳转到jsp页面后取出参数,可使用struts2的<s:property>标签:<s:property value="param"/>
    若参数为对象数组,还需要<s:iterator>标签先遍历数组:<s:iterator value="list"><s:property value="param"/></s:iterator>
    另外,在使用前需要先导入struts2的标签库:<%@ taglib uri="/struts-tags" prefix="s" %>

action到action之间

  1. 参数先放到值栈中,方法同上
  2. 配置文件struts.xml中设置跳转方法:重定向属性redirectAction,使用表达式带参数值,多个参数之间使用&amp;隔开:<result name="success" type="redirectAction">action2?param1=${param1}&amp;param2=${param2}</result>
    3.跳转后的action2中可以使用request对象接收参数,方法如下:
HttpServletRequest request=ServletActionContext.getRequest();
String param1=request.getParameter("param1");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值