1.为什么 在jsp里设置request.setAttribute("user",u)通过action到转到另外一个jsp页面后request.getAttribute("user")取出来的是空的了........?是因为action作为了一次跳转导致的么,如果是我有什么在action里指定的class类中将request属性的值取出来啊~~

解决方案 »

  1.   

    你在JSP里面设置的 attribute,在JSP执行完毕后,就消失了已经。你对request的生命周期不太熟悉啊。
      

  2.   

    你对jsp基础太差了,对于page,request,session,application等的范围不了解。page 在当前页面有效(仅用于JSP中)
    request 在当前请求中有效
    session 在当前会话中有效
    application 在所有应用程序中有效当你通过request.setAttribute("xxx",xxx)把值存入request范围时,你跳转到action中时,只会在一次request中有效,也就是从jsp到action,在action中是可以取到值的,但是当你action中再跳转到另一个action中,而且采用redirect方式跳转,则是无法取到的,此时用session存储是可以的,比如你做分页的时候,就会把一些东西存储在session中,如查询条件等等,
      

  3.   


    不是吧~如果我从一个jsp页面直接跳到另外一个jsp或者跳到Servlet进行处理  都能取出来啊~~~
    只要是一次跳转request属性都能取出来的~当然用超连接进行条转是不行..因为那是属于二次跳转了~~~~
      

  4.   


    我不是JSP基础差...我是刚开始学struts所以 想确定一下跳到action算不算是一次跳转,,,不过从你答案中我已经得出结论了~~~谢谢你,,
    那如果我如何在action中取出request的属性值啊?????
      

  5.   

    request.setAttribute 是servlet里面的存储数据 在jsp页面才能取  你可以尝试一下穿参数到另外一个jsp页面  使用jstl标签  <c:param value="xxx" name="xxx"/> 这样穿参数过去 再另外一个jsp页面里面
    param.xxx 取值 这样是完全OK的
      

  6.   


    这个我是懂的~~~其实我只是想问  在action里面如何来获取request属性的值...??
      

  7.   


    是这样的。你是从jsp到action,你知道struts2的原理,action即是action也是formbean(相对于struts1.x而言)。即使是一个普通表单提交到action,也是需要将数值存入form中的。
    我不知道你在jsp中如何提交到action中的,request.setAttribute("user",u)这个又是在何处写的(js中吗?)?
    如果你是form提交到action,那么你只有通过form将值传递到action中,但是取的时候是通过
    request.getParameter("xxxx");这样来取的,当然,你需要在action中首先获取request。
    在表单中,可以通过隐藏域将request.setAttribute("user",u)这样写:
    <form>
    .....
    <input type="hidden" name="user" value="u">
    .....
    </form>则提交到action中,通过request.getParameter("user");可以拿到。
      

  8.   

    你的意思是 在jsp里面存储的 在servlet里面取值吗
      

  9.   

    其实我刚学struts 问的问题确实幼稚了点~~
    我意思其实是想问  我在jsp设置一个request属性的东东如 request.setAttrobute("aa","11");
    然后我在action对应的class java出  (<action name="*_*" class="cn.lxh.struts2.actions.{1}Action" method="{2}">)类中有什么方法获得request 里面的值.......
      

  10.   

    request 是java的内置对象 在jsp是不能使用的  只能通过隐藏域来解决 就是8楼所说的方法
      

  11.   

      你可以这样理解  request.getParameter()  它只是接受 客户提交的请求 也就是说在<form>表单里面提交的请求   在servlet 的request 对象里面接收 
      

  12.   

    你在jsp中只能通过这种方式存值,
    <%
    request.setAttribute("aa","11");
    %><form >......
    </form>你这样提交到action中,肯定取不到的。
    你对request不了解。
      

  13.   

    iisgirl  不好意思 一时没看到你的 回复..在这里向你抱歉了~~~另外 谢谢你和Faith_boy两个  ~~谢谢你们详细的解答 我已经明白了~~~!!,,谢谢 你们 真的~~~
      

  14.   

    可以可以使用struts2的ActionContext类的对象(ActionContext ctx=ActionContext.getContext();)获得request、session等的Map对象,也可以在action类中实现ServletRequestAware接口来获得request对象
      

  15.   


    胡说。
    request明明是jsp 9大内置对象之一。肯定可以在jsp中使用。
      

  16.   

    <%
    request.setAttribute("aa","11");
    %><form >......
    </form>啊 确实不可以啊~~ !!!再次谢谢了...
      

  17.   


    我估计他是打快打错了....估计原本是想这样打的  
    request 是java的内置对象 在.java是不能使用的 只能通过隐藏域来解决 就是8楼所说的方法jsp是在Servlet上发展起来的~~内置对象在Servlet能用的在jsp也能用把~