欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Cookie简单样例

程序员文章站 2022-07-05 09:43:17
Cookie测试样例package com.itheima.demo01;import java.io.IOException;import java.sql.Date;import java.text.SimpleDateFormat;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import...

Cookie可以把用户产生的数据存储到用户的浏览器中,一个Cookie只用标识一种信息,至少含有一个标识该信息的名称和值。一个web站点可以给一个浏览器发送多个Cookie,一个web浏览器可以存储多个web站点的Cookie,浏览器存放Cookie的大小和数量是有限制的。

Cookie的分类

默认级别的Cookie

指的是没有设置有效时间的Cookie,默认情况下只要关闭了浏览器,Cookie也会被销毁。(Cookie存在于浏览器的内存中,当关闭了浏览器Cookie就销毁了)

持久级别的Cookie

指的是有有效时间的Cookie,这种Cookie的内容不是保存在浏览器的内存中,将Cookie的内容保存(持久化)到硬盘上。这个时候,关闭浏览器,再次打开浏览器会加载硬盘上的文件,从而Cookie中数据就不会丢失。

Cookie测试样例

package com.itheima.demo01;

import java.io.IOException;
import java.sql.Date;
import java.text.SimpleDateFormat;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.itheima.uitl.cookieuitl;

import javax.servlet.http.Cookie;


/**
 * Servlet implementation class visservlet
 */
public class visservlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Cookie[] cooks = request.getCookies();
//		获取浏览器传回的cookie
		Cookie cook = cookieuitl.findcookie(cooks, "dangqiantime");
//		传入Cookie数组和要查找的cookie名称去查找
		if(cook==null) {
			//如果返回值为空,说明是第一次访问
			response.setContentType("text/html;charset=UTF-8");
			response.getWriter().println("<h1>您好,欢迎来到本网站!<h1>");
		}else {
			//不为空,不是第一次访问
			String value = cook.getValue();
			response.setContentType("text/html;charset=UTF-8");
			response.getWriter().println("<h1>您好,您上次访问的时间为:"+value+"<h1>");
			//将时间输出在浏览器上
			
			
		}

		SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd-'at'-HH:mm:ss");
		//错误,开始格式化时间的时候,中间有空格,但是在addCookie方法中,字符是不能存入的所以报错了,只要把空格替换掉就可以了
		Date date = new Date(System.currentTimeMillis());
		
		Cookie c = new Cookie("dangqiantime",formatter.format(date));
//		创建一个cookie并且把数据存入
		c.setPath("/web03");
//		给Cookie设置有效路径,只有当浏览器访问这个路径,或者这个路径下的项目时,才会在访问时带上Cookie
		c.setMaxAge(60*60);
//		设置有效时间,这个单位时秒,60*60指的是这个Cookie可以保存一个小时,一小时后这个Cookie就会被删除。
//		如果设置为0,那么这个Cookie就会马上被删除,如果没有添加这个项目,那么就会使用默认的Cookie
		response.addCookie(c);
//		把创建的cookie进行回写
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		doGet(request, response);
	}

}

Cookie工具类

package com.itheima.uitl;

import javax.servlet.http.Cookie;

//查找cookie的工具类
public class cookieuitl {
	public static Cookie findcookie(Cookie[] cookie,String name) {
		if(cookie==null) {
			return null;
		}else {
			for(Cookie cook:cookie) {
				
				if(name.equals(cook.getName())) {
					return cook;
				}
			
			}
		}
		return null;
		
	}

}

本文地址:https://blog.csdn.net/weixin_43654083/article/details/109557577

相关标签: cookie