Servlet中有几个域对象,分别是request,cookie,session,Servletcontext。
什么是域对象呢,一个有作用范围的对象,可以在范围内共享数据,就是域对象。
我先来分别解释一下这几个域对象的作用范围和特点。
request域。是所有servlet对象中最小的一个,只能适应一次请求。超出这个请求的作用范围,比如说重定向之后,就获取不到里面存放的值了。
其次是cookie,客户端会话技术,这时候可能有人要问,什么是会话技术,会话是指,客户端第一次向服务器发送请求,服务器响应,会话建立,直到有一方断开,会话结束。cookie是基于http协议响应头中的set-cookie和请求头cookie实现,英文释义是甜点、饼干的意思,故不能存放大量数据,cookie被响应之后,会将数据存放在客户端,相对不安全。cookie的作用域可以很广,setmaxAge()方法可以使得cookie保留很长的一段时间,不过就只能在本地访问。如果要在其他服务器中访问到cookie,可以setDomain()设置二级域名。这样,其他的服务器就可以正常访问到cookie了。
session,基于cookie实现。服务器端会话技术,存入的数据会保存在服务器。
一般只要服务器不关闭。其他服务器可以访问到这个session。
最后是Servletcontext,servlet程序中最大的域对象,代表了整个web应用。可以和服务器通信,作用范围也和cookie、session差不多,通常只要服务器不关闭,其他域名的服务器也能访问到这个对象。
request域对象,只能在一次请求中访问,即请求转发的时候访问,重对象之后,因为浏览器地址发生改变,指向了另一个地址,变成了另一个请求。所以自然就访问不到了。
其他域对象,因为自身特性,不管是请求转发或重定向之后,都能正常访问和拿到数据。
Servlet域对象
最新推荐文章于 2022-07-02 23:37:53 发布