JavaWeb09_Cookie && Session

7、Cookie 、Session

7.1 会话

会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话

有状态会话:

一个网站,怎么证明你来过?

  • 1.服务端给客户端一个cookie,客户端下次访问服务端带上cookie就可以了,
  • 2.服务器等你你来过了,下次来匹配就好了Session

7.2保存会话的两种技术

cookie(了解,一般使用session)

  • 客户端技术(响应,请求)
  • 一般会保存在本地的 用户目录下 appdata
  • 一个网站cookie存在上限

session(重点)

  • 服务器技术,利用这个技术,还可以保存用户的会话信息到Session中(在tomcat服务器),

常见:网站登入后,接下来指定的一段时间内,可以不用再次登入

7.4Session(重点)

什么是session:

  • 服务器会给每个用户(浏览器)创建一个Session对象
  • 一个Session独占一个浏览器,只要浏览器没关闭,这个Session对象就会存在

在这里插入图片描述

Session和Cookie的区别:
  • Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
  • Session把用户的数据写到用户独占Session中,服务端保存(保存重要信息,减少服务器资源浪费)
  • Session对象由服务器产生
  • 用户拿到cookie中的sessionid,底层原理和Cookie相同,只是数据存在了服务器中
使用场景:
  • 保存一个登入用户的信息
  • 购物车信息
  • 在整个网站中经常会使用的数据,我们将它保存在Session中
  • 由于服务器关闭,session会自动失效,因此一般是通过流来保存到文件里
使用session
  • 解决乱码
  • 得到Session
  • 存入数据
  • 获取Session id
  • session的源来
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    //解决乱码
    req.setCharacterEncoding("utf-8");
    resp.setCharacterEncoding("utf-8");
    resp.setContentType("text/html;charset=utf-8");

    //得到session
    HttpSession session = req.getSession();

    //给session存入数据
    session.setAttribute("person",new Person("王叔",21));

    //获取sessoin的id
    String id = session.getId();

    //判断session是不是新创建的
    if(session.isNew()){
        resp.getWriter().print("session创建成功,ID:"+id);
    }
    else{
        resp.getWriter().print("session已创建,ID:"+id);
        System.out.println("session已创建,ID:"+id);
    }

    //session在浏览器访问服务器时 创建是做了什么?
    //        Cookie cookie = new Cookie("JSESSIONID",id);
    //        resp.addCookie(cookie);

}
  • 获取session信息
//得到session
HttpSession session = req.getSession();

//获取session的信息
Person person = (Person) session.getAttribute("person");

resp.getWriter().print(person.toString());
System.out.println(person.toString());


  • 删除session元素,或注销session
//删除session内的元素
session.removeAttribute("person");
//注销session后,服务器会立刻新建一个
session.invalidate();
  • session失效时间
<!--  设置session默认的失效时间-->
<session-config>
    <!--    15分钟后session自动失效,换个新的-->
    <session-timeout>15</session-timeout>
</session-config>
理解图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值