在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,首先调用请求对象requestgetCookies()方法。此方法将返回在请求头中的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>