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