文档章节

http 协议,web应用中的有状态和无状态

wyp_oschina
 wyp_oschina
发布于 2015/08/14 16:59
字数 933
阅读 61
收藏 0

1、什么是Web应用程序的无状态性?
说基于http协议的web应用程序是请求——应答模式是无状态的,我们可以这样理解:每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况。

2、如何使我们的web应用是有状态?

http协议的基础上,web应用引入cookies, session,application来保持web应用之间的状态。

注:
cookies,sessionapplication都不是标准协议,但是各种网络应用提供商,实现语言、web容器都默认支持它。当然这种支持与对网络标准协议的支持是不同的,标准协议规定的接口,而这种机制只是规定了思想。

其实从我们上面的分析看来,application不应该被视为这种意义上出现的维护状态的机制。它是决定怎么应用程序的“配制文件”。但是如果你从这种状态维持机制所覆盖的范围来推导,你会发现,application好像也算得上。

Session所控制的范围是一个session。一个会话,会话从第一次访问服务器开始存在,到服务器调用session.invalidator()(可能是超时,可能是其它原因)。

Cookies所控制的范围有它自己的定义(session没有直接的关系),可以长可以短。只要服务器放在用户文件系统中的cookies没有被删除,至少服务器还识别它。它的控制范围就是还在的。

这个角度上讲,SessionCookies都可以归为跨页面的状态。但是session跨不出一次会话,Cookies跨不出两端的限制。

Application,则是关联这个网络应用程序的。


举例:

有人将web应用中有无状态的情况,比着顾客逛商店的情景。

顾客:浏览器访问方;

商店:web服务器;

一次购买:一次http访问

我们知道,上一次顾客购买,并不代表顾客下一个小时一定会买(当然也不能代表不会)。也就是说同一个顾客的不同购买之间的关系是不定的。所以说实在的,这种情况下,让商店保存所有的顾客购买的信息,等到下一次购买可以知道这个顾客以前购买的内容代价非常大的。所以商店为了避免这个代价,索性就认为每次的购买都是一次独立的新的购买。浅台词:商店不区分对待老顾客和新过客。这就是无状态的。

但是,商店为了提高收益。她是想鼓励顾客购买的。所以告诉你,只要你在一个月内购买了5瓶以上的啤酒,就送你一个酒杯。

我们看看这种情况我们怎么去实现呢?

A,给顾客发放一个磁卡,里面放有顾客过去的购买信息。

这样商店就可以知道了。这就是cookie.

B,给顾客发放一个唯一号码,号码制定的顾客的消费信息,存储在商店的服务器中。这就是session

最后,商店可以全局的决定,是5瓶为送酒杯还是6瓶。这就是application

其实,这些机制都是在无状态的传统购买过程中加入了一点东西,使整个过程变得有状态。Web应用就是这样的。

本文转载自:http://m.blog.csdn.net/blog/hiperry/44104329#

wyp_oschina
粉丝 2
博文 5
码字总数 554
作品 0
成都
程序员
私信 提问
2014-07-09 Java Web的学习(5)-----会话管理(Cookie和Session)

1.什么是会话 会话,牛津词典对其的解释是进行某活动连续的一段时间。从不同的层面看待会话,它有着类似但不全然相同的含义。比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,...

查封炉台
2014/07/10
1K
0
Web Service - RESTful 和 SOAP 笔记

1.什么是Web Service(Web服务) 从表面上看,Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。 这就是说,你能够用编程的方法透明的调用这个应用程序,不需要了...

6pker
2015/12/02
252
4
Django之路——1 Django的简介

今天我们来学习django,在学习Django之前我们先来了解一下django和web开发中的http协议 1.mvc模型和mtv模型 既然学习Django,那么我们一定要只要web开发中的mvc模型和mtv模型 mvc模型 Web服务...

袁勇i
2018/06/23
0
0
理解本质的 REST

REST本身是一个高度抽象化的架构风格,因而总是很难对它有一个比较深入且印象深刻的理解。写这篇文章的目的,是自己对学习REST的一个总结,也希望可以通过这篇文章,能够让读者真正的理解RES...

vito
2017/10/09
0
0
Web技术概述

一.什么叫Web Internet是一个连接世界上计算机的物理网络。 Web是建立在Internet上的一种服务(Service)。 Web是Internet上多种不同的服务之一,其他还包括E-mail、流媒体、FTP等。 二.Web工...

tank_99
2016/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部