Javaservlet在JSP中获取cookie值

Javaservlet在JSP中获取cookie值,java,jsp,servlets,cookies,Java,Jsp,Servlets,Cookies,在java servlet中,我有以下代码: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Cookie cookie = new Cookie("tom_cookies",Long.toString(new Date().getTime())); cookie.setMaxAg

在java servlet中,我有以下代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {       
    Cookie cookie = new Cookie("tom_cookies",Long.toString(new Date().getTime()));
    cookie.setMaxAge(30);
    cookie.setPath(request.getContextPath());
    cookie.setComment("1");
    cookie.setVersion(1);
    System.out.println("Cookie created!");
    response.addCookie(cookie);
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>MyIndex</title>
</head>
<body>
<div>CookieComment: <%
Cookie[] my = request.getCookies();
for(int i=0;i<my.length;i++){
String comment = my[i].getComment();
out.println(comment);
}
%> 
</div></body></html>
在JSP index.JSP中,我有以下代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {       
    Cookie cookie = new Cookie("tom_cookies",Long.toString(new Date().getTime()));
    cookie.setMaxAge(30);
    cookie.setPath(request.getContextPath());
    cookie.setComment("1");
    cookie.setVersion(1);
    System.out.println("Cookie created!");
    response.addCookie(cookie);
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>MyIndex</title>
</head>
<body>
<div>CookieComment: <%
Cookie[] my = request.getCookies();
for(int i=0;i<my.length;i++){
String comment = my[i].getComment();
out.println(comment);
}
%> 
</div></body></html>

我的索引

CookieComment:这是Cookie的工作原理:

  • 浏览器向服务器发送请求
  • 服务器脚本向浏览器发送一组cookie
  • 浏览器将此信息存储在本地计算机上以备将来使用
  • 当下次浏览器向web服务器发送任何请求时,它会将这些cookie信息发送到服务器,服务器使用这些信息来识别用户
  • 您试图做的是,从请求对象(步骤1)访问响应对象(步骤2)中设置的cookie。由于请求对象显然不知道响应中设置的cookie,所以您得到的是
    null

    您只能在浏览器发送的后续请求中访问cookie(请注意,尽管
    之间的代码是用html/jsp编写的,但它实际上是服务器端代码,在呈现响应之前执行


    如果您想从服务器传回一些内容并将其打印出来,那么您可以使用
    响应
    对象或在
    请求
    中这就是cookie的工作方式:

  • 浏览器向服务器发送请求
  • 服务器脚本向浏览器发送一组cookie
  • 浏览器将此信息存储在本地计算机上以备将来使用
  • 当下次浏览器向web服务器发送任何请求时,它会将这些cookie信息发送到服务器,服务器使用这些信息来识别用户
  • 您试图做的是,从请求对象(步骤1)访问响应对象(步骤2)中设置的cookie。由于请求对象显然不知道响应中设置的cookie,因此您将获得
    null

    您只能在浏览器发送的后续请求中访问cookie(请注意,尽管
    之间的代码是用html/jsp编写的,但它实际上是服务器端代码,在呈现响应之前执行


    如果您想从服务器传回一些内容并打印出来,那么您可以使用
    response
    对象或在
    request

    中,您实际上不需要通过scriptlet代码从请求对象获取cookie,您可以通过EL使用名为“cookie”的隐式变量

    ${cookie.yourCookieName}
    
    这应该在JSP页面中打印cookie的值。它在响应对象中查找cookie


    希望对您有所帮助

    您实际上不需要通过scriptlet代码从请求对象获取cookie,您可以通过EL使用名为“cookie”的隐式变量

    ${cookie.yourCookieName}
    
    这应该在JSP页面中打印cookie的值。它在响应对象中查找cookie



    希望它有助于

    Cookie在30秒内过期?您在过期之前使用它吗?是的,我在30秒内使用它。可以肯定的是,我将MaxAge更改为30*60。为了我的理智起见,仍然显示“null”。为了测试,当您将index.html/jsp中的第10行调整为
    String comment=my[I].getName();
    ,您会得到什么?(如果您的servlet在索引运行之前已经运行过,您应该得到
    tom_cookies
    )它是“JSESSIONID”,我甚至不知道它是什么。好的,这意味着您的java servlet在加载index.jsp时并没有实际执行,记住,它们是两个不同的“页面”如果我可以这样称呼它。你的web.xml文件中有什么?这是你定义servlet的地方。如果它是空的,我会发布一个答案来帮助你创建一个。cookies在30秒后过期?你在过期之前使用它吗?是的,我在30秒之前使用它。当然,我将MaxAge更改为30*60。为了我的理智起见,仍然显示“null”,并且为了测试,你会怎么做t当您将index.html/jsp中的第10行调整为
    String comment=my[i].getName();
    ?(如果您的servlet在索引运行之前已运行,则应获得
    tom_cookies
    )它是“JSESSIONID”,我甚至不知道它是什么。好的,这意味着当您加载index.jsp时,您的java servlet实际上没有执行,记住,它们是两个不同的“页面”如果我可以这样称呼它。你的web.xml文件中有什么?这是你定义servlet的地方。如果它是空的,我将发布一个答案来帮助你创建一个。thx作为解释,我想我明白你的意思。但是,响应对象没有getCookie()方法,在这种情况下如何获取cookie值?呈现整个页面后,您需要从浏览器发送另一个请求。该请求应包括cookie。顺便说一句,为什么要使用cookie?您只需使用
    session.getAttribute()
    session.setAttribute()
    用于在属于一个会话的不同请求和响应之间共享数据的方法。我需要cookie供以后使用。这将是一个从小部分开始的大型项目。thx为了解释,我想我明白你的意思。但是,响应对象没有getCookie()方法,在这种情况下如何获取cookie值?呈现整个页面后,您需要从浏览器发送另一个请求。该请求应包括cookie。顺便说一句,为什么要使用cookie?您只需使用
    session.getAttribute()
    session.setAttribute()
    用于在属于一个会话的不同请求和响应之间共享数据的方法。我需要cookie供以后使用。这将是一个从小部分开始的大型项目。Thx Alberto,我尝试了你的方法,发现它实际上在Java EE内部浏览器中工作!但在Chrome中没有显示。我想知道为什么会发生这种情况?W嗯,你可以禁用chrome Cookie,输入设置并搜索Cookie支持,如果没有帮助,你可以尝试使用EE api中的一些重写url。但主要是因为chrome不支持cookiesThx Alberto,我尝试了你的方法,发现它实际上在Java EE内部浏览器中工作!但是它没有显示在Chrome中。我想知道为什么会发生这种情况?嗯,您可以禁用Chrome cookies,输入设置并搜索cookies支持