您的位置:首页 > 其它

5分钟学会Cookie和Session技术(web会话技术,属于web核心必会知识)

2019-01-24 16:29 435 查看
版权声明:转载需要经过本人同意 https://blog.csdn.net/qq_35499112/article/details/86626900

目录

 

一、什么是会话技术?

二、cookie和session是什么?

三、cookie如何创建以及常用方法

1.创建cookie对象

2.设置cookie的生存时间setMaxAge(秒)

3.设置cookie的访问路径setPath(路径)

4设置cookie的访问域名setDomain(域名)可以在不同服务器之间进行访问。

5,获取cookie

四、session对象的创建以及原理

1.服务器如何保证session唯一的原理:

2.获取HttpSession对象:

3. 使用HttpSession对象:

4. 重要细节:

一、什么是会话技术?

从打开浏览器向服务器发出请求,到关闭浏览器,可以看作是一次会话。一次会话可以包含多个请求和响应。一次会话的过程只能对应一个用户。

二、cookie和session是什么?

cookie是客户端(浏览器)技术,主要用来保存数据到客户端浏览器。比如:用户名和密码。

session是服务器技术,主要保存数据到服务器。例如,购物网站的购物车。

三、cookie如何创建以及常用方法

1.创建cookie对象

Cookie cookie=new Cookie(String a,String b);

第一个参数是:设置的cookie的名字,第二个参数是cookie的值。

response.addCookie(cookie);响应cookie到浏览器。

注意:tomcat版本有关系

         tomcat7.x : cookie允许cookie的值有空格等字符,不允许有中文

        tomcat8.x : cookie的值不允许有空格,有逗号,有分号等,允许有中文

2.设置cookie的生存时间setMaxAge(秒)

参数默认的是负数的秒值,浏览器关闭时,cookie会自动失效。

如果参数改为正数,则浏览器关闭时。cookie会被保存到本地硬盘中,正数是多少就保存多少秒。

如果参数是0,就是手动清除cookie。

3.设置cookie的访问路径setPath(路径)

如果,setPath("/")意思是只要路径包含“/”就可以访问到cookie但是 只能在同一个服务器中才能访问。

4设置cookie的访问域名setDomain(域名)可以在不同服务器之间进行访问。

例如:setDomain(“baidu.com”)则所有访问路径里包含baidu.com的路径,都可以访问到。

5,获取cookie

 Cookie[]  cookies = request.getCookies();

获取到的是一个数组,可以通过cookies.getName()得到cookie的key值,通过,cookies.getValue获取到value值。

cookie原理详解

 

四、session对象的创建以及原理

1.服务器如何保证session唯一的原理:

当浏览器第一次请求服务器时,服务器响应浏览器,服务器会自动生成一个名字是的JESSIONID的cookie,并生成一串唯一的id作为cookie的值,返回到浏览器。当浏览器再次,请求服务器时,会在请求中携带有JESSIONID的cookie,服务器根据cookie就知道是同一个用户在访问。

2.获取HttpSession对象:

            HttpSession session = request.getSession();

3. 使用HttpSession对象:

①根据设置的name获取session的值
Object    getAttribute(String name)  

②设置session
 void     setAttribute(String name, Object value)

③删除session
  void        removeAttribute(String name)

4. 重要细节:

        1. 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
            * 默认情况下。不是。
            * 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
                 Cookie c = new Cookie("JSESSIONID",session.getId());
                 c.setMaxAge(60*60);
                 response.addCookie(c);

        2. 客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
            * 不是同一个,但是要确保数据不丢失。tomcat自动完成以下工作
                * session的钝化:
                    * 在服务器正常关闭之前,将session对象系列化到硬盘上
                * session的活化:
                    * 在服务器启动后,将session文件转化为内存中的session对象即可。
                
        3. session什么时候被销毁?
            1. 服务器关闭
            2. session对象调用invalidate() 。
            3. session默认失效时间 30分钟
                选择性配置修改    
                <session-config>
                    <session-timeout>30</session-timeout>
                </session-config>

     5. session的特点
         1. session用于存储一次会话的多次请求的数据,存在服务器端
         2. session可以存储任意类型,任意大小的数据

        * session与Cookie的区别:
            1. session存储数据在服务器端,Cookie在客户端
            2. session没有数据大小限制,Cookie有
            3. session数据安全,Cookie相对于不安全

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: