cookie和session

Cookie

  1. 从请求中拿到cookie信息
  2. 服务端响应给客户端cookie
Cookie[] cookies = request.getCookies();//获得cookie
cookie.getName()//获得cookie的key
cookie.getValue();//获得cookie的值
Cookie cookie = new Cookie("lastTime",System.currentTimeMillis()+"");//新建一个cookie
cookie.setMaxAge(24*60*60);//设置cookie的有效期
response.addCookie(cookie);//响应给客户端一个cookie

cookie一般会保存在本地的 用户目录下appdata;

编码与解码

Cookie cookie = new Cookie("xxx", URLEncoder.encode("夏夏夏","utf-8"));//编码
URLDecoder.decode(cookie.getValue(),"utf-8");//解码
request.setCharacterEncoding("utf-8");
        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");

        Cookie[] cookies = request.getCookies();
        PrintWriter out = response.getWriter();
        if (cookies!=null){
            out.write("您上一次访问的时间是:");
            for (int i = 0; i < cookies.length; i++) {
                Cookie cookie =  cookies[i];
                //获取键
                if ("lastTime".equals(cookie.getName())){
                    //获取值
                    String value = cookie.getValue();
                    long l = Long.parseLong(value);
                    Date date = new Date(l);
//                    out.write(date.toLocaleString());
//                    URLDecoder.decode(cookie.getValue(),"utf-8");
                }
            }
        }else {
            out.write("这是您第一次访问!");
        }
        Cookie cookie = new Cookie("lastTime",System.currentTimeMillis()+"");
//        Cookie cookie = new Cookie("xxx", URLEncoder.encode("夏夏夏","utf-8"));
        cookie.setMaxAge(24*60*60);//设置cookie的有效期
        response.addCookie(cookie);

session

  1. 服务器会给每个用户(浏览器)创建一个session对象
  2. 一个session独占一个浏览器,只要浏览器没有关闭,这个session就一直存在;
  3. 用户登陆之后,整个网站都可以访问!
//设置编码
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");

//获取session
HttpSession session = request.getSession();

//得到session的id
String sessionId = session.getId();
System.out.println(sessionId);

//判断session是不是新创建的
if (session.isNew()){
    response.getWriter().write("session创建成功;SessionId:"+sessionId);
}else {
    response.getWriter().write("session已经存在;SessionId:"+sessionId);
}

//session在创建时做了什么
Cookie cookie = new Cookie("JSESSIONID",sessionId);
response.addCookie(cookie);

Cookie 和 Session 有什么不同?

作用范围不同,Cookie 保存在客户端(浏览器),Session 保存在服务器端。. 存取方式的不同,Cookie 只能保存 ASCII,Session 可以存任意数据类型,一般情况下我们可以在 Session 中保持一些常用变量信息,比如说 UserId 等。. 有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。.

posted @ 2022-03-20 23:22  ice204  阅读(37)  评论(0)    收藏  举报