Java servlet 创建 cookie 然后从中读取 JSP 为空

Java servlet create cookie and then read from JSP is null

我有一个 servlet:

public class TestServlet extends HttpServlet {

        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            req.getSession().setAttribute("user", "Test cookie");
            req.getRequestDispatcher("test.jsp").forward(req, resp);
        }
}

我有一个 JSP:

    <% String name = request.getParameter("user"); %>
    <%= name%>

但是如果我运行代码,输出为空,为什么?

你能告诉我为什么吗?获取 "user" cookie 的简单方法是什么。

你应该像这样使用 getAttribute(...) 而不是 getParameter(...) :

 <% String name = session.getAttribute("user"); %>

没有。

<% String name = request.getParameter("user"); %> 
  • getParameter() returns 请求参数的值作为字符串,如果参数不存在则为 null。
  • getAttribute() returns 作为对象的命名属性的值,如果给定名称的属性不存在则为 null。
  • 属性,在会话的生命周期内可用。
  • 参数,仅在请求的生命周期内可用

"But if I run the code, the output is null, why"?

如果您在 session 上设置了属性,请求中不存在该属性,因此从

返回 null
 request.getParameter("user");

您需要像这样从 session 中获取它:

session.getAttribute("user");

使用隐式会话对象

session.getAttribute( "user" );

Beginners book -jsp implicit-object-session