Cookie概念

Cookie时用来存储客户端的信息,一次会话:从浏览器的打开访问,然后关闭浏览器这就是属于一次会话!

Cooike不能存中文!必须时字符串的形式!

服务器端向客户端发送一个cookie

创建Cookie:

Cookie cookie = new Cookie(String cookieName,String cookieValue);

Cookie可以设置持久化时间:

cookie.setMaxAge(int seconds); 秒

注意:设置了时间以后,Cookie会从启动命令的时候开启,开始计算时间,当时间到时,就会删除Cookie信息,就算客户端没有关闭也会删除Cookie信息,单位为秒

删除客户端Cookie信息 把这个持久化时间改为0 那么就相当于覆盖以前的Cookie

package com.oracle.demo01;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SendCookieServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//创建Cookie对象(用来存储客户端的信息)
		Cookie cookie=new Cookie("goods","naiping");
		//设置持久化时间(在发送以前)
		cookie.setMaxAge(60*2);
		//设置Cookie携带路径
		/*cookie.setPath("/WEB07/SendCookieServlet");*/
		//发送Cookie到客户端
		response.addCookie(cookie);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

 设置携带路径:

cookie.setPath(String path);

如果不设置携带路径的话,Cookie会显示整个WEB应用所在的路径都会携带Cookie信息,如果设置了则写到哪个目录下,就会显示哪个目录下的Cookie信息

cookie.setPath("/WEB16");

  代表访问WEB16应用中的任何资源都携带cookie

cookie.setPath("/WEB16/cookieServlet");

  代表访问WEB16中的cookieServlet时才携带cookie信息

服务器端请求接收客户端所携带的cookie信息:

cookie信息时以请求头的方式发送到服务器

Cookie[] cookie=request.getcookies();

通过遍历的形式,通过cookie名称找到对应的值

package com.oracle.demo01;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GetCookieServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取Cookie数组
		Cookie[] cookies=request.getCookies();
		//遍历Cookie数组 通过Cookie名获取Cookie值
		for(Cookie c:cookies){
			if(c.getName().equals("goods")){
				System.out.println(c.getValue());
			}
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

  

原文地址:https://www.cnblogs.com/awdsjk/p/11145820.html