Cookie和Session

Cookie和Session

会话

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

有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学,曾经来过,称之为有状态会话;
(2)保存会话得两种技术
1.cookie 客户端技术

服务端给客户端一个 信件,客户端下次访问服务端带上信件就可以了;

2.session 服务端技术,利用这个技术,可以保存用户的会话信息? 我们可以把信息或者数据放在Session中!

服务器登记你来过了,下次你来的时候我来匹配你;

Cookie

(1)概念
Cookie 是存储在客户机的文本文件,它们保存了大量轨迹信息。在 Servlet 技术基础上,JSP 显然能够提供对 HTTP cookie 的支持。
(2)步骤

  • 服务器脚本发送一系列 cookie 至浏览器。比如名字,年龄,ID 号码等等。
  • 浏览器在本地机中存储这些信息,以备不时之需。
  • 当下一次浏览器发送任何请求至服务器时,它会同时将这些 cookie 信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情。
    (3)方法举例
1	public void setDomain(String pattern)
//设置 cookie 的域名,比如 runoob.com
2	public String getDomain()
//获取 cookie 的域名,比如 runoob.com
3	public void setMaxAge(int expiry)
//设置 cookie 有效期,以秒为单位,默认有效期为当前session的存活时间
4	public int getMaxAge()
//获取 cookie 有效期,以秒为单位,默认为-1 ,表明cookie会活到浏览器关闭为止
5	public String getName()
//返回 cookie 的名称,名称创建后将不能被修改
6	public void setValue(String newValue)
//设置 cookie 的值
7	public String getValue()
//获取cookie的值
8	public void setPath(String uri)
//设置 cookie 的路径,默认为当前页面目录下的所有 URL,还有此目录下的所有子目录
9	public String getPath()
//获取 cookie 的路径
10	public void setSecure(boolean flag)
//指明 cookie 是否要加密传输
11	public void setComment(String purpose)
//设置注释描述 cookie 的目的。当浏览器将 cookie 展现给用户时,注释将会变得非常有用
12	public String getComment()
//返回描述 cookie 目的的注释,若没有则返回 null

(4)使用JSP设置Cookie
使用 JSP 设置 cookie 包含三个步骤:
1.创建一个 cookie 对象

Cookie cookie = new Cookie("key","value");

2.设置有效期

//调用 setMaxAge() 函数表明 cookie 在多长时间(以秒为单位)内有效。下面的操作将有效期设为了 24 小时。
cookie.setMaxAge(60*60*24); 

3.将 cookie 发送至 HTTP 响应头中

//调用 response.addCookie() 函数来向 HTTP 响应头中添加 cookie。
response.addCookie(cookie);

(5)如何删除Cookie
1.不设置有效期,关闭浏览器自动失效
2.设置有效时间为0

Session

(1)概念

  • 服务器会给每一个用户(浏览器)创建一个Seesion对象;
  • 一个Seesion独占一个浏览器,只要浏览器没有关闭,这个Session就存在;
  • 用户登录之后,整个网站它都可以访问!–> 保存用户的信息;保存购物车的信息……
  • JSP利用servlet提供的HttpSession接口来识别一个用户,存储这个用户的所有访问信息。
    (2)Cookie和Session的区别
  • Cookie是把用户的数据写给用户的浏览器,浏览器保存 (可以保存多个)
  • Session把用户的数据写到用户独占Session中,服务器端保存 (保存重要的信息,减少服务器资源的浪费)
  • Session对象由服务创建;
    (3)Session的方法
1	public Object getAttribute(String name)
//返回session对象中与指定名称绑定的对象,如果不存在则返回null
2	public Enumeration getAttributeNames()
//返回session对象中所有的对象名称
3	public long getCreationTime()
//返回session对象被创建的时间, 以毫秒为单位,从1970年1月1号凌晨开始算起
4	public String getId()
//返回session对象的ID
5	public long getLastAccessedTime()
//返回客户端最后访问的时间,以毫秒为单位,从1970年1月1号凌晨开始算起
6	public int getMaxInactiveInterval()
//返回最大时间间隔,以秒为单位,servlet 容器将会在这段时间内保持会话打开
7	public void invalidate()
//将session无效化,解绑任何与该session绑定的对象
8	public boolean isNew()
//返回是否为一个新的客户端,或者客户端是否拒绝加入session
9	public void removeAttribute(String name)
//移除session中指定名称的对象
10	public void setAttribute(String name, Object value) 
//使用指定的名称和值来产生一个对象并绑定到session中
11	public void setMaxInactiveInterval(int interval)
//用来指定时间,以秒为单位,servlet容器将会在这段时间内保持会话有效

(4)举例

public class SessionDemo1 extends HttpServlet {
    @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("name","zhangsan");
        //获取session的ID
        String id = session.getId();

        //判断Session是不是新创建
        if(session.isNew()){
            resp.getWriter().write("session创建成功");
        }else {
            resp.getWriter().write("session创建失败");
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王妖怪2109

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值