会话和请求的区别

转自 https://zhidao.baidu.com/question/2012008668505571268.html
Http协议是Java Web开发里servlet/jsp这些的基础,理解上面的内容先要了解Http协议。

Http协议基本是有一个request/response模型也就是请求/响应模型的,通俗讲也就是“一问一答”的模式:
浏览器向服务器发起request请求,这就是“问”;

服务器收到请求后,返回response响应,这就是“答”。

说到这里,Servlet/JSP里的request和resonse这两个对象你清楚了吧,其实就是Java Web把Http协议里这两个东西抽象成Java的类型而已。

接下来说Java Web开发里的session,也就是“会话”。
Http是一个“没有状态”的协议,也就是说原始Http协议里,浏览器的request请求之间是没关系的,通俗的说就是“说了下句忘了上句”。实际要想开发Java Web应用,应该让这些请求之间是有关系的,这就需要在多个request请求之间创建一些联系,这就是会话session。其实"会话“这个中文翻译是不错的,通俗讲就是:“要想顺利交谈,需要说了下句想起来上句”。
所以这些建立联系的request请求是属于某个session的,这就是你题目问到的:“当前请求的会话”的意思。

下面说说session技术实现的细节吧:(大致对应你问题里的三个方面)
(1)实际Java Web应用中,session会话会占用服务器的一段内存空间保存多个有联系request请求之间需要保存的共享变量;
(2)大部分session的实现对同一客户的相同浏览器的一段时间(称作session超时时间)内的请求作状态共享和保持,因此你打开不同的浏览器比如IE,以及Chrome会开启不同的session,而且你关闭浏览器后这个session也随之销毁了;
(3)session通过getAttribute()和setAttribute()这一对方法进行共享变量的获取和设置,也就是说要想保存状态就需要用这一对方法。

你可能感兴趣的:(j2ee)