HTTP web应用中的会话和会话状态、会话状态信息是什么意思?Cookies 和 Session(以Servlet为例) 您所在的位置:网站首页 无状态是什么意思解释 HTTP web应用中的会话和会话状态、会话状态信息是什么意思?Cookies 和 Session(以Servlet为例)

HTTP web应用中的会话和会话状态、会话状态信息是什么意思?Cookies 和 Session(以Servlet为例)

2024-07-17 00:44| 来源: 网络整理| 查看: 265

文章目录 会话、会话状态、会话的状态信息cookies与sessioncookies一个web浏览器与一个web站点之间cookie可能不止一个 session什么是session(可以理解为服务端保存的某个客户端的信息)HttpSessionHttpSession接口的相关方法(1) getId()(2) getCreateTime(3) getLastAccessedTime(4) setMaxInactiveInterval/getMaxInactiveInterval(5) Invalidate(6) getServletContext(7) setAttribute/getAttribute HttpServletRequest接口的Session(1)getSession方法 该方法有两个重载方法:

会话、会话状态、会话的状态信息

会话是指一个客户端与web服务器之间连续发生的一系列请求和响应的过程。就像是从拨通电话到挂断电话之间聊天的过程就是一个会话。

web应用的会话状态是指服务器与浏览器在会话过程中产生的状态信息,借助会话状态,web服务器能够把属于同一会话中的一系列请求和响应过程关联起来,使得他们之间可以相互依赖和传递信息。例如在一个购物网站购买东西,结算时必须知道登录请求表单的结果,以便知道是哪个账户在操作。还必须知道已选商品的信息。其中的用户登录的账户信息和已选商品信息就是会话的状态信息。

cookies与session

由于http协议本身就是不具有会话状态,web应用需要使用cookies或session来维持会话状态和实现会话管理。

cookies

cookies是在浏览器访问web服务器的某个资源时, 由web服务器在HTTP响应消息头中附带传给浏览器的一些数据。其具体过程图: 在这里插入图片描述 客户端请求服务器,如果服务器需要记录该用户状态,web服务器通过在HTTP消息头增加Set_Cookies响应头字段将cookies发送给浏览器。

即向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

服务器还可以根据需要修改Cookie的内容。基于springMVC的cookies的操作可以参照如下cookies的操作:基于SpringMVC的Cookie常用操作详解

一个web浏览器与一个web站点之间cookie可能不止一个

一个cookies只能标识一种信息,它至少含有一个标识该信息的名称name和值value,一个web站点可以给一个web浏览器发送多个cookies,这样就能在web浏览器和服务器之间使用多个cookies来传递信息。例如用一个cookies来标识访问者的账号信息,一个cookies来标识用户登录该站点的次数。

注意:cookies需要浏览器的支持,而且不同浏览器有不同保存cookies的方式。

session 什么是session(可以理解为服务端保存的某个客户端的信息)

cookies是客户端保存状态的方案,那么session是服务端保持状态的方案。就像医院发放给病人的病历卡和医院为每个病人都保存的档案的结合。病历卡只有id,在医院出示病历卡时,医院系统都能根据其id找到病人的档案,并进行相应的操作。

HttpSession

HttpSession接口定义了各种管理和操作会话状态的方法。每个客户端都有对应着其各自的HttpSession对象。由于创建HttpSession需要小号内存资源,Servlet并不会一开始就创建该对象,只有访问某个特殊的Servlet程序,并且这程序决定于客户端开启一个会话时才会创建该对象。并且会为这个对象分配一个独一无二的会话标识号SessionID,然后响应消息中将这个标致号传给客户端。后续客户端只需将这个标识号传给服务器,服务器依据其标识号选择对应的HttpSession对象。

HttpSession停留在服务器内存也是有时间限定的(跟长连接短连接有关?)。默认值由servlet容器决定,用tomcat的可以在tomcat的安装路径里的conf/Web.xml定义:

关于servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。 工作模式:客户端发送请求至服务器;服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器;服务器将响应返回客户端。 参考文章:

30

默认30分钟,设置0或负数会话永不超时。

HttpSession接口的相关方法 (1) getId()

返回HttpSession对象关联的会话标识号

(2) getCreateTime

返回当前该对象创建的时间,返回值是一个自从1970年1月1日的0时0分0秒开始计算的毫秒数

(3) getLastAccessedTime

返回上一次访问该对象的时间,返回值同上。

(4) setMaxInactiveInterval/getMaxInactiveInterval

操作该对象的超时默认时间。

(5) Invalidate

强制当前的HttpSession对象无效,使服务器立即释放该对象。常用于注销操作。

(6) getServletContext

用于返回当前HttpSession对象所属的ServletContext对象。

(7) setAttribute/getAttribute

在内部定义一个hashmap类型的成员变量,该方法则是向这个hashmap对象增加键值对对象,和根据名称获取对象。如:

User user=new User("男","李"); HttpSession session = request.getSession(); //当前的session session.setAttribute("user",user); //session.getAttribute("user",user); HttpServletRequest接口的Session (1)getSession方法 该方法有两个重载方法: public HttpSession getSession(boolean create); public HttpSession getSession();

第一个方法根据传送参数来决定是否创建HttpSession对象。true就创建新的HttpSession对象,并返回,false如果没有会话则返回null。

第二个方法如果没有会话则创建一个新的会话。

参考文章:web应用中的会话与会话状态



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有