`
come_for_dream
  • 浏览: 116560 次
  • 性别: 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会话共享培训文档分享

相关推荐

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    深入体验Java Web开发内幕

     本书适合所有Web应用的开发人员、Java程序员在工作和学习中参考阅读,也适合作为相关专业本科生、研究生的学习参考资料,也可作为相关培训机构的培训教材。 【作者简介】  张孝祥中国著名IT培训教育...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    免费超全面的Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结

    java基础 一、仓库说明 Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结。 2、分类文档 ...会话跟踪技术,Session和Cookie详解 过滤器、监听器、拦截器,应用详解 Servlet 集成 C3P0

    Java Web 的好东西(打包下载)

    00_集合类框架专题01_JDBC技术和数据库连接池专题02_bookstore应用分析03_Cookie和Session专题04_Session详解05_JavaBean的使用06_Tomcat中数据源的配置和使用07_Servlet过滤器08_定义JSP标签09_MVC和Struts专题

    会话技术之Cookie详解

    恰巧有机会重新学习Java Web,今天就再次来简单的聊一聊Cookie与Session。 1.会话与会话技术 ​在日常生活中,我们拨打电话接通后到挂断前,在这期间两人的交流就是一个会话。Web应用中的会话类似生活中的打电话,...

    EL表达式 (详解)

    4) 1--EL表达式用${}表示,可用在所有的HTML和JSP标签中作用是代替JSP页面中复杂的JAVA代码. 2--EL表达式可操作常量 变量 和隐式对象. 最常用的 隐式对象有${param}和${paramValues}. ${param}表示返回请求参数...

    J2EE应用开发详解

    内容为J2EE应用开发详解中的源代码 第1章 Java Web应用开发简介 1 1.1 Java EE应用概述 1 1.2 Java EE概念 1 1.2.1 Java EE多层模型 1 1.2.2 Java EE体系结构 2 1.3 Java EE的核心API与组件 4 1.4 Web服务器和应用...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【WEB】session与cookie的区别与联系;session的生命周期 34 session与cookie的区别与联系 34 session的生命周期 35 【WEB】servlet 生命周期 35 【WEB】阐述JDBC操作数据库的步骤 36 【WEB】JSP内置对象 37 【WEB】...

    JavaWeb实现购物车功能详解.pptx.pptx

    购物车的实现主要依赖于Web前端和后端的交互,通过Cookie或Session来保存用户的购物信息。 购物车业务流程 购物车业务流程包括添加商品、修改商品数量、删除商品和提交订单等步骤,需要精细的设计和实现。

    JavaWeb实战开发

    请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题? ? ?4.session与cookie问题及application、cookie补充说明及四种范围对象作用域? ? ?5.JDBC原理及使用Statement访问...

    asp.net知识库

    Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的一些基础知识 在组件之间实现事务和异步...

    IBM WebSphere Portal门户开发笔记01

    32、LOTUS WEB CONTENT MANAGEMENT 中工具模块的使用 140 33、关闭浏览器时自动请求注销PORTAL 150 34、用户和组管理 150 35、更改登录后跳转页面 151 36、PORTAL-LOGIC:IF LOGGEDIN用户是否登录与注销 152 37、引入...

    Google Android SDK开发范例大全(第3版) 1/5

    8.25 WebView网站Session Cookie判断与访问 8.26 文件下载管理器 8.27 手机Socket联机拨号服务器 第9章 Google服务与Android完美整合 9.1 Google账号验证Token 9.2 Google搜索 9.3 前端产生QR Code二维条形码 9.4 以...

    Google Android SDK开发范例大全(第3版) 4/5

    8.25 WebView网站Session Cookie判断与访问 8.26 文件下载管理器 8.27 手机Socket联机拨号服务器 第9章 Google服务与Android完美整合 9.1 Google账号验证Token 9.2 Google搜索 9.3 前端产生QR Code二维条形码 9.4 以...

    Google Android SDK开发范例大全(第3版) 3/5

    8.25 WebView网站Session Cookie判断与访问 8.26 文件下载管理器 8.27 手机Socket联机拨号服务器 第9章 Google服务与Android完美整合 9.1 Google账号验证Token 9.2 Google搜索 9.3 前端产生QR Code二维条形码 9.4 以...

    Google Android SDK开发范例大全(第3版) 5/5

    8.25 WebView网站Session Cookie判断与访问 8.26 文件下载管理器 8.27 手机Socket联机拨号服务器 第9章 Google服务与Android完美整合 9.1 Google账号验证Token 9.2 Google搜索 9.3 前端产生QR Code二维条形码 9.4 以...

Global site tag (gtag.js) - Google Analytics