JavaWeb之Cookie&Session(六)

简介

现在每天整理笔记,第一是巩固知识,第二是把学过的变成自己的。虽然笔记内容很普通,但掌握能这些,变成自己的知识,也是挺不错的

学习技巧

Cookie和Session学习时,明白如何使用以及原理。剩下时间大量练习案例,增加对Cookie和Session的认识

Cookie对象

0. 会话管理

会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话

会话过程中要解决的问题
每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,服务器要想办法为每个用户保存这些数据

1. Cookie简介

什么是cookie
Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了

特点
保存在浏览器缓存中,不安全,300个,每隔cookie大小不超过4个
浏览器要不要把cookie给服务器
domain+path+name(只有name也相同,才能找到value)
你的路径.startWith(domain+path):如果是以path开头,name也正确,此时就通过cookie请求头发给服务器

底层实现:
	服务器给客户端set-cookie: showtime=234212349

2. 创建Cookie

创建Cookie
得到客户端发过来的Cookie
Cookie []cookies= request.getCookies();   //cookie:name=value请求头
服务器写回Cookie给浏览器
Cookie cookie = new Cookie("name","value");
response.addCookie(cookie实例);

Cookie文件中数据存储格式
showTime   1421718610521     localhost    /day09_00_showtime/servlet/
name       value	     domain       path

3. 能被访问的URL特点

1.Cookie 能被访问要符合:MYURL.startWith(domain+path)完全匹配   然后再找name也匹配,此时才能访问到value

http://localhost:8080/day09_00_showtime/servlet/abc/ShowTimeServletDemo5  //给
http://localhost:8080/day10_00_cookie/servlet/ShowTimeServlet  //不给
http://localhost:8080//day09_00_showtime/ShowTimeServlet    //不给

2.给不给传cookie是由浏览器决定的,取决于MYURL.startWith(domain+path)完全匹配

确定唯一Cookie
domain+path+name
localhost/day05_01_cookie/servlet/   + lastAccessTime

4. Cookie中属性

name:(必须)
value:(必须)不能是中文
maxage:(可选)最长存活时间.默认是会话。单位是秒
path:(可选)路径
	一个cookie的默认路径是:写cookie的那个servlet的访问路径。
	写cookie的servlet的路径是:String path =/day05_01_cookie/servlet/
如果访问的路径.startWith(path),浏览器就会把刚才写的cookie带给服务器。
domain :(可选)域名
comment:(可选)注释
version:(可选)版本号

5. 服务器与客户端读写Cookie

服务器如何向客户端写Cookie:
HttpServletResponse.addCookie(javax.servlet.http.Cookie)(实际上就是写了一个Set-Cookie的响应消息头)
浏览器对于一个网站最多存20个cookie(Cookie的个数是有限的)
	cookie总数不能超过300个。
	每个Cookie大小不能超过4KB。

服务器如何取出客户端带来的cookie:
	HttpServletRequest.getCookies() (实际上就是获取 名字为cookie的请求消息头)

Session对象

1. HttpSession是什么

servlet 容器使用此接口创建 HTTP 客户端和 HTTP 服务器之间的会话。会话将保留指定的时间段,跨多个连接或来自用户的页面请求。一个会话通常对应于一个用户,该用户可能多次访问一个站点。服务器能够以多种方式维护会话,比如使用 cookie 或重写 URL

2. Session和Cookie区别

Session和Cookie的主要区别在于:
Cookie是把用户的数据写给用户的浏览器
Session技术把用户的数据写到用户独占的session中
Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象
不是访问一个页面就创建session,而是遇到语句request..getSession();就创建了一个session

3. 获取Session

这两种方法是一样的,先判断有没有,有直接返回,没有创建一个新的
	HttpSession session =  request.getSession();
	HttpSession session = request.getSession(true);

只获取,没有返回null,少了一个创建的工作
	HttpSession session = request.getSession(false);

4. Session实现原理

跟Cookie一样,只不过不发数据,发一个JSessionId的号码如果浏览器发送的JSessionId与服务器的JSessionId一样,说明是同一个Session,数据此时就存在这个Session中

Set-cookie:JSESSIONID=23354354543543   响应头
cookie:JSESSIONID=23354354543543       请求头

Session就是把它当成一个域对象来用   (就是一次会话过程)
内部维护了一个Map集合
	setAttribute("key",Object);
	Object value = getAttribute(key);
	removeAttribute(key);

