• jsp会话(Cookie和session)


    从客户端打开浏览器开始访问服务器,到服务器给客户端响应数据,客户端继续访问服务器,直到客户端关闭浏览器,整个过程称为一次客户端和服务器之间的会话
    在这个会话的过程中我们可以保存用户在整个会话过程中的数据,不管用户发起了多少次请求,数据都可以保存在其中,在用户的任何一次请求中,都可以获取到前面已经保存的数据。要完成这个功能,就需要使用sun公司给我们提供的Cookie对象或者Session对象
    Cookie对象主要是给客户端写数据,数据需要保存在客户端,Session对象主要是在服务器端创建和当前用户相关的一个容器,专门为每个不同的用户保存数据
    问:目前我们对于浏览器和服务器的交互有了一定的了解,以及请求处理,响应处理有一定地了解,但是HTTP协议是没有记忆功能的,一次请求结束后,相关数据会销毁,如果第二次需要使用同样的数据,怒可能让用户再写一次
    解决:web初期使用cookie技术,把我们请求需要共享的数据储存在浏览器端,可以避免用户的重复书写,但是只适合少量数据,不安全
    session
    Session:会话技术,从客户端打开浏览器访问服务器,到最后客户端关闭浏览器,整个过程称为一次会话。
    在这个会话的过程中,服务器会针对每个客户端创建一个和客户端相关的唯一的临时容器,这个容器用于保存当前客户的所有信息。
    并且在给客户端响应数据的时候,会给客户端回送一个唯一标识当前客户端相关的临时容器的id,在客户端下次访问服务器的时候,会携带这个id信息(cookie),在服务器端就可以找到和客户端相关的临时容器, 继续使用这个临时容器。
    如果获取这个Session对象,为每个客户端服务:在servlet可以通过Request对象获取和当前客户端相关的唯一Session对象。在jsp中可以直接使用

     sessionId
    每个session都有一个唯一的sessionid,
    session.getId();可以获取session的id
    session的生命周期
    Session称为服务器端用于保存用户的信息的容器。它主要针对浏览器而言。
    Session对象到底什么时候创建的:
    Session对象的创建时间是:程序中第一次调用getSession方法时,这时web服务器会创建Session对象。并把这个Session对象返回。
    Session对象一旦创建好了就为后续用户的所有操作服务,主要是保存用户的一连串的操作的信息。只要用户一直在操作,那么这个Session对象就会一直存在。
    Session的销毁时间
    一般在web服务器中Session有默认的存活时间,一般是半小时。如果在30分钟内,用户一直没有做任何操作,这时服务器会当前这个Session自动的销毁。
    不正常关闭服务器。正常关闭服务器,服务器会把这个Session对象使用io流中的序列化技术保存在tomcat/work目录下
    在Servlet程序中手动的销毁Session对象。session.invalidate();
    Session的存活时间可以在web.xml中配置也可以通过方法指定:
    setMaxInactiveInterval(int interval); //单位是秒,一般是在存储值的时候进行设置
    注意:这里的时间是以分钟为单位

            30

    会话的清除
    设置会话失效:session.invalidate();
    移除会话的一个属性:session.removeAttribute(key);
    一次完整会话例
    //在servlet中获取session对象
    HttpSession session = request.getSession();
    //设置session的存储时间
    session.setMaxInactiveInterval(3);//3是秒
    //把user数据放入作用域中
    session.setAttribute("users",user);
    //让session的作用域强制失效
    session.invalidate();
    session会话的作用域,从浏览器打开到结束
    cookie
    创建cookie:
    在javax.servlet.http 包中有 Cookie类,它拥有接收2个参数的构造方法,可以创建一个Cookie对象。
    Cookie(String name, String value) :name就是给cookie起一个名字,value是当前Cookie具体的数据。类似于一个map,通过name获取具体的值。
    使用new就可以创建出一个cookie- 服务器端
    获取cookie
    需要使用HttpServletRequest对象中的getCookies方法,会得到一个Cookie数组,这是因为一个站点可能会存放多个Cookie数据
    例如:Cookie[] cookies = request.getCookies();
    得到Cookie数组之后,判断cookies数组是否存在 cookies == null,如果cookies存在,根据cookie的name去查找指定cookie
    发送cookie
    创建好Cookie对象之后,需要使用HttpServletResponse中的addCookie方法,将Cookie对象添加到响应中,然后发给客户端。
    例如:response.addCookie(cookie); // 将cookie写到客户端
    在Cookie对象中提供了getName可以获取Cookie的key值,提供的getValue可以获取key对应的value值,同时也可以使用setValue给当前的Cookie对象设置value值。
    SetPath设置cookie可以访问资源路径
    SetMaxAge() - 设置cookie的生存时间 ,单位是秒
     

  • 相关阅读:
    Java【数组】定义与使用,什么是引用类型你知道吗
    【java爬虫】使用selenium获取某宝联盟淘口令
    ElasticSearch - 基于 “黑马旅游” 案例,实现搜索框、分页、条件过滤、附近酒店、广告置顶功能
    飞致云开源社区月度动态报告(2023年9月)
    事件捕获和时间冒泡,event.stopPropagation();event.preventDefault();和js jquery取消事件
    期货开户趋势的本质是惯性
    JavaScript面向对象:面向对象案例
    48.Java Lambda表达式
    雷军的开源情怀
    嵌入式软件有限状态机的 C 语言实现
  • 原文地址:https://blog.csdn.net/skqpp1314/article/details/127743654