会话技术
来源:互联网 发布:新浪网络猫耳宝贝 编辑:程序博客网 时间:2024/06/01 22:19
一、会话技术:
1).隐藏表单域:<input type="hidden">,非常适合步需要大量数据存储的会话应用。
2).URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。 见http://blog.csdn.net/xh16319/article/details/8464055
3).Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP
响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个
Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至
在客户端计算机重启后它仍可以保留其值。 见:http://blog.csdn.net/xh16319/article/details/8464319
4).Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话
二、什么是会话?
三、会话过程中要解决的一些问题?
例如:多个用户点击超链接通过servlet各自购买了一个商品,服务器应该想办法把每个用户的商品保存在各自的地方,以便于这些用户点击结账servlet时,结账sevlet可以得到用户各自购买的商品为用户结账。
四、这些数据保存在request行不行?
五、为什么需要cookie技术(会话技术)?
//先获取cookie
//假设我们保存上次登录时间的cookie"lastTime""2011-11-11"
//这里我们需要考虑一个情况:用户第一次登录
Cookie []cookies=request.getCookies();
boolean b=false;//假设没有lasttime cookie
if(cookies!=null){
for(Cookie cookie:cookies){
//取出名
SimpleDateFormat simpleDateFormat =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2. 购物网站显示曾经浏览过的商品?
用之前的技术,可以把相关信息存在数据库,然后在页面显示时根据对应用户信息从数据库提取 。但是,有时候我们发现没登陆时也能看到浏览历史。这种情况下,用数据库技术是没法实现的。
3. 如何把登录的用户名和密码保存到自己电脑,下次登录不需要重新输入?
解决的根本是cookie技术
Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
创建cookie是在服务器,保存cookie是在浏览器。
部分代码:
//创建cookie
Cookie小结
如果cookie重名会有什么问题?
实际应用:
Cookie的细节讨论:
5.cookie存放中文怎么处理?
存放:
String val=java.net.URLEncode.encode(“顺平”,“utf-8”);
取出:
String val=java.net.URLDecode.decode(cookie.getValue,“utf-8”);
特别声明:
如果该web应用只有一个cookie,则删除该cookie后,在浏览器的临时文件夹下没有该cookie文件,如果该web应用有多个cookie,则删除一个cookie后,文件还在,只是该cookie没有了。
Session技术
一些问题:
1. 例如淘宝网,张三和李四他们购买的商品不一样,他们的购物车中显示的商品也不一样,这是怎恶魔实现的?
2. 不同的用户登录网站后,不管该用户浏览该网站的哪个页面,都可显示登录人的名字,同样可以随时去查看自己的购物车中的商品。
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其他web资源时,其他web资源再从用户各自的session中取出数据为用户服务。
对session的说明:
1. session是存放在服务器内存中
2. 一个用户浏览器,独享一个session域对象。
3.session生命周期默认30分钟。(在Tomcat的配置中可以看到为30分钟),也可以修改
Session可以用来做什么?
1. 网上商城的购物车
2. 保存登录用户的信息
3. 将某些数据放入session,供同一个用户在各个页面使用
4. 防止用户非法登了到某个页面
如何理解session?
可以把session想成一个容器类似于HashMap,有两列。每一行就是session的属性。
每个属性包含两个部分,一个是该属性的名字(String),另一个是它的值(Objiec)。
如果同一个用户浏览器像session设置一个属性的时候,如果属性名相同会出现什么情况?
会替换。
Session小结:
1. session是存放在服务器内存中的
2. 生命周期
<session-config>
也可以在程序中修改。session.setMaxInactiveInterval(60);60s是指发呆时间,在这个时间内访问了,session就重新开始计时。在此时间内如果没有访问,所有session均失效。
Session生命周期是发呆时间。如果重启Tomcat或是reload web应用或是关机了,session会失效。我们也可以通过方法invalidate()可以让session瞬间失效,该方法通常用于安全退出。该方法是让session中所有属性失效。
如果希望某一个session属性失效,可以使用方法removeAttribute(String name)。
Cookie的生命周期是指累计时间,不管用户是否访问过cookie.
3. 一个用户浏览器独享一个session域对象
4. session中可以存放多个属性
5. session可以存放对象
6. 如果session.setAttribute(“name”,val),如果名字重复,则会替换该属性
如何防止用户放入诶发登录到某个页面?
思路:
当用户成功登录后,可以把用户信息存放在session,然后在需要验证的页面中获取用户信息,如果为null,说明用户非法,可以让其重新登录
使用浏览器访问某个servlet,其他浏览器快可以渠道这个servlet存的数据吗?
不能,这样会导致混乱。
Session的深入理解:
服务器器是如何实现一个session为一个用户浏览器服务的?
第一次创建session会生成一个session id号,一个id号对应一个客户端浏览器。
为什么第一次访问知道去创建session?因为第一次访问servlet没有带id号,所以服务器知道去创建session的同时生成一个特定的id号,并将该id号返回给浏览器,下次访问时就不需要再创建。
www.sourceforge.net开源之祖
Session实际应用案例:
用户登录时验证输入验证码是否正确
为什么需要验证码?防止嗅探密码,这样会对服务器数据库造成很大压力。
运用程序从图片识别数字是很困难的一项技术。
验证码案例:
原理:使用java的绘画技术
这里最重要的就是生成验证码的servlet
如何使用
<img src=”/验证码url”/>实际上是向服务器的一次请求,不管是图片还是url,都是文件,有一个请求的过程。所以也可以请求servlet。
对session的销毁时间的讨论。
如何实现,关掉IE后,再开IE,上次购买的商品还在?(涉及到session的销毁时间)
/把session id保存在cookie中,保存id时,一定要按照规范命名
如果阻止cookie,session也不能用,因为session和cookie是有一定关系的。
如何实现,IE禁用cookie后还能用session?
解决方案:URL重写
Cookie与session的区别
Session存在服务器内存中,一个session域对象为一个用户浏览器服务
2. 安全性
Cookie示意明文方式存放在客户端,安全性较弱,可以通过md5加密后再保存
Session是存放在服务器端内存中,所以安全性较好
3. 网络传输量
Cookie会传递信息给服务器
Session的属性值不会给客户端
4. 生命周期
Cookie的生命周期是累计的,从创建时就开始计时,20分钟后cookie的生命周期结束,cookie就i无效
Session的生命周期是间隔的,从创建时开始计时,如20分钟,没有访问过session,那么session无效(指无法取出session属性),如果在20分钟内访问过session,那么它的生命周期重新计时
关机会造成session生命周期结束,但对cookie没有任何影响
a.关闭Tomcat
b.reload web应用
c.时间到
d.invalidate也会让session失效(主要用于网站安全退出)
使用原则:
因为session会占用服务器内存,因此不要向session中存放过多过大的对象,这样会影响性能。
5. 访问范围
Session为一个用户浏览器独享
Cookie为多个用户浏览器共享
- 会话技术
- 会话技术
- 会话技术
- 会话技术
- 会话技术
- 会话技术
- 会话技术
- 会话技术
- 会话技术
- 会话技术
- 会话技术
- 会话技术
- 会话技术
- Servlet会话跟踪技术
- 会话cookies技术
- 会话跟踪技术
- JavaWeb之会话技术
- session会话跟踪技术
- codeforces 735 B Urbanization
- 简单选择排序法
- Ubuntu 16.04 64位+Qt 5.7.1+opencv 3.2.0 + opencv_contrib 3.2.0
- [bigdata-031] python3+selenium 做抓取
- 蓝桥杯——回形取数
- 会话技术
- HDU2062 Subset sequence
- Linux中使用lsof命令如何恢复删除的文件?
- 机房那些事儿---犯错之实时错误‘94’
- linux运维学习第八课
- plsql中配置oracle客户端
- 查找最大文件等shell集锦
- 译——Singletons (单例模式多种方式分析)
- spring集成hibernate