存活时间:30分钟(空闲的)会销毁------------>(具体配置,tomcat安装目录/conf/web.xml  ----搜索30)
session.invalidate();//强制销毁

5. 解决禁用Cookie后servlet共享数据导致的问题

response. encodeRedirectURL(java.lang.String url)
用于对sendRedirect方法后的url地址进行重写。
response. encodeURL(java.lang.String url)
用于对表单action和超链接的url地址进行重写 

案例(参考代码篇)

Cookie案例
显示时间
保存用户名
显示最近浏览记录

Session案例
使用Session完成用户登陆
利用Session实现一次性验证码
利用Session防止表单重复提交
购物车
时间: 2024-10-10 07:25:49

JavaWeb之Cookie&Session(六)的相关文章

JavaWeb之Cookie&Session

Cookie Http请求是无状态的,为了保证在同一网站能够识别登录的用户,引入了Cookie这个概念,cookie是浏览器保存在用户电脑上的一小段文本,用来保存用户在网站上的必要的信息.Web页面或服务器告诉浏览器按照一定的规范存储这些信息,并且在以后的所有请求中,这些信息就会自动加在http请求头中发送给服务器,服务器根据这些信息判断不同的用户.并且cookie本身是安全的 常用方法 response.addCookie() 向响应头添加cookiecookie.setMaxAge() 设置

JavaWeb——会话技术Cookie & Session

会话技术 因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话技术是帮助服务器记住客户端状态(区分不同的客户端) 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会话技术就是记录这次会话中客户端的状态与数据的.会话技术分为Cookie和Session: Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端 可以清除cookie Session:将数据存储到服务器端,安

JavaWeb之cookie缓存技术

web应用的会话技术:打开浏览器并访问网站,请求多个资源,关闭浏览器的过程. 在这个过程中,缓存用户数据常用的有两种技术: 1.cookie技术:用于在浏览器端,缓存用户的数据,可以理解为数据缓存在用户本地 2.session技术:用于在服务端,缓存用户的数据,可以理解为数据缓存在服务器. cookie技术: 1.服务器需要缓存数据,将数据发给浏览器,浏览器对缓存数据进行存储;当浏览器再次访问服务器的时间后,会将缓存信息,一起发给服务器. 2.cookie技术的原理图解: 根据上图分析如下: a

JavaWeb学习总结——Session(转载)

JavaWeb学习总结--Session(转载) 一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务. 二.Session和Cookie的主要区别 Cookie是把用户的数据写给用户的浏览器. S

Python Web学习笔记之Cookie,Session,Token区别

一.Cookie,Session,Token简介 # 这三者都解决了HTTP协议无状态的问题 session ID or session token is a piece of data that is used in network communications (often over HTTP) to identify a session, a series of related message exchanges. Session identifiers become necessary

【转】学习总结--Cookie & Session总结

转载地址:http://www.phperzone.cn/portal.php?aid=718&mod=view 一.状态管理1)什么是状态管理?   将浏览器与web服务器之间多次交互过程当做一个整体来处理,并且将多次交互所涉及的数据进行管理.2)状态管理技术cookie:    a,什么是cookie?   是一种客户端(浏览器)的状态管理技术.   浏览器在访问web服务器的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,浏览器会将这结数据保存下来:当浏览器再次访

JavaWeb利用cookie记住账号

JavaWeb利用cookie记住账号. 首先,来看看界面什么样子. 记住账号最普遍的做法,就是在点击登录时,将账号保存到cookie中. 材料准备 <script src="${ctx}/background/js/jquery-1.7.2.js" type="text/javascript"></script> <script src="${ctx}/background/js/jquery.cookie.js"

Cookie&amp;&amp;Session会话技术之再体验

1.转发与重定向[****]    * 重定向:重新确定请求方向        * 发送者:服务器 --> 响应(response)浏览器        * 执行者:浏览器 --> 重新请求        * 跳转        * response.sendRedirect("/day04/1.html");        * //完全等价,隐藏了HTTP协议的具体要求        * response.setStatus(302);        * response

cookie,session,sessionid

http协议是无状态的,意思是每次请求的状态不会保存.因此,产生了cookie,session之类保存会话状态的机制.1.什么是cookiecookie将信息存储在客户端浏览器中.cookie的内容主要包括:key,value,expire_time,path(路径),domain(域)浏览器发送请求是会查找对应的path,domain,把符合的cookie自动发送给服务器. 2.什么是sessionsession在服务器端生成,然后会将对应的sessionid在浏览器端使用cookie保存起来