我刚刚开始研究 Java Servlets 和 JSP,对 session 对象有点困惑。在 servlet 中我有这个:
public class SampleServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
HttpSession session = request.getSession(true);
session.setAttribute("_session", "_value");
response.sendRedirect("page2.jsp");
}
}
现在,在 page2.jsp 中,也有一个 session 对象,但是当我这样做时
<%
out.print(session.getAttribute("_session"))
%>
好像没有获取到值(好像没有设置)。我尝试将 boolean 属性设置为 true,但在 jsp 页面中它返回 false。有人能告诉我这样做的正确方法吗?至于我想做什么,我想分享一些 session 变量。
最佳答案
使用 request.getRequestDispatcher().forward() 而不是 response.sendRedirect();
所以你的代码是:
HttpSession session = request.getSession(true);
session.setAttribute("_session", "_value");
request.getRequestDispatcher("page2.jsp").forward();
基本上,response.sendRedirect() 不保留 session 信息,因此当 jsp 获取它时它不存在。 request.forward() 确实保留了 session 。
关于java - JSP::与 session 对象混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3048988/