session运行原理

session会话图解 session会话技术_服务器端

 

张三表示要买手机,发出请求,然后我们在服务器端开一个内存给张三 并且生成jsessionid号为123(唯一的),然后把手机存进去,然后服务器把这个内存的

jsessionid号响应到客户端,保存到客户端,然后等会张三想结算的时候 就用这个jseessionid号来寻找刚才他的那块区域。

Session是依赖于客户端的

Session技术

Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间 存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内 存空间。所以说Session的实现是基于Cookie,Session需要借助于Cookie存储客 户的唯一性标识JSESSIONID

在Session这我们需要学习如下三个问题:

怎样获得属于本客户端的session对象(内存区域)?

怎样向session中存取数据(session也是一个域对象)?

session对象的生命周期?

获得Session对象

session会话图解 session会话技术_服务器端_02

 


 第一次给你创建,如果已经有了就不会创建了会把之前创建的给你。一个客户端只能有一个session区域

一个客户端一个jsessionid,一个游览器是一个客户端

怎样向session中存取数据(session也是一个域对象)

session会话图解 session会话技术_session会话图解_03

 


之前我们也学了两个域对象

一个servletcontext域对象:整个web应用。整个web项目

request域对象:一次请求中。

session域对象:如果没设置session持久化的话。一次会话中。

cookie不是域对象,域对象都是在服务器上的

session会话图解 session会话技术_客户端_04

 


 

session会话图解 session会话技术_客户端_05

 

 

session会话图解 session会话技术_服务器端_06

 

 

session会话图解 session会话技术_session会话图解_07

 

 

session会话图解 session会话技术_服务器端_08

 

 

总结:

Cookie技术:存在放在客户端

创建cookie对象:

Cookie cookie = new Cookie(name,value)

设施持久化时间:

cookie.setMaxAge(秒)

设置路径

cookie.setPath()

发送cookie

response.addCookie(cookie)

 

获得cookie

Cookie[] cookies = request.getCookies();

遍历后可以获得(增强for)

cookie.getName();

cookie.getValue();

 

Session技术:存到服务器端 借助cookie存储JSESSIONID

获得session对象

HttpSession session = request.getSession();

往session域里存值

setAttribute(name,value);

往session域里取值

getAttribute(name);

session会话图解 session会话技术_session会话图解_09