2007年1月12日
两个jsp页面之间如何传递一个对象?比如一个List或者HashMap?
答:
用request.setAttribute("name",Object),request.getAttribute("name");
或者session.setAttribute("name",Object),session.getAttribute("name");

注意问题:
  • 如果用request,要注意request的范围仅限于同一个request对象;如果使用了form的"action"或者response.sendRedirect("xxx.jsp")等调转,则不再是同一个request对象,即用request.getAttribute("name")将取不到值。
  • 换成request.getRequestDispatcher("xxx.jsp").forward(request,response);
    才能共享request中数据
  • 如果用session,程序太慢,存在效率问题。

基础问题:
1,所有再页面提交的数据,在ACTION里只能通过request.getParameter( or values).
2,要想通过attribute传输数据,必须保持在同一个request中,不论中转了几次(forward)。


另:参考资料:
请教一下关于request.setAttribute()的用法,谢谢.[急!在线等!]
http://www.blogjava.net/flysky19/admin/EditArticles.aspx

问题:
我在myServlet.java的doGet()中写道:
request.setAttribute("a","111");
response.sendRedirect("a.jsp");

我的doPost()方法是这样写的:
doGet(request, response);

我在a.jsp中写道:
String aValue="";
if(request.getAttribute("a")!=null){
  aValue= String.valueOf(request.getAttribute("a"));
  }
out.println(aValue);

可request.getAttribute("a")总是取不到值, 是我错误地使用了request.setAttribute()方法吗? 如果想让servlet给jsp页面传一些值应该通过什么方法呢? 谢谢~



解决:
response.sendRedirect("a.jsp");
换成
request.getRequestDispatcher("a.jsp").forward(request,response);
才能共享request中数据