在JSP中使用Cookie
时间:2018-11-15 12:52:09 来源:igfitidea点击:
cookie是存储在客户端用户计算机中的一小块信息,通常以名称/值
形式的字符串进行存储。
web服务器在下次访问时通过cookie标识用户。
每次用户访问启用了cookie的网站时,web服务器在响应web浏览器时都会将额外的数据添加到HTTP头中。
下次用户再次访问同一站点时,web浏览器会在HTTP请求头中向web服务器发送这个cookie。
当然用户也可以在web浏览器中禁用cookie。
JSP提供了javax.servlet.http.Cookie
类API来使用cookie。
服务端发送cookie
<%@page import="javax.servlet.http.Cookie"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>JSP 设置 Cookie</title> </head> <body> <% Cookie cookie = new Cookie("ClientID","JSP jiaocheng theitroad."); cookie.setMaxAge(3600); response.addCookie(cookie); %> </body> </html>
我们创建了一个新的cookie。
并设置cookie的过期时间为3600秒。 如果没有设置,则当用户关闭web浏览器时,cookie将会被删除。
最后,将cookie添加到响应http头中。
此外,我们还可以使用setDomain()和setPath()等方法限制能有效读取cookie的doamin和URL路径。
服务端读取cookie
要从客户端的HTTP请求中读取cookie,首先调用请求对象request
的getCookies()
方法。此方法将返回在请求头中的cookie列表,然后你就可以遍历所有cookie。
<%@page import="javax.servlet.http.Cookie"%> <html> <head> <title>JSP 读取 Cookie</title> </head> <body> <% Cookie[] list = request.getCookies(); if(list != null){ for(int i = 0; i < list.length;i++){ out.println(list[i].getName() + ":" + list[i].getPath()); } } %> </body> </html>
删除 cookie
如果想删除已经发送到web浏览器的cookie, 你可以使用setMaxAge()
方法重新把cookie对象的过期时间设置为0。
例如,删除客户端的所有的cookie
<%@page import="javax.servlet.http.Cookie"%> <html> <head> <title>Removing existing cookie</title> </head> <body> <% Cookie[] list = request.getCookies(); if (list != null) { for (int i = 0; i < list.length; i++) { list[i].setMaxAge(0); out.println(list[i].getName() + " cookie 已删除 "); } } %> </body> </html>