java - JSP::与 session 对象混淆

标签 java google-app-engine jsp servlets

我刚刚开始研究 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 。

参见 http://www.coderanch.com/t/170618/java-Web-Component-SCWCD/certification/sendRedirect-Vs-requestdispatcher-forward

关于java - JSP::与 session 对象混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3048988/

相关文章:

python - 使用 Python 的 Google App Engine 上的 key 或 ID

python - 通过 HTTP 表单将文件上传到 S3 的简单方法

java - 在 jsp 中显示来自 servlet 的数据但不覆盖当前值

java - 如何查看我的 PreparedStatement 的外观?

java - 如何使用正则表达式模式在不解析的情况下获取 JSON 属性值

python - 无法在 GAE 的 python 中导入正确的模块

java - 刷新按钮禁用

java - 来自 UrlConnection Java 的响应

java - 带最后一个元素枢轴的就地快速排序?

java - Dojo Toolkit - 比较两个字符串