我知道request里的东西只能在一次请求中有效, 但我现在搞不清,怎么才算是一次请求,servlet --> jsp  是请求,
可是  以下为什么就不能算是一次请求呢?x.jsp:
<--------------------x.jsp beg---------------------->
<%
request.setAttribute("a","a");
%>
<form action="xx.jsp" method="post">
<INPUT TYPE=submit name="submit" value="add">
</form>
<-------------------x.jsp end----------------------->xx.jsp:
<---------------------xx.jsp beg--------------------->
<%=request.getAttribute("a")%>
<----------------------xx.jsp end-------------------->这时,在x.jsp中点击按钮后到了, xx.jsp 得到的是null还有。为什么, 以下也不算是一次请求?
x.jsp:
<--------------------x.jsp beg---------------------->
<%
request.setAttribute("a","a");
%>
<a href="xx.jsp">xx.jsp</a>
<-------------------x.jsp end----------------------->xx.jsp
<---------------------xx.jsp beg--------------------->
<%=request.getAttribute("a")%>
<----------------------xx.jsp end-------------------->xx.jsp里得到的也是null到怎么才算是一次请求呢?

解决方案 »

  1.   

    只不过楼主的jsp中注释也太多了吧,看的人眼晕!
      

  2.   

    这里的每个请求是是独立的。也就是说一个request的周期只到你提交给servlet中,当然,在servlet中有forward那这个请求的request就能到达你所要到达的面页。所以你在xx.jsp 
    中得不到x.jsp中request的内容。如果是用session.getAttribute就能得到你要的东西的。
    对于超链,也一样的。但是如果你在<a href="xx.jsp">加上?key=value在xx.jsp 中就能通过key找到你要的value。
      

  3.   

    既然帮我加了1分。
    我就说2下实际你的2个页面都一样,第一个递交了form,request.setAttribute("a","a");
    没有起作用。第二个只是普通的连接,也没有用。你因该在action中request.getAttribute("a")下,之后在jsp接受
    request.getAttribute("a")。就有了
      

  4.   

    SDMRauquin(冷月无心) ( ) 信誉:100  
    你因该在action中request.getAttribute("a")下,之后在jsp接受
    request.getAttribute("a")。就有了
    对这部分再说清楚一点儿!
    而且我还是很乱, 为什么 前两个就不是请求呢??
      

  5.   

    我知道request里的东西只能在一次请求中有效
    =========================================
    request在一次请求中有效,前提是上一个页面到下一个页面的请求必须是转发请求(forward),而不是重定向请求(redirect).而你上面的请求都是重定向(redirect)
      

  6.   

    超连接  和  form提交都是重定向吗? 
    这象解释 我就能接受了!
      

  7.   

    x.jsp:
    <--------------------x.jsp beg---------------------->
    <%
    request.setAttribute("a","a");
             request.getRequestDispatcher("xx.jsp").forward(request,response);
    %>
    <a href="xx.jsp">xx.jsp</a>
    <-------------------x.jsp end----------------------->用这个试试
      

  8.   

    说错了,因该是
    request.setAttribute("a")下,之后在jsp接受
    request.getAttribute("a")。就有了你好像没有用struts。所以没有action。你要明白一次,是指HTTP的GET,POST请求域中获取信息为1次。那2个不是请求,写法不对的。1个是提交了form值。一个就是连接走了下,完全没起作用。实际上从浏览器的jsp , post到服务器,或者从服务器到浏览器的get。这些各是一次。你现在的2个 jsp实际上是2次了。jsp->servlet->jsp是2次的
      

  9.   

    第一个例子不行是因为:
         request.setAttribute("a","a")中的request 仅对本页面有效,当点击提交时产生一个新的请求,转向第二个页面,即第二个页面中request.getAttribute("a")的request 与前一个request不是同一个,所以不能取值。
    第二个例子:
         <a href=""> 超级链接不引发新的请求,两个request 都仅对各自所在页面有效,所以不能实现值传递。
      

  10.   

    兄弟,你把session和request弄混淆了,你现在这么做是session的效果,session是可以这样实现的,什么是request,请求?你都没有请求,又怎么会得到值呢?请求是需要去触发的。