Cookie

1 篇文章 0 订阅

方法参数要什么给什么 创建对象的几种方式
1、直接new
2、单例模式 | 提供静态方法
3、工程模式构建 stu StuFactory StuBuilder

1、发送Cookie

发送cookie给客户端
Cookie cookie = new Cookie(“aa”, “bb”); //给响应添加一个cookie
response.addCookie(cookie);

2、接收cookie

//获取客户端带过来的cookie
		Cookie[] cookies = request.getCookies();
		if(null != cookies) {
			for (Cookie c : cookies) {
				String CookieName = c.getName();
				String CookieValue = c.getValue();
				System.out.println(CookieName+"..."+CookieValue);
			}
		}

3、先写cookie//可以给客户端添加多个cookie

Cookie cookie = new Cookie("zhangsan","18");
	response.addCookie(cookie );
	Cookie cookie1 = new Cookie("lisi","18");
	response.addCookie(cookie1 );

4、cookie的有效期,默认情况下,关闭浏览器,cookie就没有了 —》针对没有设置cooike有效期

expiry:有效
//正值:表示在这个数字过后,cookie将会失效。默认时间是秒
//负值:关闭浏览器。那么cookie就失效,默认值是-1

5、设置有效期

cookie.setMaxAge(606024*7);

6、赋值新的值

//cookie.setValue(newValue);

7、用于指定只有请求了指定的域名,才会带上该cookie

//cookie.setDomain(".tao.com");

8、只有访问该域名下的CookieServlet01的这个地址路径才会带cookie

cookie.setPath("/CookieServlet01");

9、显示最近访问时间

@WebServlet("/CookieServletTest")
public class CookieServletTest extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	response.setContentType("text/html;charset=UTF-8");
	//获取提交过来的数据
	String userName = request.getParameter("userName");
	String password = request.getParameter("password");
	if("admin".equals(userName) && "123".equals(password)) {
		//获取cookie   last  -- time
		Cookie[] cookies = request.getCookies();
		//从数组里面找出需要的cookie  。CookieUtil.findCookie此为工具类
		Cookie cookie = CookieUtil.findCookie(cookies, "last");
		
		//第一次登录没有cookie
		if(cookie == null) {
			//代表当前系统时间 System.currentTimeMillis()
			Cookie c = new Cookie("last",System.currentTimeMillis()+"");
			//设置cookie有效期
			c.setMaxAge(60*60);
			response.addCookie(c);
			response.getWriter().write("欢迎您!"+userName);
		}else {
			//1、去以前的cookie第二次登录,有cookie
			long lastTime = Long.parseLong(cookie.getValue());
			//2、输出到界面
			response.getWriter().write("欢迎您!"+userName+",上次来访时间是:"+new Date(lastTime));
			//3、重置登录时间
			cookie.setValue(System.currentTimeMillis()+"");
			response.addCookie(cookie);
		}
		
		
	}else {
		response.getWriter().write("登录失败!");
	}
	
	

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

}

此为工具类

public class CookieUtil {

/**
 * 从一组cookie数组中找到我们需要的cookie对象
 * @param cookies
 * @param name
 * @return
 */
public static Cookie findCookie(Cookie[] cookies, String name) {
	if(cookies != null) {
		for (Cookie c : cookies) {
			if(name.equals(c.getName())) {
				return c;
			}
			
		}
	}
	return null;
	
}

}

cookie会保存在客户端,所以有安全隐患,大小和个数限制----解决这个问题出现session

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值