日期:2014-05-17  浏览次数:20871 次

关于jsp中使用request.setAttribute的诡异问题
今天在做struts2实验的死后遇见了一个诡异的问题,望各位大大帮忙想想问题出在哪。

在jsp中使用了request.setAttribute放入一个值;

然后无论是在Action中,还是在另一个jsp中,使用request.getAttribute将其取出,得到的都为空;

但是,在页面上我也同时使用了隐藏域,在Action和jsp都能正确的通过request.getParameter获取到值。

如:
第一个jsp的代码:
Java code

  <%request.setAttribute("mes", "123"); %>
  <form name="1" action="2.jsp">
  <input type="hidden" value="hidden" name="hidden"/>
  <input type="submit" value="go"/>
  </form>



跳转页面的jsp代码:
Java code

<%String s = (String)request.getAttribute("mes"); 
  String r = request.getParameter("hidden");
%>
<%=s %>
<%=r %>



页面显示的结果:
null hidden 

这个问题是什么原因造成的呢?难道是request.setAttribute没有将值放入到request中?
这种问题,不大不小,如鲠在喉啊,十分难受,望各位前辈不吝赐教啊~~~~~~~~

------解决方案--------------------
提交应该是只提交了表单(form)里的内容,再提交的时候等于重定向。
------解决方案--------------------
request作用域 一次请求范围内 当你访问1.jsp时,算一次请求,当form表单提交到2.jsp,算另一个请求,因为2个是不同的请求,所以不能共用request域中的数据。顶2楼