2007年1月12日
兩個(gè)jsp頁(yè)面之間如何傳遞一個(gè)對(duì)象?比如一個(gè)List或者HashMap?
答:
用request.setAttribute("name",Object),request.getAttribute("name");
或者session.setAttribute("name",Object),session.getAttribute("name");

注意問(wèn)題:
  • 如果用request,要注意request的范圍僅限于同一個(gè)request對(duì)象;如果使用了form的"action"或者response.sendRedirect("xxx.jsp")等調(diào)轉(zhuǎn),則不再是同一個(gè)request對(duì)象,即用request.getAttribute("name")將取不到值。
  • 換成request.getRequestDispatcher("xxx.jsp").forward(request,response);
    才能共享request中數(shù)據(jù)
  • 如果用session,程序太慢,存在效率問(wèn)題。

基礎(chǔ)問(wèn)題:
1,所有再頁(yè)面提交的數(shù)據(jù),在ACTION里只能通過(guò)request.getParameter( or values).
2,要想通過(guò)attribute傳輸數(shù)據(jù),必須保持在同一個(gè)request中,不論中轉(zhuǎn)了幾次(forward)。


另:參考資料:
請(qǐng)教一下關(guān)于request.setAttribute()的用法,謝謝.[急!在線(xiàn)等!]
http://www.tkk7.com/flysky19/admin/EditArticles.aspx

問(wèn)題:
我在myServlet.java的doGet()中寫(xiě)道:
request.setAttribute("a","111");
response.sendRedirect("a.jsp");

我的doPost()方法是這樣寫(xiě)的:
doGet(request, response);

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

可request.getAttribute("a")總是取不到值, 是我錯(cuò)誤地使用了request.setAttribute()方法嗎? 如果想讓servlet給jsp頁(yè)面?zhèn)饕恍┲祽?yīng)該通過(guò)什么方法呢? 謝謝~



解決:
response.sendRedirect("a.jsp");
換成
request.getRequestDispatcher("a.jsp").forward(request,response);
才能共享request中數(shù)據(jù)