簡體   English   中英

Java servlet在JSP中獲取cookie值

[英]java servlet get cookie value in JSP

在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中,我期望的是:

Cookie評論:1

但是,它僅顯示:

CookieComment:null

這怎么了

Cookie的工作方式如下:

  1. 瀏覽器向服務器發送請求。
  2. 服務器腳本將一組cookie發送到瀏覽器。
  3. 瀏覽器將此信息存儲在本地計算機上,以備將來使用。
  4. 當下一次瀏覽器向Web服務器發送任何請求時,它會將那些cookie信息發送到服務器,並且服務器使用該信息來識別用戶。

您想要做的是從請求對象(步驟1)訪問在響應對象(步驟2)中設置的cookie。 由於請求對象顯然不知道響應中設置了cookie,因此您將獲得null值。

您只能在瀏覽器發送的后續請求中訪問cookie(請注意,盡管<%%>之間的代碼是用html / jsp編寫的,但它實際上是服務器端代碼,並在呈現響應之前執行。

如果要從服務器傳回某些內容並進行打印,則可以使用response對象或在request 設置屬性

您實際上不需要通過scriptlet代碼從請求對象獲取cookie,可以通過EL使用稱為“ cookie”的隱式變量。

${cookie.yourCookieName}

這應該在JSP頁面中打印cookie的值。 它在響應對象中查找cookie

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM