关于Cookie的相关知识点以及使用方法

时间:2021-11-06 20:03:48

首先介绍cookie的一些方法

              response.addCookie(Cookie cookie)是将一个cookie对象传入客户端。

              Cookie cookie=new Cookie(String name,String value):构造一个cookie对象

              request.getCookies():得到所有的cookie对象

             cookie.getName():得到此cookie对象的名字

             cookie.getValue(String name):得到对应名称的cookie的值

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@ page import="java.net.URLDecoder" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>取出Cookie</title>
</head>
<body>
<%! String name=""; %>
<%
    Cookie[] cookies=request.getCookies();
    if(cookies!=null){
        for(Cookie c:cookies){
            if(c.getName().equals("name")){
                name=URLDecoder.decode(c.getValue(),"utf-8");//对字符串进行解码,类似于字符串的解码
            }
        }
    }
%>
<form name="form" action="deal.jsp" method="post">
   <%
        if("".equals(name)){
   %>
        <strong>欢迎初次登录</strong>
  <%
        }else{
   %>
         <strong>欢迎再次登录,已保存上次登录用户名</strong>
   <%} %><br>
   请输入姓名:<input type="text" name="name" value="<%=name%>">
   <input type="submit" value="提交">
   
</form>
</body>
</html>

一、向客户程序发送cookie

1、创建cookie对象

Cookie c = new Cookie(“userId”,”landril”);

2、设置最大时效,默认该cookie是存储在浏览器的内在中,用户关闭浏览器则被删除,下面的方法是将cookie存储在硬盘上。

c.setMaxAge(60*60*24);//一天,如果设置为0则是删除该cookie

3、将cookie放入到HTTP响应报头,可以使用HttpServletResponse的addCookie方法,此方法不修改之前指定的Set-Cookie报头,而是创建新的报头。

response.addCookie(c);

4、

Cookie rtn =newCookie("repeat"," true");

rtn.setMaxAge(60*60*24*365);

response.addCookie(rtn);

cookie.setPath(“/”);指定服务器的所有页面都应该收到该cookie

注意:设置cookie的步骤为创建cookie对象,设置最大时效,将cookie放入响应报头,即发送到客户程序,记住一定要将cookie发送到客户程序

二、从客户端读取cookie

1、调用HttpServletRequest的getCookies得到一个Cookie对象的数组

2、对数组进行循环,调用cookie的getName方法,获取具体的cookie的值

Cookie[] cookies = request.getCookies();

if(cookies !=null){

for(inti = 0; i < cookies.length; i ) {

Cookie c = cookies[i];

if((c.getName().equals("repeat")) && (c.getValue().equals("true"))) {

newa=false;

break;

}

}

}

三、cookie的常用方法

1、setComment()/getComment():指定或查找与该cookie相关的注释

2、setDomain()/getDomain():设置或读取该cookie适用的域

3、setMaxAge()/getMaxAge():操作cookie保留的时间,多长时间后过期

4、getName():读取cookie的名称

5、setPath()/getPath():设置或取得cookie适用的路径

cookie.setPath(“/”);指定服务器的所有页面都应该收到该cookie

6、setSource()/getSource():指定cookie是否只能通过加密连接(SSL)

默认false,表示cookie适用所有连接

7、setValue()/getValue():指定或获取cookie的值