文档章节

cookie和session

军无天下
 军无天下
发布于 2014/08/07 23:45
字数 732
阅读 308
收藏 18

cookie和session

cookie是客户端技术,session是服务端技术

cookie保存用户数据的原理:

Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。

当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。


session保存用户数据的原理:

Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,

由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,

当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

cookie和session的区别:

cookie是把用户的数据写给用户的浏览器

session是把用户的数据写到用户独占的session中


使用cookie完成上一次访问时间:

public class ShowLastVisitTimeServlet extends HttpServlet {

			public void doGet(HttpServletRequest request, HttpServletResponse response)
					throws ServletException, IOException {
				//解决乱码问题
				response.setContentType("text/html;charset=UTF-8");
				//首先获取客户端带过来的cookie
				Cookies[] cookie = request.getCookies();
				//解析这个cookies
				Cookie targetCookie = parseTargetCookie(cookies,"lastvisit");
				//判断这个targetCookie
				if(targetCookie == null){
					//说明是第一次访问
					response.getWriter.print("您是第一次访问该网站");
				}else{
					//说明之前访问过,取出来
					String value = targetCookie.getValue();
					response.getWriter().print("上次的访问时间 是 : " + new Date(Long.parseLong(value)));
				}
				Cookie cookie = new Cookie("lastvisit",System.currentTimeMillis()+"");
				//设置cookie的有效期
				cookie.setMaxAge(60*60*24);
				//设置有效路径
				cookie.setPath("/");//其中/代表localhost
				//将cookie回写给客户
				response.addCookie(cookie);

			}
			public Cookie parseTargetCookie(Cookie[] cookies,String name){
				
				if(cookies == null){
					return null;
				}else{

				//遍历cookies
				for(Cookie cookie : cookies){
					
					if(cookie.getName().equals(name)){
						return cookie;
					}
				}
				return null;
			}


session:

实现的原理:给浏览器端回写了一个JSESSIONID的cookie,默认情况下,这个cookie是没有设置有效期的

那么它的有效期就是当前浏览器进程,当浏览器关闭,JSESSIONID就会丢失,下次再带访问时就无法找到

服务器端的session了,找不到不代表服务器端的session不存在,session的有效期默认是半小时,如果

半小时之内都没有访问,那么这个session就会被摧毁

三种销毁session对象情况:

1)不正常关闭服务器(正常关闭服务器,session会被序列化到硬盘中,保存在tomcat/work目录下)

2)session过期,默认过期时间在tomcat\conf\web.xml中配置

<session-config>

<session-timeout>30</session-timeout>

</session-config>

3)在程序中执行session.invalidate();手动销毁session对象

session.removeAttribute()和session.invalidate()的区别:

第一个方法是删除session中一个属性值

第二个方法是销毁session对象,把全部的属性都消除了


© 著作权归作者所有

军无天下
粉丝 1
博文 5
码字总数 4536
作品 0
徐州
私信 提问
PHP学习10——Cookie和Session技术

主要内容: Cookie技术 创建cookie 查看cookie 读取cookie 用cookie记录访问时间和次数 删除cookie cookie的生命周期 Session技术 session工作原理 session控制 session的存储结构 传递sessi...

乌云上
2018/08/08
0
0
python3-django session支持-缓存+数据库Session或cookies加密

  缓存+数据库Session      配置settings.py   SESSIONENGINE='django.contrib.sessions.backends.cacheddb'#引擎   SESSIONCACHEALIAS='default'#使用的缓存别名(默认内存缓存,......

运维菜
2018/03/15
0
0
彻底明白php的session机制

1.session.save_handler = files * 1. session_start() 1). session_start()是session机制的开始,它有一定概率开启垃圾回收,因为session是存放在文件中, PHP自身的垃圾回收是无效的,SES...

雍雍_yoyo
2013/08/22
4.5K
5
cookie与session区别及用法

cookie与session 区别 下面是cookie与session各自的特点,其实通过它们特点的不同就能看出他们的区别,我就不总结区别了,可以将他们的特性进行比较,不同之处就是他们的区别。 cookie特性 ...

马大哈tt
2017/11/21
0
0
Servlet技术 - Cookie与Session

Cookie与Session 会话使用 使用场景 * 偏好记录 * 自动登录 * 浏览记录 原理 * 客户端或者服务端保存用户数据 Cookie与Session Cookie 会话数据保存在浏览器客户端 Session 会话数据保存在服...

抢小孩糖吃
2016/09/03
148
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot 403 问题

添加WebAppConfigurer 配置 @Configuration@EnableAutoConfigurationpublic class WebAppConfigurer extends WebMvcConfigurerAdapter { public WebAppConfigurer() { } ......

布袋和尚_爱吃鱼
27分钟前
3
0
Python自动更换壁纸爬虫与tkinter结合

直接上代码 import ctypesimport timeimport requestsimport osfrom threading import Threadfrom tkinter import Tk, Label, Button,Entry,StringVar,messagebox# '放到AppData\Roami......

物种起源-达尔文
27分钟前
3
0
Postgresql Study 笔记

Postgresql 安装 Windows, MAC Install Postgresql 下载地址: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Linux Install sudo apt-get update sudo apt-get in......

slagga
29分钟前
4
0
layer.open 打开新页面传参问题

如图所示,点击出售,把A页面的数据传到弹框上面,因为弹框比较复杂,所以使用引入一个新页面。 A.html a.js B.html b.js 1、第一种方案 sellInte: function (){ var obj = document.g...

木九天
32分钟前
4
0
沙龙报名 | 区块链数据服务技术应用实践

京东云是国内首家提供区块链数据在线分析服务产品的公司,也是行业内首家对区块链数据服务进行开源的公司。 本次沙龙是京东云BDS开源后,首次在深圳举办线下沙龙,我们将邀请京东云BDS团队核...

京东云技术新知
33分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部