servlet的三大作用域对象

Servlet的三大作用域对象

什么是域对象

​ 域对象是所有应用程式的中枢。他们捕捉了数据库的核心数据模型和应用在数据上的业务规则。在典型情况下,应用程式的大多数子系统都依赖这些通用的域对象–这意味着域对象的映射越接近数据库大纲,应用程式研发者理解和使用他们就越容易,因为他们表现了数据库中的现实"实体"和"关系"。

​ 如果域对象没有和应用程式的其他部分分开,你通常就得把持续性代码复制到非常多个位置。同样,如果域对象没有和持续性代码分开,你遇见的情况就是,所有使用域对象的子系统都必须知道并依赖持续性对象。对持续性对象的所有更改都必然影响整个应用程式。因此,如果没有把域对象和应用程式和持续性代码分开都是不好的设计。

Servlet三大作用域对象

Request:

  • 每一次请求都是一个新的request对象,如果在Web组件之间需要共享同一个请求中的数据,只能使用请求转发.
  • 用处:常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。

Session:

  • 每一次会话都是一个新的session对象,如果需要在一次会话中的多个请求之间需要共享数据,只能使用session.
  • 用处:常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。
  • 对于服务器而言,每一个连接到它的客户端都是一个 session,servlet 容器使用此接口创建 HTTP客户端和 HTTP 服务器之间的会话。会话将保留指定的时间段,跨多个连接或来自用户的页面请求。一个会话通常对应于一个用户,该用户可能多次访问一个站点。可以通过此接口查看和操作有关某个会话的信息,比如会话标识符、创建时间和最后一次访问时间。在整个 session 中,最重要的就是属性的操作。
标识会话JSESSIONID
  • Session 既然是为了标识一次会话,那么此次会话就应该有一个唯一的标志,这个标志就是sessionId。
  • 每当一次请求到达服务器,如果开启了会话(访问了 session),服务器第一步会查看是否从客户
    端回传一个名为 JSESSION 的 cookie,如果没有则认为这是一次新的会话,会创建一个新的 session 对
    象,并用唯一的 sessionId 为此次会话做一个标志。如果有 JESSIONID 这个 cookie 回传,服务器则会
    根据 JSESSIONID 这个值去查看是否含有 id 为 JSESSION 值的 session 对象,如果没有则认为是一个新
    的会话,重新创建一个新的 session 对象,并标志此次会话;如果找到了相应的 session 对象,则认为
    是之前标志过的一次会话,返回该 session 对象,数据达到共享。
  • 这里提到一个叫做 JSESSION 的 cookie,这是一个比较特殊的 cookie,当用户请求服务器时,如
    果访问了 session,则服务器会创建一个名为 JSESSION,值为获取到的 session(无论是获取到的还是
    新创建的)的 sessionId 的 cookie 对象,并添加到 response 对象中,响应给客户端,有效时间为关闭
    浏览器。
  • 所以 Session 的底层依赖 Cookie 来实现。

ServletContext(Application):

​ 每一个 web 应用都有且仅有一个 ServletContext 对象,又称 Application 对象,从名称中可知,该对象是与应用程序相关的。在 WEB 容器启动的时候,会为每一个 WEB 应用程序创建一个对应的ServletContext 对象。
  该对象有两大作用,第一、作为域对象用来共享数据,此时数据在整个应用程序中共享; 第二、该对象中保存了当前应用程序相关信息。例如可以通过 getServerInfo(); 方法获取当前服务器信,getResourceAsStream(String path); 方法以流的形式获取某个资源, getRealPath(Stringpath); 获取资源的真实路径等。

  • 应用对象,Tomcat启动到Tomcat关闭,表示一个应用,在一个应用中有且只有一个application对象.作用于整个Web应用,可以实现多次会话之间的数据共享.

    对象名称对象类型
    requestHttpServletRequest
    sessionHttpSession
    servletcontext(application)ServletContext

三个作用域对象的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值