会话

会话技术

Cookie

session

会话技术

1. 会话:一次会话中包含多次请求和响应
     一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断
     开为止
2. 功能:在一次会话的范围内的多次请求间,共享数据
3. 3.方式:
	1.客户端会话技术:Cookie
	2.服务器端会话技术:Session

Cookie

 客户端会话技术
  使用步骤:
  1.创建Cookie对象,绑定数据
     New Cookie(String name,String value)
  2.发送Cookie对象
     Response.addCookie(Cookie cookie)
  3.获取Cookie对象,拿到数据
     Cookie[]  request.getCookies()

     发送的时侯也就是响应
        当客户端请求后,服务端会设置好cookie响应给客户端,
         Set-cookie:name=value   
         浏览器遇到set-cookie响应头,会自动将它们
         保存在客户端,当下个请求时,会携带该cookie去访问服务端,
        cookie:name=value  请求头里
  4.实现原理
         基于响应头set-cookie和请求头cooike实现
   5.细节
         1.一次可以发送多个cookie,可以创建多个cookie对象,使用response调
           用发送方法发送cookie即可
         2.cookie在浏览器中保存多长时间
            1.默认情况下,当浏览器关闭后,cookie销毁,默认保存在浏览器的内
              存中
            2.持久化存储
                setMaxAge(int seconds)    单位 秒
                1.正数:将cookie数据写到硬盘的文件中,cookie存活的时间,
                            过了存活时间后自动删除cookie文件,且在存话期间,浏览器关闭不会影响cookie
                2.负数:默认值 ,当浏览器关闭后,cookie就会被销毁
                3.零:删除cookie信息
          3.cookie是否支持中文存储
            1.在tomcat8之前cookie中不能直接存储中文数据 
              需要将中文数据转码  一般采用uRL编码
            2.在这之后,支持中文数据存储,但对于特殊字符还是不支持,建议使
               用URL编码存储,URL解析
               例如:
                 编码: String URLEncoder.encode(String,”utf-8”);
                 解码: String URLDecoder.decode(String,”utf-8”)
                 这两个类是java.net里面的
           4.cookie共享问题
               1.假设在一个tomcat服务器中,部署了多个web项目,那么在这些
                 web项目中cookie能不能共享
                 *.默认情况下cookie是不能共享的
                 *.setPath(String path): 设置cookie的获取范围,默认情况下,设置
                   当前的虚拟目录(项目的别名),
                 *.想要扩大范围,可以将虚拟目录改为“/”,使当前服务器项目都可以
                   访问
               2.在不同的服务器cookie共享问题
                  *.setDomain(String path):如果设置一级域名相同,那么多个服务  
                    器 之间cookie可以共享
                  *.setDomain(“.baidu.com”),那么tieba.baidu.com和
                    news.baidu.com中的cookie可以共享
           5.cookie特点
               1.cookie存储数据在客户端浏览器
               2.浏览器对于单个cookie的大小有限制(4kb),以及 多同一个域名
                 下的总cookie数量也有限制(20个以内)
                
              作用:
              1.cookie一般用于存储少量的不太铭感的数据
              2.在不登陆的情况下,完成服务器对客户端的身份验证

session

服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器
端的对象中,HTTPSession

获取HTTPSession对象: HTTPSession session=request.getSession();

使用HTTPSession对象:
      Object getAttribute(String name)
      Void setAttribute(String name,Object value)
      Void removeAttribute(String name
      
 原理:session的实现是依赖于cookie的
    
    当第一次请求时,获取session时,没有cookie,会在内存中创建一个新的
    session ,并且会赋予一个唯一的id,
    响应的时候,使用的是set-cookie响应头,是在set-
    cookie:JSESSIONID=session的 id。键值对并且存到浏览器里面
    当在次请求时,会携带这个cookie头,是以以一个请求头cookie来携带的
     cookie:JSESSIONID=session的 id  服务器会自动获取这么一个cookie,并
     且会在内存中去查找有没有这么一个session对象

  细节:
     1.当客户端关闭后,服务器不关闭,两次获取的session是同一个吗
         *.默认情况下不是同一个
         我们可以自己设置, 首先创建一个cookie ,键为JSESSIONID, 
         值为session.getid,
         设置它的存活时间,然后使用response发送响应
     2.客户端不关闭,服务器关闭后,两次获取的session是同一个吗
        *.不是同一个,分配地址是随机性的,有可能相等
        session的钝化:
           在服务器正常关闭前,将session对象序列化到硬盘上
        session的活话:
           在服务器启动后,将session文件转换为内存中的session对象即可
           *.本地的tomcat已经帮我们做好了钝化和活话的工作,它存放在服务器
             的安装目录的work目录下
           *.IEDA只能够顿化,不能活化,关闭服务器会保存数据,重启服务器会
              删除数据,并且重新创建
     3. session的销毁
          1.服务器关闭
          2.session对象调用invalidate();
          3. session默认失效时间30分钟
               可以选择修改配置,在web.xml文件中
               <session-config>
			        <session-timeout>30</session-timeout> 
			   </session-config>
     4.session的特点:
          1.session用于存储一次会话的多次请求的数据,存在服务器 
          2.session可以存储任意类型,任意大小
     5.session与cookie区别
         1.一个在服务器端,一个在客户端
         2.cookie数据有大小限制,session没有
         3.session数据安全,cookie相对于不太安全
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值