栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

HttpSession(会话)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HttpSession(会话)

文章目录
  • 一、Cookie
    • 1.1 介绍
    • 1.2 方法
    • 1.3 浏览器cookie
    • 1.4 练习
  • 二、Session(重点)
    • 2.1 介绍
    • 2.2 session与cookie区别
    • 2.3 方法
    • 2.4 会话自动过期:web.xml配置
    • 2.5 练习


学习视频来自于:秦疆(遇见狂神说)Bilibili地址
他的自学网站:kuangstudy

我们缺乏的不是知识,而是学而不厌的态度


一、Cookie 1.1 介绍

Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。

1.2 方法
Cookie[] cookies = req.getCookies(); //获得Cookie
cookie.getName(); //获得cookie中的key
cookie.getValue(); //获得cookie中的vlaue
new Cookie("lastLoginTime", System.currentTimeMillis()+""); //新建一个cookie
cookie.setMaxAge(24*60*60); //设置cookie的有效期
resp.addCookie(cookie); //响应给客户端一个cookie
1.3 浏览器cookie

一个网站cookie是否存在上限

  1. 一个Cookie只能保存一个信息。
  2. 一个web站点可以给浏览器发送多个cookie,最多存放20个cookie。
  3. Cookie大小有限制4kb。
  4. 300个cookie浏览器上限
    删除Cookie
  5. 不设置有效期,关闭浏览器,自动失效。
  6. 设置有效期时间为 0 。
    编码解码
    使用cookie存取中文出现乱码,存入前编码,取出解码。
URLEncoder.encode("秦疆","utf-8")
URLDecoder.decode(cookie.getValue(),"UTF-8")
1.4 练习

记录用户上一次登录时间

// 解决页面中文乱码
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
// 获取向页面发送数据的对象
PrintWriter out = resp.getWriter();
// 获取浏览器上传cookie
Cookie[] cookies = req.getCookies();
// 判断cookies不为null
if (cookies != null) {
    // 找到自己需要的cookie
    for (int i = 0; i < cookies.length; i++) {
        String name = cookies[i].getName();
        if (name.equals("time")) {
            // 获取到上一次的时间
            String datetime = cookies[i].getValue();
            // 处理格式
            SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
            String format1 = format.format(Long.parseLong(datetime));
            // 页面打印
            out.println("上一次的登陆时间:" + format1);
        }
    }
}
// 创建cookie,写入当前时间
Cookie cookie = new Cookie("time", String.valueOf(System.currentTimeMillis()));
// 设置cookie保存时间
cookie.setMaxAge(24 * 60 * 60);
// 发送到浏览器
resp.addCookie(cookie);
}
二、Session(重点) 2.1 介绍

Session对象存储特定用户会话所需的属性及配置信息。当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。

2.2 session与cookie区别
  1. Cookie是把用户的数据写给用户的浏览器,浏览器保存 (可以保存多个)。
  2. Session把用户的数据写到用户独占Session中,服务器端保存 (保存重要的信息,减少服务器资源的浪费)。
  3. Session对象由服务创建。
  4. Session本质是服务器创建对象,通过Cookie将SessionID传递到浏览器,用户每次访问携带SessionID,这样Session始终不变。
2.3 方法
HttpSession session = req.getSession();//得到Session
setAttribute("name",new Person("admin",123));//给Session中存东西
session.getId();//获取Session的ID
session.isNew()//判断Session是不是新创建
session.getAttribute("name");//得到Session中存的数据
session.removeAttribute("name");//删除Session中指定数据
session.invalidate();//手动注销Session
2.4 会话自动过期:web.xml配置


    
    15

2.5 练习

通过不同浏览器访问,查看不同会话的SessionID

// 解决乱码
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
// 获取Session
HttpSession session = req.getSession();
// 给Session存入信息
session.setAttribute("name","天宇");
// 获取Session的ID
String id = session.getId();
// 向页面输出信息
PrintWriter writer = resp.getWriter();
// 判断Session是不是新创建的
if(session.isNew()){
    writer.write("session创建成功,id:"+id + "name:"+session.getAttribute("name"));
}else {
   writer.write("session已服务器中存在,id:"+id + "name:"+session.getAttribute("name"));
}

清空session

HttpSession session = req.getSession();
session.invalidate();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号