会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。Cookie存储于客户端的内存中,因此不够安全。可以通过设置持久化时间在会话结束后仍然使其存在于浏览器的磁盘文件中,方法:setMaxAge(秒数)。

Session存储与服务器中,安全但是会增加服务器压力。

Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。

由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客 户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务 器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

Cookie的创建Cookie cookie = new Cookie(String cookieName,String cookieValue);

cookie的生命周期是一次会话,如果不设置cookie的路径,则其默认为每次访问产生该cookie的web路径时均会携带该cookie

服务器端向客户端发送cookie的方法response.addCookie(cookie的对象);

如果想要删除客户端的已经存储的cookie信息,那么需要使用用同名同路径的持久化时间为0的cookie进行覆盖。

服务器端获取客户端携带的cookie的方法:通过request.getCookies(),获取一个cookie数组,然后遍历cookie,通过getName方法获得cookie的名字,通过条件判断获得该cookie值。

获取Session对象的方法;

HttpSession session = request.getSession();

在一次会话中,如果客户端在访问服务器的时候,服务器创建了session,这时候服务器会把Jsessionid传给客户端,这样如果该客户端再次访问服务器的时候,服务器使用该方法只会获得曾经创建过的session(实质就是根据JSESSIONID判断该客户端是否在服务器上已经存在  session了)

通过getId()获得Jsessionid。

Session的生命周期为在第一次执行request.getSession()时创建,在服务器关闭时结束或者是在浏览器不再访问该web工程资源的30分钟后销毁。可以在工程的web.xml的<session-timeout>30</session-timeout>中进行修改。也可以手动销毁,方法:.invalidate();

默认在一次会话中,也就是说在,一次会话中任何资源公用一个session对象。可以借助cookie存储JSESSIONID来使得客户端多次会话中访问服务器都获得相同的内容。

方法:创造一个cookie,它的name为“JESSIONID”,value值为request.getSession().getId()获得的值,设置cookie的setMaxAge(),这样使得存入该Session域中的键值在该cookie生命周期内都能被访问到。.

cookie and sesssion的更多相关文章

  1. cookie和sesssion

    一.cookie cookie和session都可以暂时保存在多个页面中使用的变量,但是它们有本质的差别. cookie存放在客户端浏览器中,session保存在服务器上.它们之间的联系是sessio ...

  2. JS之表单提交时编码类型enctype详解

    简介 form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x- ...

  3. 2016-1-30 Servlet中Session管理(Sesssion追踪)

    Session管理(Sesssion追踪)是Web应用程序开发中非常重要的一个主题.这是因为HTTP是无状态的,在默认情况下,Web服务器不知道一个HTTP请求是来自初次用户,还是来自之前已经访问过的 ...

  4. servlet读取cookie问题

    String sessionid = request.getSession().getId(); // 取得当前的session id ckSessionid = new Cookie("s ...

  5. js中的cookie

    cookie就是一个存放数据的东西,存储量很小4kb,存放在客户端上和应用设备上. 应用场景 用户注册,用户登录,购物车. Chrome浏览器在计算机中存放cookie的位置 C:\Users\Adm ...

  6. Session和Cookie,以及用户登录验证问题。

    参考 :https://blog.csdn.net/u010002184/article/details/79416199 https://www.bbsmax.com/A/RnJW72YJqY/ 首 ...

  7. 【Python】Flask系列-cookie和session笔记

    cookie: 1.cookie出现的原因:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了 ...

  8. PHP处理会话函数session和cookie总结

    本教程讲解PHP处理会话函数session和cookie总结 PHP处理会话函数包括:session_start.session_register.session_is_registered.sess ...

  9. JAVA企业级开发-session,cookie(13)

    一. jsp jsp: java server pager        .java动态生成网页的一门技术 使用servlet生成网页时候遇到的问题,为什么使用jsp? 在servlet里面书写htm ...

随机推荐

  1. RobotFramework--环境安装1

    1.RobotFramework RobotFramework 的架构是一个通用型的验收测试和验收测试驱动开发的自动化测试框架(ATDD).它 具有易于使用的表格来组织测试过程和测试数据. 3.1版本 ...

  2. [luogu P2205] [USACO13JAN]画栅栏Painting the Fence

    [luogu P2205] [USACO13JAN]画栅栏Painting the Fence 题目描述 Farmer John has devised a brilliant method to p ...

  3. Netflix:我们为什么要将 GraphQL 引入前端架构? (转)

    在刚开始时,Monet 的 React UI 层需要访问由 Tomcat 服务器提供的传统 REST API.随着时间的推移,随着应用程序的发展,我们的用例变得越来越复杂,即使是一个简单页面也需要从各 ...

  4. CUDA编程常见问题 转

    http://blog.csdn.net/yutianzuijin/article/details/8147912 分类: 编程语言2012-11-05 10:55 2521人阅读 评论(0) 收藏  ...

  5. learning makefile .PHONY

  6. Spring Boot + Spring Cloud 实现权限管理系统 (系统服务监控)

    系统服务监控 新建监控工程 新建Spring Boot项目,取名 kitty-monitor,结构如下. 添加项目依赖 添加 spring boot admin 的相关依赖. pom.xml < ...

  7. nginx 504 Gateway Time-out

    #设定http服务器 http { include mime.types; #文件扩展名与文件类型映射表 default_type application/octet-stream; #默认文件类型 ...

  8. 网站文档模式总是以Quirks文档模式解析网站

    <meta name="renderer" content="webkit"/> <meta http-equiv="X-UA-Co ...

  9. mysql数据库的基本操作命令整理

    快捷键 ctrl+l 清屏 ctrl +a 回到行首 ctrl + e 回到行末   数据库操作 进入数据库 方式1 mysql -u用户名 -p 密码 --------直接输入密码,缺点,会暴露自己 ...

  10. JDBC driver连接MySQL运行报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than

    出错原因: 因为安装mysql的时候时区设置的不正确. mysql默认的是美国的时区,而我们中国大陆要比他们迟8小时,采用GMT+8:00格式. 也就是说是数据库和系统时区差异所造成的. 验证:运行c ...