Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26187656
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: 系统运维

2009-04-05 19:03:25

1.网站通过使用数据库来完成此任务。当访问者第一次访问网站时,网站会在数据库中创建一个新ID,并将此ID作为Cookie发送。当用户下一次返回网站时,网站会在数据库中将与此ID相关的计数器递增,从而知道访问者的返回次数。
:》当用户第一次访问一个站点的话就表示这个用户当前客户端的COOKIE值是没有的。
这个ID的话可以用SESSIONID+DATETIME建立起来表示这个ID是唯一的!
如果用户再一次登录这个站点的话就能够查询出来这个ID值了。如果发现有则计数器加一
update cookie set account=account+1 where sessiond=''
这样的话这个COOKIE的话
如果有SESSIONID的话那
这个ID值是写入到了COOKIE的话那:只要用户不清除掉COOKIE的话那是一直会带到服务器上面去的!

比如说:GOOGLE首页。它的布局为什么你第一次定好之后下次还是这样的呢?一样的一般的博客也是这样来设计的。其实原理非常简单的
有一个ID。 然后将布局的相关信息写入服务器的数据库!
然后用户请求相关页面的时候就能够将ID传过去通过ID就能够查询出来对应的布局的样式出来从而得到所需要的样式!

如果要测试的话可以考虑一下用
127.0.0.1 修改hosts文件即可!

session是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是 以Cookie或URL重写为基础。默认使用Cookie来实现,系统会创造一个名为JSESSIONID的输出Cookie,或称为"Session Cookie",以区别Persistent Cookies(通常所说的Cookie).Session Cookie是存储在浏览器中,并不是写在硬盘上的

session的工作原理
就session的实现而言,好像是这样的:
(1)当有Session启动时,服务器生成一个唯一值,称为SessionID(好像是通过取进程ID的方式取得的)。
(2)然后,服务器开辟一块内存,对应于该SessionID。
(3)服务器再将该SessionID写入浏览器的cookie(一些在网页的源代码中有所体现)。
(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放该内存块。
(5)当浏览器连入IIS(服务器)时并请求的ASP(脚本语言)内用到Session时,IIS(服务器)就读浏览器Cookie中的SessionID。
(6)然后,服务检查该SessionID所对应的内存是否有效。
(7)如果有效,就读出内存中的值。
(8)如果无效,就建立新的Session。

以下内容学习自:http://blog.csdn.net/seakingwy/archive/2007/12/13/1933664.aspx
心得总结如下:
1.通常Session Cookie是不能跨窗口使用,当用户新开了一个浏览器进入相同的页面时,系统会赋予用户一个新的SessionID,这样信息共享的目的就达不到,此时 可以把SessionID保存在Persistent Cookie中,然后再新的窗口中读出来,就可以得到上一个窗口的SessionID了,这样通过Session Cookie和Persistent Cookie的结合,实现了跨窗口的会话跟踪。
点评:我用JSP进行测试发现session.getId() 在IE窗口不同窗口下不同而如果是通过ctrl+N的话是一样!

注意:
(1)在大浏览量的网站,Session并不保险,我们过去的网站就经常碰到存在Session中得值不正确(可能出现重复的Session ID)。
(2)Session ID不能从硬盘上的Cookie文件获得,如果想在客户端获知自己的Session ID,只能通过JavaScript来读取。

B。学习JSP中的COOKIE相关方法总结
getDomain()/setDomain():获取/设置Cookie适用的域。
使用这两个方法可以指示浏览器把Cookie返回给同一域内的其他服务器。一般地,Cookie只返回给与发送它的服务器名称完全相同的服务器。注意域必须以点开始(例如.sitename.com),非国家类的域(如.com,.edu,.gov)必须包含两个点,国家类的域(如.com.cn,.edu.uk)必须包含三个点
比如说 .tianya.cn
getMaxAge()/setMaxAge():获取/设置Cookie过期之前的时间,以秒计。如果不设置该值,则Cookie只在当前会话内有效,即在用户关闭浏览器之前有效,而且这些Cookie不会保存到磁盘上。
getName()/setName():获取/设置Cookie的名称
getPath()/setPath():获取/设置Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下的所有 页面。这里的方法可以用来设定一些条件。例如,someCookie.setPath("/"),此时服务器上的所有页面都可以接收到该Cookie。点评:正如此意呀。哈哈
getSecure()/setSecure():获取/设置一个boolean值,该值表示Cookie是否只能通过加密的连接(即SSL)发送。





阅读(765) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~