java servlet在JSP中获取cookie值

时间:2016-03-19 01:44:56

标签: 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.setMaxAge(30);
    cookie.setPath(request.getContextPath());
    cookie.setComment("1");
    cookie.setVersion(1);
    System.out.println("Cookie created!");
    response.addCookie(cookie);
}

在JSP index.jsp中我有以下代码:

<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>

我的web.xml:

<?xml version="1.0" encoding="UTF-8"?>

<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>Servlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>

<display-name>1aaa</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

在local:8080 / servlet中,我的期望是:

  

CookieComment:1

但是,它只显示:

  

CookieComment:null

这里有什么不对吗?

2 个答案:

答案 0 :(得分:1)

Cookie的工作方式如下:

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

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

    如果您想从服务器传回内容并进行打印,则可以在response中使用request对象或set attributes

答案 1 :(得分:1)

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

${cookie.yourCookieName}

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

希望有所帮助