我知道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到怎么才算是一次请求呢?
可是 以下为什么就不能算是一次请求呢?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到怎么才算是一次请求呢?
中得不到x.jsp中request的内容。如果是用session.getAttribute就能得到你要的东西的。
对于超链,也一样的。但是如果你在<a href="xx.jsp">加上?key=value在xx.jsp 中就能通过key找到你要的value。
我就说2下实际你的2个页面都一样,第一个递交了form,request.setAttribute("a","a");
没有起作用。第二个只是普通的连接,也没有用。你因该在action中request.getAttribute("a")下,之后在jsp接受
request.getAttribute("a")。就有了
你因该在action中request.getAttribute("a")下,之后在jsp接受
request.getAttribute("a")。就有了
对这部分再说清楚一点儿!
而且我还是很乱, 为什么 前两个就不是请求呢??
=========================================
request在一次请求中有效,前提是上一个页面到下一个页面的请求必须是转发请求(forward),而不是重定向请求(redirect).而你上面的请求都是重定向(redirect)
这象解释 我就能接受了!
<--------------------x.jsp beg---------------------->
<%
request.setAttribute("a","a");
request.getRequestDispatcher("xx.jsp").forward(request,response);
%>
<a href="xx.jsp">xx.jsp</a>
<-------------------x.jsp end----------------------->用这个试试
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次的
request.setAttribute("a","a")中的request 仅对本页面有效,当点击提交时产生一个新的请求,转向第二个页面,即第二个页面中request.getAttribute("a")的request 与前一个request不是同一个,所以不能取值。
第二个例子:
<a href=""> 超级链接不引发新的请求,两个request 都仅对各自所在页面有效,所以不能实现值传递。