在文章中,先给大家一个疑问?
在图片中我们能够看到从客户端请求到服务器,服务器经过业务逻辑处理(数据库请求等....)返回响应给客户端。
如:客户端--------服务器--------客户端在这个过程中数据是如何传递的呢?
这就是这篇文章要提到的重点:servlet 的数据共享区域
先给大家看一个图方便理解
图2
servlet的数据共享区域总共分为四个部分:
1、request
(客户端--------服务器) 这个过程就是一个请求。request信息共享区域的作用域就是请求范围。执行 (服务器--------客户端)时,之前的request就会失效。在图2中能够看出
2、session
session:在网络应用中,称为“会话控制”。
- 2.1 客户端多次请求同一个服务器的资源,多次请求就叫同一个会话。而且能够跨越多次请求的信息共享区域(如:a打电话给b。a说一句话,b说一句话。只要电话没有挂。就能够一直说话。没有中断)
会话断掉:服务器关闭或者清空会话.....
-
2.2 使用场景:登录信息保存:多次请求都要用到登录
-
2.3 session本质:http无状态协议,服务器不会识别客户端,会把每一次请求当成新的请求,不会保留客户端的状态信息。
这里又会产生一个新的疑问?客户端每次请求都是一个新的请求。如何识别当前请求是之前那个session呢?
session的本质是一个cookie,服务器会自动产生一个cookie,会将请求属于那个session的id作为cookie传给客户端,产生的这个session的id叫Jsession。 下次客户端请求时自动携带cookie识别当前请求属于那个session。 -
2.4 如何使用session: session相当于一个Map。通过键值对方式传值。
Session session = request.getSession();
赋值:session.setAttribute(key,value);
取值:session.getAttribute(key);
3、cookie
-
3.1 什么是cookie:cookie位于客户端,一个cookie就是一个键值对,一个网站中可以有多个cookie。cookie自动携带在请求中。交给服务器使用
-
3.2 如何使用cookie:new cookie("key","value");
4、servletContext
-
4.1 什么是servletContext:所有客户端共享的信息共享区域,属于整个web应用的空间。在web服务器启动是servletContext就诞生
-
4.2 什么时候使用servletContext:统计当前在线人数。
-
4.3 本质:servletContext本质也是一个Map对象
ServletContext sc = request.getServletContext();
sc.setAttribute('key','value');
网友评论