Java大数据之路--Cookie

目录

会话技术COOKIE概述

Cookie实现

 


会话技术COOKIE概述

  • 概述

在浏览器和服务器建立链接之后,浏览器和服务器为了完成某一功能,浏览器发送一次或多次请求,服务器做出一次或多次响应,在浏览器关闭之前,所有的请求和响应构成了一次会话。

  • HTTP协议特点

HTTP无状态协议:当前请求和上一次请求之间没有任何联系。

  • 使用会话技术的原因

为了能够在多次请求响应之间共享数据,所以提出会话技术。

  • cookie实现原理

服务器会在第一次响应的时候,通过set-cookie响应头,将需要使用的数据发送到浏览器,浏览器会自动将其作为cookie保存。在下一次请求时,会自动携带一个cookie请求头,其中包含的内容就是浏览器中的cookie信息。

  • cookie的特点

cookie技术是一门浏览器端的技术,数据保存在浏览器端。保存安全性要求较低的数据。而存储时间较长的数据。

Cookie实现

  • 创建cookie
Cookie cookie = new Cookie(String name,String value);
  • 设置cookie的生命时长

cookie的生命时长可以设置也可以不设置。如果不设置则当前cookie的生命时长,cookie为一个会话级别的cookie,关闭浏览器当前cookie就会销毁。如果设置生命时长,则达到对应时间之后,会有浏览器自动销毁。cookie.setMaxAge(秒)

  • 设置有效路径

如果不设置有效路径,则当前cookie的有效路径为资源名称部分,在这一部分中可以共享cookie。如果设置有效路径,且为整个web应用,那么在整个web应用的虚拟路径级别之下都可以获取当前cookie,cookie.setPath(request.getContextPath()+"/");

  • 发送cookie
response.addCookie(Cookie)
  •  获取cookie
request.getCookies(); ---Cookie[]
  • 删除cookie

发送一个与要删除的cookie完全相同的cookie,并且设置它的生命时长为0,则这个cookie就可以被销毁。完全相同的cookie,需要保证name+path+domain三者完成一致。

  • 获取cookie的名字
cookie.getName()
  • 获取cookie的值
cookie.getValue()
  • 案例通过cookie实现,页面上次访问时间:
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//Cookie类实现返回上次访问页面的时间
public class CookieDemo2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//乱码处理
response.setContentType("text/html;charset=utf-8");
Date date = new Date();
String time = date.toLocaleString();
//1.创建cookie
Cookie cookie = new Cookie("time",time);
//2.发送cookie--通过response对象发送
response.addCookie(cookie);
//3.获取cookie
Cookie[] cs = request.getCookies();
//遍历数组
Cookie timeC = null;
if(cs !=null){//初次访问页面时,没有任何cookie,所以会产生空指针异常,应该排除这种情况
for(Cookie c:cs){
if("time".equals(c.getName())){//从数组中获取名称为time的cookie
timeC = c;//当前cookie对象范围过小,无法在外侧代码操作,可以赋值给更大范围的变量
去使用。
} } }
//4.打印结果
if(timeC == null){
response.getWriter().write("您是初次访问本页面");
}else{
response.getWriter().write("上次访问页面的时间为:"+timeC.getValue());
} }
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
} }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值