对于httpsession与cookie的理解

        由于http协议的无状态,无连接的特性,使得不能在服务器端保存客户端传输的状态信息。因此web server引入了session的概念,通过一定方式来存储客户端传输过来的状态信息。

       一   session是由web容器创建的,存储在服务器端,并且每一个session有自己独特的标识,session有一定的存活时间,默认为30分钟,当然也可以自己手动来设置session的最大间隔时间。session可以通过三种方式销毁:1.超时的时候,服务器会将session自动销毁   2.手动调用session的invalidate方法session.invalidate();  3.重启服务器或者终止

       一般情况下,服务器会在一定时间内(默认30分钟)保存这个 Session,过了时间限制,就会销毁这个Session。在销毁之前,程序员可以将用户的一些数据以Key和Value的形式暂时存放在这个 Session中。当然,也有使用数据库将这个Session序列化后保存起来的,这样的好处是没了时间的限制,坏处是随着时间的增加,这个数据 库会急速膨胀,特别是访问量增加的时候。一般还是采取前一种方式,以减轻服务器压力。

        session实现会话跟踪机制的三种方式:1.cookie   2.ssl  session  3.rewrite url(重写url),这里重点介绍cookie会话跟踪机制

         cookie是存在浏览器端的文本信息,当浏览器第一次向服务器发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的Session。

        当然cookie也有销毁时间,一般默认为浏览器关闭的时候,cookie随着销毁,当下次再打开浏览器,发送请求时,服务器从中找不到对应的session id,因此便重新创建一个session和session id。cookie也可以通过手动进行创建。

        如何手动创建一个cookie,并返回给客户端浏览器?
              1.创建一个Cookie
               Cookie c=new Cookie("userName","andy");
              2.设置cookie的参数
                c.setMaxAge(60*60*24*90);
              3.发送给浏览器
                response.addCookie(c);
              4.如何获得cooke
                Cookie[] request.getCookies();

    

       


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值