`
come_for_dream
  • 浏览: 120285 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Java Web中cookie和session详解

阅读更多

            14年的这个时候我才刚刚开始接触Java web,在这一年中也用这个技术做了不少大大小小的项目,中间也学了几个月的云计算,自己的技术水平提升多少我想这个可以从写博客的水平反映出一个人技术水平的好坏,当然我也很感激我自己可以慢慢的养写博客的习惯,记录自己轨迹。

             这几天的面试使我觉得基础知识真的很重要,我几乎一口气看完了《疯狂java突破程序员基本功的16课》、《深入理解java虚拟机》确实收益颇丰。

         所谓合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下所以在以后的学习中要深挖技术点举一反三。

        Java web中有两个非常重要的机制就是cookie机制和session机制,虽然很基础但是很有必要深入了解一下。

 1、session和cookie的区别:

        Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。 

     session: 当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。

      以上使我搜集出来对它们的不错的解释。

 

2、cookie机制:采用的是在客户端保持状态的方案,而session机制采用的是在服务端保持状态的方案。同时我们看到由于服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助cookie机制来达到保存标识的目的。

          cookie的内容主要包括:名字、值、过期时间、路径和域。路径和域一起构成cookie的作用范围。所不设置cookie的过期时间那么就称这个cookie是会话级别的cookie,关闭浏览器cookie就消失。会话级别的cookie一般不存储在硬盘上而存储在内存里面。若设置了过期时间浏览器就会把cookie存储到硬盘上,关闭浏览器再打开,cookie会一直存在知道超过过期时间。存储在硬盘上的cookie可以被不同的浏览器所共享.

 

3、 session机制:session机制是一种服务端的机制,服务器使用一种一种类似散列表的结构(应该就是map结构了吧)

服务器首先检查这个客户端的请求里是否已经包含了一个session标识(session id)如果含有sessionid则说明以前为此客户端创建过session服务器就会把这个按照session Id把session给检索出来(如果检索不到就会重新建立一个session),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此对应的session id,session id是一个不会重复的字符串,该id会在本次响应客户端的时候传送给客户端。

 

4、保存这个session id的方式:

        a、可以采用cookie,这样就可以在交互的过程中自动的按照规则把这个表示发送给服务器。一般这个cookie的名字类似于SEEESIONID的,但是cookie可以被人为禁止。

        b、所以也经常使用一种使用一种叫做URL重写的技术,就是把sessionid直接附加在URL路径的后面。

        c、还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单添加一个隐藏的字段,在表单提交的时候就会把这个session id传递会服务器。

 

5、session和cookie的区别:

  •  cookie数据放在客户端,session数据放在服务器端。
  • cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗考虑安全性的话应该使用session。
  • session因为在服务器上保存了很多信息,当在访问量比较大的时候会增加服务器的负担,从这方面考虑应该使用cookie
  • 单个cookie的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
  • 有人建议将登录信息等重要信息放在session中,非重要的信息可以放在cookie中。

 

二、不过cookie都可以用在那些地方呢?

 

       1、可以实现自动登录的功能:

          当用户注册网站的时候我们可以把用来唯一标识用户id的cookie保存到客户端,当用户再次打开我那个站的时候会把这个id发送到服务器,检查用户是否选择自动登录,然后既可以为用户自动执行登陆操作。

 

     2、cookie的使用方法 :我们需要使用HttpServletResponse的addCookie方法把cookie插入到HTTP请求报头。我们需要使用HttpServletRequest的getCookie方法获得cookie对象的数组。

 

    3、session的创建:是在用户访问到某个程序致使它执行HttpServletSession.getSession(true)这样的语句的时候才会被创建

   4、session的销毁:

         a、程序调用HttpSession.invalidate()

         b、客户再一次放松sessionId的时间间隔超过了session的最大有效时间

         c、服务器进程被停止

再次注意关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。大部分的Session机制都使用进程中Cookie来保存Session id的,关闭浏览器后这个进程也就自动消失了,进程中的Cookie自然就消失了,那么Session id也跟着消失了,再次连接到服务器时也就无法找到原来的Session了。

       因为服务器是不会知道浏览器关闭了没有(当然,你可以在关闭的时候去通知服务器,但一般都不会这样做),所以关闭浏览器时服务器是不会删除Session的,也正是这个原因服务器才会设置一个Session失效时间的,不然服务器早晚会被撑爆的。等距离上一次使用该Session的时间达到设置的失效时间时,服务器就会认为客户端已停止活动,便会将相应的Session删除。

 

 

 5、getSession()/getSession(true)、getSession(false)的区别
  getSession()/getSession(true):当session存在时返回该session,否则新     建一个session并返回该对象
  getSession(false):当session存在时返回该session,否则不会新建           session,返回null

         

  6、将用户从系统中注销并删除所有属于他(或她)的会话
  调用logOut,将客户从Web服务器中注销,同时废弃所有与该用户相关联的会话(每个Web应用至多一个)。这个操作有可能影响到服务器上多个不同的Web应用

 

 

 

 

 

 

 

0
2
分享到:
评论
2 楼 hngmduyi 2015-03-18  
1 楼 yin_bp 2015-03-18  
感兴趣可以了解一下bboss会话共享框架,快速实现集群节点间会话共享和跨域跨应用会话共享,实现与具体容器无关,能够统计在线会话数,还能在统一监控中心管理应用会话(删除会话,查询会话数据等),参考资料:
bboss会话共享demo使用指南
bboss session共享架构及特点
bboss session共享使用方法介绍
bboss会话共享培训文档分享

相关推荐

    Cookie、Session机制详解.doc

    Cookie、Session机制详解 Cookie机制是Web程序中常用的技术,用来跟踪用户的整个会话。Cookie通过在客户端记录信息确定用户身份。Cookie机制可以弥补HTTP协议的无状态特性,使服务器可以从客户端获取用户信息,以便...

    Cookie与session机制详解

    ### Cookie与Session机制详解 #### 一、Cookie与Session的概念及区别 在Web开发中,为了保持用户的状态信息,通常会用到两种技术:Cookie和Session。这两种技术都是用来跟踪用户的浏览活动,但它们的工作原理有所...

    JAVA之cookie与session

    综上所述,Cookie 和 Session 都是 Web 开发中非常重要的技术。根据应用的具体需求,开发者可以选择最适合的技术来实现用户状态的跟踪。在实际开发过程中,合理利用 Cookie 和 Session 的特性,可以有效提升用户体验...

    Cookie与Session机制

    ### Cookie与Session机制详解 #### 一、引言 随着互联网技术的发展,用户与Web应用之间的交互变得越来越频繁。为了确保用户体验的连续性和个性化服务,Web应用需要有能力识别不同的用户并跟踪他们的活动。然而,...

    经典收藏Cookie和Session

    ### 经典收藏:Cookie与Session机制详解 #### 一、Cookie机制与Session机制的区别 在Web开发中,为了维持用户的会话状态,通常有两种常用的技术:Cookie与Session。这两种技术各有特点,适用于不同的场景。 - **...

    Cookie机制和Session机制

    #### 五、Session机制详解 - **定义**:Session机制是一种服务器端状态管理技术,服务器为每个用户会话分配一个唯一的会话ID,并在服务器内存中维护该会话的相关数据。 - **工作原理**: - 服务器为每个新会话生成...

    cookie和session

    通过Cookie与Session机制,服务器能够识别并处理用户的状态信息,从而实现更丰富的交互体验。本文将详细解析Cookie与Session的工作原理、区别及应用场景。 #### 一、Cookie与Session的基本概念 **Cookie**:是一种...

    在Java的web编程中关于session技术的使用详解

    在Java的Web编程中,Session技术扮演着至关重要的角色,它是服务器端用来跟踪用户状态的一种机制。当Web应用无法在无状态的HTTP协议中保持用户信息时,Session就显得尤为重要。下面将详细介绍Session的工作原理、...

    JAVA WEB 开发详解

    综上所述,《JAVA WEB开发详解》这本书系统地介绍了JAVA Web开发中涉及到的关键技术和实践方法,从XML的基础到Servlet和JSP的深入解析,再到实际应用中的最佳实践,为开发者提供了全面的学习指南。

    关于java应用cookie

    ### 关于Java应用Cookie知识点详解 #### 一、Cookie简介 Cookie是一种常用的技术,用于存储用户的访问信息。在Web开发中,服务器可以将少量的信息发送到客户端浏览器,并存储在客户端,这种信息就是Cookie。当...

    j2ee实验二:学习使用Session和Cookie

    通过本实验的学习,学生不仅掌握了Session和Cookie的基本概念和用法,还能够独立开发简单的Web应用。这些技能对于从事Web开发工作来说是非常宝贵的。此外,通过实践操作加深了对B/S架构的理解,为将来进一步探索复杂...

    java web开发详解源代码

    例如,使用Cookie和Session来管理用户会话,Spring Security或Apache Shiro实现应用的安全控制,EhCache或Redis实现高效的缓存机制。源代码中可能包含这些功能的实现,帮助开发者理解这些概念的实际应用。 最后,...

    Java Web_HTTP协议详解第四讲

    为了克服这个问题,后来引入了Cookie和Session机制来保持客户端和服务器之间的会话状态。 HTTP协议的主要工作流程包括以下几个步骤: 1. 客户端(通常是浏览器)发起一个HTTP请求,这个请求包含请求行、请求头和...

    cookie与session、sessionid

    #### 四、Session机制详解 ##### 4.1 Session的基本概念 Session是另一种维持用户会话状态的方法。它是在服务器端保存用户状态的一种机制,通常用于存储用户的登录状态或其他相关信息。 ##### 4.2 Session的工作...

    跨服务器session应用详解

    在Web开发中,session机制是一种至关重要的技术,它允许服务器在多个请求之间跟踪用户的状态,从而实现动态交互和个性化服务。本文将深入探讨session的工作原理,以及如何在Java Web应用程序中有效地应用session,...

    Session详解.doc

    Session机制是对Cookie机制的一种补充和发展,主要用于解决Cookie的一些限制。Session通过在服务器端维护一个与客户端相关的会话状态,而不是完全依赖客户端的Cookie。在客户端首次访问服务器时,服务器会创建一个新...

    aaaaaa.zip_cookie_cookie java_java cookie

    总结来说,Cookie在Java Web开发中扮演着不可或缺的角色,它通过简单的机制实现了客户端和服务器间的数据交互,极大地提高了用户体验。理解和熟练运用Cookie的创建、读取和管理,是每个Java Web开发者必备的技能。而...

    Jsp_Session详解.

    在Java Web应用程序中,Session机制的实现通常依赖于javax.servlet.http.HttpSession接口。开发者可以通过HttpSession对象来存储和检索用户特定的信息。例如,一个在线购物系统可以使用Session来存储用户的购物车...

    Java Web_HTTP协议详解第一讲

    为了解决这个问题,Cookie和Session机制被引入,使得服务器能够识别并跟踪用户会话。 HTTP协议的工作流程主要包括以下几个步骤: 1. 客户端发起一个HTTP请求,这个请求由一个方法(如GET、POST)、一个URL、协议...

Global site tag (gtag.js) - Google Analytics