http的无状态

理解http的无状态首先要明白什么是“状态”,这个很重要。

我们知道http是请求应答模式的。请求肯定是客户端发起的,应答是服务端的响应。客户端和服务端交互活动的信息成为状态信息。如果这个状态信息被保存维护到了服务器,那么这个服务器就被叫做有状态服务器,因为有了这些保存信息就可以通过此信息影响之后的交互,比如用户的登陆转态,我第一次请求告诉服务端我要登陆了,服务端保存好了登陆信息,下一次请求过来的时候因为服务端知道这是登陆态,所以对这次请求会做出相应的影响。也就是说这次请求依赖于上一次的请求。

所谓无状态指的是,每一次请求都应该是独立的,即他的执行结果和前面的请求以及后面的请求都应该是没有关系的,他不会受前面请求应答情况的直接影响,同时也不会影响之后的请求应答。

那么cookie和session是否就是反无状态呢?我觉着这个要看怎么用,比如我仅仅把cookie当做一个数据传过去,而服务端只负责解析cookie而不去设置cookie,当然了下一次请求也不该带有这个cookie,这样的一个http也应该是无状态的,不过话说回来了,如果这样的话为何设置cookie?直接用一个参数传过去不就得了。session就肯定是有状态的,因为session设置的同时,服务器必须会往浏览器种一个cookie,浏览器的下次请求势必会带上这个cookie,这就对下一次的请求应答造成了影响。所以啦,cookie和session的设计就是为了有状态的,不必纠结了。

时间: 2024-10-09 18:40:16

http的无状态的相关文章

无状态服务(stateless service)

一.定义 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息 有状态服务(stateful service)则相反,它会在自身保存一些数据,先后的请求是有关联的 二.优劣 有状态服务常常用于实现事务(并不是唯一办法,下文有另外的方案).举一个常见的例子,在商城里购买一件商品.需要经过放入购物车.确认订单.付款等多个步骤.由于HTTP协议本身是

Web中的无状态含义

REST架构设计是目前非常火热的概念,已经成为构建web服务时应该遵循的事实标准.REST约束中有一条很重要的规则是“无状态”,但“无状态”是个很抽象的概念,对刚刚接触的人来讲,很难深刻形象的理解.今天在网上看了一篇文章,对于“无状态”的解释感觉很容易让人理解,特把文章中相关内容整理了下. "状态"的概念是什么 一个Web应用程序协议的“状态”在通常指的是为两个相互关联的用户交互操作保留的某种公共信息,它们常常被用来存储工作流或用户状态信息等数据.这些信息可以被指定不同的作用域如pag

无状态会话bean(1)---定义

无状态会话bean用于完毕在单个方法的生命周期内的操作.无状态bean能够实现很多业务操作,可是每一个方法都不能假定不论什么其它的方法会在它之前调用.后半句的意思是如今的你可能不是刚才的你.明天的你可也能不是今天的你,这个时候你就叫做"无状态你". 上面的阐述听起来像是无状态的bean的一个局限,好像每次再见就像永别似的. 可是这是迄今为止业务服务最常见的形式,就像去饭店吃饭,点菜的服务员与给你上菜的服务员是不是同一个这不是我们所关心的. 无状态回话bean不同于适合在对话中积累状态(

无状态会话bean(1)---定义(未排版)

无状态会话bean用于完成在单个方法的生命周期内的操作.无状态bean可以实现许多业务操作,但是每个方法都不能假定任何其他的方法会在它之前调用. 这听起来像是无状态的bean的一个局限.但是这是迄今为止业务服务最常见的形式.不同于适合在对话中积累状态(如零售应用程序的购物车)的有状态会话bean,无状态回话bean旨在非常有效的执行独立操作.无状态会话bean可以在最小化对整体服务器资源影响的同时,扩展到大量的客户端. 会话bean定义分为如下两个部分: 零个或多个业务接口,定义了一个客户端在b

JSP中对页面跳转的不同方法引出HTTP无状态的应对方法

首先我们来看今天所学应用到的一个例子,当我们做了一个登陆页面,提交表单后往往需要跳转到另外一个页面.这里可以用两个方法,方法如下: 1.response用法: response.sendRedirect("URL");  (是对服务器请求的响应) 2.request的用法: request.getRequestDispatcher("URL").forward(request, response);   (是装载着客户端请求的信息集合) 但是两种用法是有所不同的.r

有状态和无状态

无状态对象 用于处理逻辑, 而不是持有数据 把数据从一个有状态对象处理后传输到另一个有状态对象 属性和字段都是临时的, 不共享, 无需持久化 使用时随时创建, 随时丢弃 有状态对象 持用数据 共享 需要持久化 保持内部数据一致 版本, 身份, 值比较, HashCode 数据访问: 遍历, 查找, 排序 数据变化事件

Java深度历险(二) EJB Session Bean有状态和无状态的区别与联系

刚开始对两种sessionbean存在误解,认为有状态是实例一直存在,保存每次调用后的状态,并对下一次调用起作用,而认为无状态是每次调用实例化一次,不保留用户信息.仔细分析并用实践检验后,会发现,事实恰好相反:有状态和无状态会话bean的本质区别是它们的生命期. 首先解释一个下面要用到的概念--用户:sessionbean 的用户实际上就是直接调用ejb的类的实例,甚至是这个实例的某个方法.同一个类的不同实例对于session bean来说是不同的用户. 实例解析 有状态的StatefulEjb

java无状态登录实现方式之ThreadLocal+Cookie

注:本文提到的无状态指的是无需session完毕认证.取用户封装信息. 无状态的优点: 1.多应用单点登录:在多应用的时候仅仅需在登录server登录后.各子应用无需再次登录. 2.多server集群:无需制作会话共享的缓存就可以实现. 此方案的缺点: 1,依赖于cookie,尽管如今主流浏览器都支持cookie. 2.单点登录须要各子应用属于同一主域名下(跨主域名无法实现). 实现原理: 登录时封装用户信息,并将用户信息通过序列化加密写到用户cookie.当用户下次请求应用server时,过滤

http协议的无状态性及基于memcached-session-manager构建tomcat cluster会话服务器

一.http协议的无状态性 1.HTTP协议一共有五大特点 1)支持客户/服务器模式 2)简单快速 当客户端向服务器端发送请求时,只是简单的填写请求路径和请求方法即可,然后就可以通过浏览器或其他方式将该请求发送就行了.比较常用的请求方法有三种,分别是:GET.HEAD.POST.不同的请求方法使得客户端和服务器端联系的方式各不相同.因为HTTP协议比较简单,所以HTTP服务器的程序规模相对比较小,从而使得通信的速度非常快. 3)灵活 Http协议允许客户端和服务器端传输任意类型任意格式的数据对象

http无状态协议(不用服务器端控件,自己慢慢整吧)

噢.解释一下什么是http无状态协议先. 链接:http://baike.baidu.com/link?url=CEhaZZ4WdNXvjjinatkWFDzvEtH0Jf8wKcLFpVitjw9X4R-iNp5C7Lzve5XA_qkprdDwFCe3gsG1yyHu4uZzaq