[英]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。 由於請求對象顯然不知道響應中設置了cookie,因此您將獲得null
值。
您只能在瀏覽器發送的后續請求中訪問cookie(請注意,盡管<%
和%>
之間的代碼是用html / jsp編寫的,但它實際上是服務器端代碼,並在呈現響應之前執行。
如果要從服務器傳回某些內容並進行打印,則可以使用response
對象或在request
設置屬性 。
您實際上不需要通過scriptlet代碼從請求對象獲取cookie,可以通過EL使用稱為“ cookie”的隱式變量。
${cookie.yourCookieName}
這應該在JSP頁面中打印cookie的值。 它在響應對象中查找cookie
希望能幫助到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.