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应⽤,可以实现多次会话之间的数据共享.
对象名称对象类型
request HttpServletRequest
session HttpSession
servletcontext(application)ServletContextsession和application的区别
三个作⽤域对象的区别
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论