1.servlet数据共享方案提供的4种方案:
- servletContext接口;
- cookie类;
- HttpSession接口;
- HttpServletRequest接口;
- ServletContext接口:
1.介绍:
来一servlet规范中的一个接口。在tomcat中存在servlet-api. jar在tomcat中负责提供这个接口的实现类。
如果两个servlet来自同一个网站。那这两个servlet可以通过网站的ServletContext实例对象实现数据共享。
开发人员习惯于将这个接口称为,全局作用域对象。
2.工作原理:
每一个网站都存在一个全局作用域。这个全局作用域对象(相当于一个Map),在这个网站中OneSerclet可以将一个数据存入到全局作用域对象,当前网站中其他Servlet此时都可以从全局作用域中得到这个数据。
3.全局作用域对象生命周期:
在Http服务器启动过程中,自动生成一个全局作用域对象。
在服务器运行期间,一个网站只能有一个全局作用域对象。
在服务器运行期间,全局作用域对象一直存活。
在服务器关闭时,服务器关闭全局作用于对象。
全局作用域对象生命周期贯穿网站整个运行期间
4.命令实现:
存入:
1)通过请求对象向tomcat索要当前网站中全局作用域对象
ServletContext application=request. getServletContext();
2)将数据添加到全局作用域对象作为共享数据。
applicaton. setAttribute("key",数据);
提取:
1)通过请求对象向tomcat索要网站中全局作用域对象。
ServletContext application=request. getServletContext();
2)从全局作用域对象得到指定关键字对应数据。
object 数据=aplication. getAttributA("key");
全局作用域里空间有限,只能存入关键数据。内容过多可能会导致死机。
2. cookie
- 介绍:
cookie来自于servlet规范中的一个工具类,存在于servlet-api. jar中。
如果两个servlet来自同一个网站,并且为了同一个用户服务,此时可以通过cookie进行数据共享。
cookie存放当前用户的私人数据,共享数据中提高服务质量
在生活中,cookie相当于用户在服务端得到的“会员卡”
2.原理:
用户通过浏览器第一次向网站发送请求申请一个servlet,运行期间,创建一个cookie存储与当前用户相关的数据,在这个servlet工作完毕后,会将cookie写入到响应头之中,交还给浏览器。
浏览器收到响应包之后将cookie存储在浏览器的缓存中,一段时间后,用户通过同一个浏览器,再次向同网站发起请求申请另一个servlet,这个时候浏览器需要无条件的把将网站给的cookie推送回去,写入到请求头之中。
此时这个另一个serclet运行时,就可以通过读取请求头中的cookie中信息,得到第一个servlet提供的共享数据。
3.实现命令:
创建一个cookie对象。
cookie card=new cookie(“key”,“数据”);
cookie card1=new cookie("key","数据”);
这个cookie也相当于map
一个cookie只能存一对键值对
这个键值对只能是两个字符串
将cookie写入到响应头,交给浏览器
resp. addcookie(card);
resp. addcookie(card1);
另一个servlet怎么调用这个数据
先调用请求对象从请求头里得到浏览器返回的cookie
cookie cookies[ ]=request. getcookies();
通过遍历得到每一个key和value
for(Cookie card:cookies)
{
String key=card. getname();
String value=card. getvalue();
}
HttpSeession接口:
- 介绍
- httpsession接口来自servlet规范下的一个接口。存在与tomcat中的servlet-api. jar其实现类由http服务提供。tomcat提供jar包。
- 如果两个servlet来自同一个网站那么可以通过httpsession对象数据共享。
- 开发人员习惯将它称为,会话作用域对象。
- httpsession与cookie的区别
- 存储位置不同,cookie存放在用户电脑内存中。而httpsession存放在服务器的内存。
- 可以存储的数据类型不同,cokie只能存字符型。而httpsession可以存任意类型。
- 存储数量不同,cookie只能存一个键值对,而httpsession可以存多个键值对。
- cookie相当于会员卡,httpsession相当于保险箱。
- 命令实现
- httpservletrequest接口实现共享数据
一 介绍:
在同一个网站中如果两个servlet通过请求转发调用,那么彼此之间使用同一个请求协议包,一个请求协议包对应的是一个请求对象,因此几个servlet之间使用了同一个请求对象,此时可以利用这个请求对象在两个servlet之间共享数据。
习惯被称之《请求作用域对象》。
二 实现命令: