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" );
我有一个 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" );