Servlet

Servlet

Cookie

​ Cookie(曲奇),是一种在客户端存储数据的缓存技术,当用户通过浏览器访问Web服务器时,服务器会给客户端发送一些信息,这些信息会保存在Cookie中。这样,当浏览器再次访问服务器时,会在请求头中将Cookie发送给服务器,方便服务器对浏览器做出正确的响应。 原理是通过服务器将数据响应到客户端时,将数据存储到客户端的本地文件中。
Cookie的工作原理

首先浏览器向服务器发起请求;
服务器就会根据当前会话生成一个Cookie对象(默认保存会话ID),并且把数据保存在该对象内;
然后把该Cookie对象放在响应头,一并发送回客户端浏览器;
浏览器接收服务器响应后,将Cookie保存在浏览器端;
当下一次浏览器再次访问那个服务器,就会把这个Cookie放在请求头内一并发给服务器。
服务端从请求头中获取Cookie信息,并作出相应的处理

Cookie使用

创建并发送Cookie

//创建cookie
Cookie c = new Cookie("name","softeem");
//设置cookie的有效时间,单位是秒(默认的有效期跟session一致)
c.setMaxAge(60*60*24*7);//一周
//		设置cookie的作用域(域名:允许其他那些不同的项目访问当前cookie)
//		c.setDomain("www.softeem.top");
c.setDomain("127.0.0.1");
//设置允许当前服务器下的那些路径允许访问当前cookie
c.setPath("*");
c.setPath("sss");

Cookie c2 = new Cookie("password","123456");
c2.setMaxAge(60*60*24);

//通过response对象将cookie信息发送到客户端
response.addCookie(c);
response.addCookie(c2);
response.sendRedirect("result.jsp");

读取Cookie

//从request对象中获取所有的cookie信息
Cookie[] cookies = request.getCookies();
for(Cookie c:cookies){
    String name = c.getName();
    String value = c.getValue();
    out.println(name+"-->"+value+"<br>");
}

Cookie实例(记住账号)

创建并发送cookie

//将用户信息转码为json数据
String json = JSON.toJSONString(user);
//对数据进行http编码(Cookie中不允许存储中文)
json = URLEncoder.encode(json, "utf-8");
//记住密码
Cookie c = new Cookie("user", json);
//设置有效期
c.setMaxAge(60*60*24*365); 
//将cookie信息加入到response对象中
response.addCookie(c);

读取并使用cookie

//获取所有cookie集合
Cookie[] cookies = request.getCookies();
String json = null;
if(cookies != null){
    for(Cookie c:cookies){
        //判断当前读取的cookie对象name是否为user
        if(Objects.equals(c.getName(), "user")){
            //获取value
            json = c.getValue();
            break;
        }
    }
}
//当获取的json数据不为null是,对数据解码并解析
if(Objects.nonNull(json)){
    //将http编码之后的内容解码为正常的json字符串
    json = URLDecoder.decode(json, "utf-8");
    //通过json插件将json字符串解析为用户对象
    User user = JSON.parseObject(json, User.class);
    //将用户存储到pageContext
    pageContext.setAttribute("user", user);
}

session和cookie的区别

    cookie数据存放在客户的浏览器上,session数据放在服务器上。
    从安全角度来看存储在服务端的数据相对存储在客户端的数据更安全,因此安全方面session会高于cookie。
    session会占用服务器内存空间,在大量客户端访问服务器时session数会随之增多,因此如果存储大量数据到session中将会直接影响服务器性能;而cookie存储在客户端,可以通过cookie分担session的压力。
    单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
    可以考虑将登陆信息等重要信息存放到session,其他信息如果需要保留(比如浏览记录信息,购物车等缓存数据),可以放在cookie中。

localStorage&sessionStorage(web前端:JS)

setItem(key,value)
getItem(key)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值