`
wuhaidong
  • 浏览: 357839 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

session原理

    博客分类:
  • WEB
阅读更多

 

大家都知道session 是web 中在服务器端保存用户状态的一种方式,但归根结底,http 协议本身属于无状态协议,session到底是怎么搞出来的呢,其实服务器端维护session用到了两种方式:


1.cookie保存sessionid,在浏览器支持cookie的情况下,服务器一般首选这种方式,在用户请求有状态的服务器时,服务器会写如 客户端cookie中一个jsessionid(在tomcat中式这样,其他服务器也类似),这里会有一个服务器生成session id用来保存这次会话的id 编号,服务器维护了一个session池,这个池是有时间限制的,一般可以在web.xml中配置session-config选项中的,session-timeout,这样客户端在每次请求中代上服务器分配的sessionid,服务器自己知道是哪个用户了,从而达到维护客户端状态的目的。


2.服务器考虑到客户端浏览器不支持cookie,那么采取一种叫做url rewrite的技术,这种方式体现在,用户在请求服务端时,会在用户请求的url后边加入;jsessionid = xxxx,这样的参数,效果与存入cookie一样,还是通过客户端记录sessionid 编号来维护客户端状态。


3.客户端cookie又分为进程cookie和持久cookie,简单点说就是cookie要么保存在浏览器进程中,随浏览器关闭而消失,要么保存在客户端本地文件中.具体采用哪种保存方式,由服务器决定。一般在servlet 中使用javax.servlet.http.Cookie的setMaxAge()来决定是进程cookie还是持久cookie。在tomcat中,tomcat创建了jsessionid这个cookie,并且设置setMaxAge(-1),也就是说tomcat下jsessionid的cookie是进程cookie,在客户端是看不到这个cookie文件的。



所以 ,有状态的web session 就是这样被实现的,但是在并发量大,集群的环境中使用session可能消耗服务端很大的资源,所以尽量在session里少存入信息。


 

分享到:
评论

相关推荐

    理解HTTP session原理及应用

    本文将深入探讨HTTP Session的原理及其在实际应用中的作用。 首先,理解"session"一词的含义至关重要。在一般语境中,session指的是有始有终的一系列动作或消息,例如打电话的过程。而在Web开发中,session则被赋予...

    深入理解ServletJSP之“Cookie和Session原理”很详细

    ### 深入理解Servlet/JSP之“Cookie和Session原理” #### 一、Cookie Cookie是一种常用的技术,用于实现Web应用程序中的用户会话管理。它允许服务器存储一些数据(通常是小文本文件)在用户的计算机上,以便后续...

    计算机后端-PHP视频教程. php之blog实战45-session原理.wmv

    计算机后端-PHP视频教程. php之blog实战45-session原理.wmv

    ASP.NET中Session实现原理浅析

    为了解决这个问题,Session应运而生,它允许服务器端保存并识别不同客户端的会话数据。 在ASP.NET中,Session的实现主要依赖于以下几个核心组件: 1. **HttpSessionState**:这是ASP.NET中用于管理会话状态的对象...

    Servlet Session机制详解

    Servlet Session机制详解,如题,详细描述Session的原理,及使用方法,附部分代码

    关于session与cookie的原理简述

    **Session原理** Session是另一种用户状态管理方式,它将用户数据存储在服务器端,通常以文件或数据库的形式。每个用户会有一个唯一的Session ID,这个ID通过Cookie或URL参数传递给服务器。 1. **启动Session** -...

    PHP的cookie与session原理及用法详解

    本文将深入探讨这两种技术的原理、用法以及PHP中操作它们的方法。 首先,理解cookie的产生背景。由于HTTP协议是无状态的,服务器无法记住两次请求之间的关联,为了解决这个问题,cookie应运而生。cookie存储在...

    yxdYXD11123123#Frontend-Road#session原理+express-session用法1

    工作流程当浏览器访问服务器并发送第一次请求时,服务器端会创建一个 session 对象,生成一个类似于key,value 的键值对,然后将 key(cookie

    Nodejs 和Session 原理及实战技巧小结

    Node.js是一种基于Chrome V8引擎的JavaScript运行...以上展示了如何在Node.js环境下使用Session进行用户会话管理的原理和实战技巧。这些知识可以帮助开发者更好地理解和运用Node.js处理Web应用中的用户认证与状态保持。

    Session的工作原理与概念详解

    ### Session的工作原理与概念详解 #### 一、Session的基本概念 在计算机科学中,特别是网络编程领域,“**Session**”一词被广泛使用,并且在不同的上下文中具有不同的含义。通常,Session指的是客户端与服务器...

    Tomcat7基于Redis的Session共享

    原理就是继承tomcat的manager接口,接管session的持久化工作 2.使用 ◦使用的时候就是Maven打包,放到tomcat的lib里面 (主要是三个包:commons-pool2-2.3.jar;jedis-2.7.3.jar;tomcat7-redis-cluster-1.0.0.jar) ...

    跨域共享session (实现http跳转https 共享session)

    **一、跨域共享session原理** 1. **JSONP(JSON with Padding)**:JSONP是一种早期的跨域解决方案,但不适用于需要服务器端存储session的情况,因为它只能用于获取数据,无法设置Cookie。 2. **CORS(Cross-Origin ...

    tomcat-redis-session

    使用tomcat-redis-session-manager开源框架实现使用Redis存储Nginx+Tomcat负载均衡集群的Session所需要的3个jar:tomcat-redis-session-1.0-SNAPSHOT.jar、jedis-2.7.2.jar、commons-pool2-2.0.jar

    详解SpringBoot中Session超时原理说明

    SpringBoot 中 Session 超时原理说明 在 SpringBoot 中,Session 超时是指在一定时间内没有任何操作,Session 就会超时失效,导致用户需要重新登录才可以继续访问页面。这是因为 Session 的超时时间是有限制的,...

    Laravel开发-session-tokens

    1. **Session原理**:Laravel使用存储驱动(如文件、数据库、Redis等)来存储用户会话数据。当用户访问应用时,服务器会给浏览器分配一个唯一的Session ID,这个ID通常以Cookie的形式存在用户的设备上。每次请求时,...

    解析php中session的实现原理以及大网站应用应注意的问题

    总的来说,理解PHP Session的工作原理以及如何优化其性能对于开发高效且可靠的Web应用至关重要。开发者应根据网站的规模、流量和资源状况,选择合适的Session管理策略,以确保用户体验的连贯性和系统的可扩展性。

    tomcat+redis共享session所需jar包

    **二、Tomcat与Redis共享Session原理** Tomcat通过一个名为`tomcat-redis-session-manager`的组件,将原本在内存中存储的Session数据转换为序列化对象并存储到Redis中。每当有Session操作(如创建、更新、删除)时,...

Global site tag (gtag.js) - Google Analytics