几乎所有的 Web 开发语言都支持 Session 功能,Servlet 也不例外。 Servlet/JSP 中的 Session
功能是通过作用域(scope)这个概念来实现的。
作用域分为四种,分别为:
page 在当前页面有效(仅用于 JSP 中)
request 在当前请求中有效
session 在当前会话中有效
application 在所有应用程序中有效
是不是看不太明白?page 因为仅用于 JSP 中,这里只讲述其他三种作用域。 首先要声明的
一点,所谓“作用域”就是“信息共享的范围”,也就是说一个信息能够在多大的范围内有效。
话说武松一日来到景阳岗,见一旗帜迎风飘扬,旗子上书五个大字“三碗不过岗”。 武松叫
道:“店家,拿三碗酒来,再切两斤熟牛肉!”店小二应声道:“三碗好酒,二斤熟牛肉
啰~~”里面厨师赶忙当当当当切好牛肉,店小二倒上三碗酒,店小二端上前来。
武松咕咚咕咚连干三碗,叫一声“好酒!店家,再来三碗!”小二忙又倒上三碗好酒,武松
一饮而尽。就这样前前后后武松一共喝了十八大腕。付了帐刚要走,店小二道: “客官,
这前面山上有大虫,客官刚刚喝完十八碗酒恐怕过不得岗,不如在小店暂住一夜, 待明天
和猎户一同过岗岂不是好?”
之后武松说什么就留待各位看官自己去回忆啦。在这段武松打虎中, 大家有没有看到些熟
悉的东西?
武松: 浏览器。
酒馆: 服务器。
店小二、厨师: Servlet 或者 JSP。
来三碗好酒!: 浏览器向服务器发出 HTTP 请求。
店小二上酒: 服务器的响应。
武松从进店到离开: 一个 HTTP 对话。
我们可以看到,Web 交互的最基本单位为 HTTP 请求(武松点菜)。 每个用户从进入网站到
离开网站这段过程称为一个 HTTP 会话 (武松进店到出店),一个服务器的运行过程中会有
多个用户访问,就是多个 HTTP 会话(酒馆当然不可能只接待武松一个客人)。那么作用域
就可以理解为:
request HTTP 请求开始到结束这段时间
session HTTP 会话开始到结束这段时间
application 服务器启动到停止这段时间
request
一个 HTTP 请求的处理可能需要多个 Servlet 合作(武松点菜时店小二就要吩咐厨房做菜),
几个 Servlet 之间可以通过某种方式传递信息(店小二就用吆喝的方式通知厨房),但这个信