Cookie在Servlet中的实现

简介

通常会话都是由一组请求与响应组成的,是围绕一件相关事情所进行的请求与响应.所以这些请求与相应之间一定是需要有数据传递的,需要进行会话跟踪,cookie就是一种会话状态跟踪技术

Cookie是由服务器生成,保存在客户端的一种信息载体,其中存放着用户访问该站点的会话状态信息

用户在提交第一次请求后,服务器生成cookie,并将其封装到响应头中,以响应形式发送给客户端.客户端接收到响应后,将cookie保存到客户端.当客户端再次发送同类请求后,在请求中携带保存在客户端的cookie数据,发送到 服务端,服务器会对会话进行跟踪.

cookie是以键值对(key-value:都是String)形式保存的

所谓同类请求,资源路径相同的请求

实现

package servlet;

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

@WebServlet("/cookie")
public class CookieServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Cookie cookie=new Cookie("aaa","bbbccc");
        //指定cookie绑定路径,必须加上项目名称,/对所有路径适用,或者自己精确
        cookie.setPath(req.getContextPath()+"/");
        //设置cookie的有效期,整型,单位为秒
        //该值大于0,将cookie放到客户端硬盘
        //小于0,放到缓存
        //等于0,表示生成立马失效
        cookie.setMaxAge(60*60);//一小时
        resp.addCookie(cookie);


        //获取请求的cookie
        Cookie[] cookies = req.getCookies();
        for(Cookie cookie1:cookies){
            System.out.println(cookie1.getName()+"="+cookie1.getValue());
        }
    }

在这里插入图片描述

根据名字获取指定的Cookie

将得到的Cookie数组转成Map,根据Map的特性来完成

//根据指定名字获取Cookie,将Cookie数组放到Map中
        Map<String,Cookie> cookieMap=new HashMap<String,Cookie>();
        for(Cookie cookie1:cookies){
            cookieMap.put(cookie1.getName(),cookie1);
        }
        if(cookieMap.containsKey("cjl")){
            Cookie cookie1=(Cookie)cookieMap.get("cjl");
            System.out.println(cookie1.getValue());
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值