会话之Session

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了会话之Session相关的知识,希望对你有一定的参考价值。

参考技术A

在WEB开发中,服务器可以为每个客户端浏览器创建一个session对象,默认情况下一个浏览器独占一个session对象。在实际应用当中,服务器程序可以把一些敏感数据写到用户浏览器独占的session中可以提高安全性,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
session和cookie的主要区别是:

在javax.servlet.http包下有个HttpSession类,通过该类就可以操作session。
获取Session对象的方式:通过调用request对象中的getSession()方法就可以获取Session对象了,不需要手动new创建。

public void setAttribute(String name, Object value)
该方法用于向 Session 的中放入一个键值对。
public Object getAttribute(String name)
该方法用于从 Session 中根据名字获取值。
public void removeAttribute(String name)
该方法用于从Session中删除数据。

创建一个名为SessionTest01的servlet用来接收用户传入的数据并放到session对象中:

创建一个名为SessionTest02的servlet从session对象中取得之前用户传入的数据:

Web开发中的 Session机制会为每个浏览器分配了一个 Session。即一个浏览器一个 Session,不同的Session之间的数据不能共享。

会话技术之Session

session运行原理

技术图片

 

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

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

Session是依赖于客户端的

Session技术

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

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

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

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

session对象的生命周期?

获得Session对象

技术图片

 

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

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

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

技术图片

 

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

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

request域对象:一次请求中。

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

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

技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 

总结:

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的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET页面之间传值的方式之Session(个人整理)

Cookie和Session的区别与联系

会话控制

Websocket服务器:每个会话处理关闭事件

如何判断当前会话是不是脏?

Web会话跟踪:Cookie与Session