- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
JavaWeb核心技术中Session与Cookie浅析
目录会话Cookie曲奇饼干cookieAPI编码问题删除cookie网页中查看cookieSession会话SessionAPISession与Cookie
会话
会话:用户打开浏览器进行的一系列操作直至关闭浏览器的过程看作是一次会话
HTTP协议是无状态的,不能实现跟踪对话。比如进入一个网站,每次操作的请求之间相互独立,无法相互联系。也就是说你每次请求过后得到的服务器响应或者数据无法被保存。
跟踪会话的两种技术:
就服务端来讲,采用Session技术。服务器为每一个用户创建了一个唯一的Session标识用于跟踪和管理该用户的资源。用户在下次提交请求时会一并提交Session标识用于服务器识别然后记录该用户的状态客户端,Cookie技术。Cookie也叫做硬盘Cookie,因为Cookie存储在每一个客户端的硬盘之上。用户在第一次访问服务器时,由服务器通过响应头的方式将用户cookie传递给浏览器。之后的访问会将请求与cookie一并提交在理解上:Session可以看作是服务器对于该用户的标记,而cookie是位于客户端的标识,客户提交请求时一并提交cookie,服务器将会根据客户的cookie找到对应的session标识从而实现跟踪会话
当用户关闭浏览器后,对应的Cookie标识也会随即销毁,但此时服务器端session并未失效,只是由于cookie销毁后无法继续跟踪用户会话
Cookie
曲奇饼干
理解为:用户的信件也可以理解为该用户的标志由用户携带
用户向服务器发送的请求当中会包含该cookie
而浏览器也会根据该cookie判断该用户是否访问过本网站从而得知该用户的数据是否已经存在
使用过的cookie会保存在本地的用户目录下
cookieAPI
//上面提到过用户的请求会携带cookie所以要从客户端获取到cookie
Cookie[]cookies=req.getCookies();//--返回Cookie数组
//创建cookie两个参数键name--值value
Cookiecookie=newCookie(LoginTimes,System.currentTimeMillis()+);
//获取键
cookie.getName()
//获取值
cookie.getValue()
//设置Cookie有效期--24*60*60表示24小时*60分钟*60秒
cookie.setMaxAge(24*60*60);
//响应给客户端一个Cookie(信件)
resp.addCookie(cookie);
cookie示例浏览器显示用户上次的访问时间
//参考下方的doGet方法体
//--显示上次访问的时间
req.setCharacterEncoding(UTF-8);
resp.setCharacterEncoding(UTF-8);
resp.setHeader(contenttype,text/html;charset=UTF-8);
System.out.println(resp编码:+resp.getCharacterEncoding());
System.out.println(req编码:+req.getCharacterEncoding());
PrintWriterout=resp.getWriter();
//从客户端获取Cookie
Cookie[]cookies=req.getCookies();//--返回Cookie数组
//判断该用户是否已经存在Cookie
if(cookies!=null){
out.write(LastTimeLoginTime:);
for(Cookiecookie:cookies){
//遍历找到访问时间的CookiegetName获得cookie中的键
if(cookie.getName().equals(LoginTimes)){
//获取LoginTimes-Cookie的值--value
longl=Long.parseLong(cookie.getValue());
Datedate=newDate(l);
out.write(date.toLocaleString());
//记录本次访问的时间--新建Cookie
Cookiecookie=
文档评论(0)