[英]How to Store an ObjectId in an HttpSession and Retrieve it? (MonoDB Java Driver)
[英]How do you store Java objects in HttpSession?
所以我試圖讓一個 servlet 在請求這個 servlet 時將一個 Java 對象添加到用戶的會話中。 但是在 servlet 重定向到下一頁並且我嘗試檢索該對象之后,我反而得到了一個null
對象。
這是我將對象添加到 HttpSession(在 servlet 中)的操作:
request.setAttribute("object", obj);
然后我嘗試通過(在 JSP 中)檢索它:
Object obj = request.getAttribute("object");
那么我怎樣才能讓 obj 不為空呢?
更新:我也試過一無所獲:
HttpSession session = request.getSession();
session.setAttribute("object", obj);
在 JSP 中具有以下內容:
Object obj = request.getSession().getAttribute("object");
兩種方式仍然返回 null。
您不是將對象添加到會話中,而是將其添加到請求中。
你需要的是:
HttpSession session = request.getSession();
session.setAttribute("MySessionVariable", param);
在 Servlet 中,您有 4 個可以存儲數據的范圍。
確保你理解這些。 更多信息請看這里
將它添加到會話中,而不是請求中。
HttpSession session = request.getSession();
session.setAttribute("object", object);
另外,不要在 JSP 中使用 scriptlet。 改用EL ; 要訪問object
您只需要${object}
。
JSP 技術 2.0 版的一個主要特性是它對表達式語言 (EL) 的支持。 表達式語言可以輕松訪問存儲在 JavaBeans 組件中的應用程序數據。 例如,JSP 表達式語言允許頁面作者使用簡單的語法訪問 bean,例如
${name}
表示簡單變量或${name.foo.bar}
表示嵌套屬性。
在這里,您可以使用HttpRequest
或HttpSession
。 並認為您的問題出在 JSP 內。
如果您打算使用內部 servlet,請執行以下操作,
Object obj = new Object();
session.setAttribute("object", obj);
或者
HttpSession session = request.getSession();
Object obj = new Object();
session.setAttribute("object", obj);
並通過使用請求或會話設置您的屬性后,使用以下在 JSP 中訪問它,
<%= request.getAttribute("object")%>
或者
<%= session.getAttribute("object")%>
所以看起來你的問題出在 JSP 上。
如果你想使用scriptlets,它應該如下所示,
<%
Object obj = request.getSession().getAttribute("object");
out.print(obj);
%>
或者可以使用如下的表達式,
<%= session.getAttribute("object")%>
或者可以使用 EL 如下, ${object}
或${sessionScope.object}
請求對象不是會話。
您要使用會話對象來存儲。 會話被添加到請求中,並且您希望跨請求保留數據。 會話可以從
HttpSession session = request.getSession(true);
然后您可以在會話上使用 setAttribute 或 getAttribute 。
有關 jsp 會話的最新教程是: http : //courses.coreservlets.com/Course-Materials/pdf/csajsp2/08-Session-Tracking.pdf
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.