struts2和jsp的数据传值

    这几天一直在做SSH的网上商城的项目,发现在struts中常用的存取值的方法就那么几种,这里汇总了一下,希望对大家有用。

   Session中存取

   存入session

<span style="font-size:18px;">ServletActionContext.getRequest().getSession()

.setAttribute("existUser",existUser);
</span>

session中取值

<span style="font-size:18px;">User existUser =(User ) ServletActionContext.getRequest()

.getSession().getAttribute("checkcode");
</span>

      也就是我们取值的时候是需要强转
       放入值湛中

   在方法中我们把值放入值站中

ActionContext.getContext().getValueStack().set("listzilei",listzilei);

//取值(循环):

<s:property value="%{#request.listzilei}"/>

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

         <s:property value="listzilei"/>

         <s:property value="#attr.listzilei"/>

         <%=request.getAttribute("listzilei") %> 

<s:iterator value="#request.listzilei"id="dtree">

        都可以取到值。

      当保存在contextMap中时:

    

  ActionContext.getContext().getContextMap().put("listzilei",listzilei);

    取值:用

     <s:property value="listzilei"/>不行

     <s:propertyvalue="#session.listzilei"/>不行

     <s:propertyvalue="#params.listzilei"/>不行

   下面都可以取到值:

    

<s:propertyvalue="%{#request.listzilei}"/>

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

     <s:property value="#attr.listzilei"/>

     <%=request.getAttribute("listzilei")%>

   ${listzilei}

    3:直接用request.setAttribute()

    

     request.setAttribute("listzilei", listzilei);

      <s:property value="%{#request.listzilei}"/>

         *

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

          **

        <s:property value="listzilei"/>只有这个不行

          ***

         <s:property value="#attr.listzilei"/>

          ****

         <%=request.getAttribute("listzilei") %>

          *****

         ${listzilei}

    4Maprequest

   

  Map request1 =  (Map)ActionContext.getContext().get("request");
       request1.put("listzilei", listzilei);

     <s:property value="%{#request.listzilei}"/>

         *

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

          **

        <s:property value="listzilei"/>不行

          ***

         <s:property value="#attr.listzilei"/>

          ****

         <%=request.getAttribute("listzilei") %>

          *****


         ${listzilei}

    总结:说明getContextMap取值的范围比valueStack大一点。只保存在requestattribute中。而ContextMap与手动request.setAtribute()Map request是一样的。

struts2a页面url传值,,再执行方法,再到b页面,a.jsp?id=33,在b.jsp页面都可以取到值。

    方法中采用

<action name="delete1" class="dtreeAction"method="delete1">

   <result type="redirect-action"name="success">

            <param name="actionName">zilei1.action</param>

            <param name="id">${id}</param>

            </result>

  </action>

<s:property value="%{#request.id}"/>

         *

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

          **

         <s:property value="id"/>不行

          ***

         <s:property value="#attr.id"/>

          ****

         <%=request.getAttribute("id") %>

          *****

         ${id}

     点击 b 页面的删除再回到 b 页面,什么都没有。

     struts.xml中用${id}时:

//request.setAttribute("id", id);不行

//ActionContext.getContext().getValueStack().set("id",id);可以

//ActionContext就是ognl上下文,是整个上下文最大的一个。e

 //ActionContext.getContext().getContextMap().put("id", id);可以

 //request1.put("id", id);不行

    当struts.xml中用${request.id}时:

request.setAttribute("id", id);可以

 ActionContext.getContext().getValueStack().set("id",id);可以

ActionContext就是ognl上下文,是整个上下文最大的一个。e

 ActionContext.getContext().getContextMap().put("id", id);可以

request1.put("id", id);可以

都可以的。

     总结:ContextMapstruts.xml文件中可以取到值。用valuestack无法取到值,OgnlValueStack类包含两个重要的属性,一个root和一个context。其中root本质上是一个ArrayList,而context是一个Map(更确切的说是一个OgnlContext对象)。

      暂时就把ContextMapvalueStack当成一样就行了,在.xml文件中有区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值