Tam*_*mer 34 java jsp servlets httpsession
因此,当我请求此servlet时,我正在尝试使用servlet将Java对象添加到用户的会话中.但是在servlet重定向到下一页并尝试检索对象之后,我得到了一个null对象.
以下是我将对象添加到HttpSession(在servlet中)的操作:
request.setAttribute("object", obj);
Run Code Online (Sandbox Code Playgroud)
然后我尝试通过(在JSP中)检索它:
Object obj = request.getAttribute("object");
Run Code Online (Sandbox Code Playgroud)
那么我如何让obj不为null?
更新:我也没试过这个:
HttpSession session = request.getSession();
session.setAttribute("object", obj);
Run Code Online (Sandbox Code Playgroud)
在JSP中有以下内容:
Object obj = request.getSession().getAttribute("object");
Run Code Online (Sandbox Code Playgroud)
两种方式仍然返回null.
Rom*_*eau 46
您没有将对象添加到会话中,而是将其添加到请求中.
你需要的是:
HttpSession session = request.getSession();
session.setAttribute("MySessionVariable", param);
Run Code Online (Sandbox Code Playgroud)
在Servlet中,您有4个可以存储数据的作用域.
确保你理解这些.在这里看看更多
Mat*_*all 12
将其添加到会话中,而不是添加到请求中.
HttpSession session = request.getSession();
session.setAttribute("object", object);
Run Code Online (Sandbox Code Playgroud)
另外,不要在JSP中使用scriptlet.改用EL ; 访问object所有你需要的是${object}.
JSP技术2.0版的一个主要特性是它支持表达式语言(EL).表达式语言可以轻松访问存储在JavaBeans组件中的应用程序数据.例如,JSP表达式语言允许页面作者使用简单的语法(例如
${name}简单变量或${name.foo.bar}嵌套属性)访问bean .
在这里你可以使用HttpRequest或来做HttpSession.并认为您的问题在JSP中.
如果你打算使用内部servlet做以下,
Object obj = new Object();
session.setAttribute("object", obj);
Run Code Online (Sandbox Code Playgroud)
要么
HttpSession session = request.getSession();
Object obj = new Object();
session.setAttribute("object", obj);
Run Code Online (Sandbox Code Playgroud)
在使用请求或会话设置属性后,使用以下命令在JSP中访问它,
<%= request.getAttribute("object")%>
Run Code Online (Sandbox Code Playgroud)
要么
<%= session.getAttribute("object")%>
Run Code Online (Sandbox Code Playgroud)
所以看来你的问题出现在JSP中.
如果你想使用scriptlet,它应该如下,
<%
Object obj = request.getSession().getAttribute("object");
out.print(obj);
%>
Run Code Online (Sandbox Code Playgroud)
或者可以使用如下表达式,
<%= session.getAttribute("object")%>
Run Code Online (Sandbox Code Playgroud)
或者可以按如下方式使用EL,
${object}或者${sessionScope.object}