简介
现在每天整理笔记,第一是巩固知识,第二是把学过的变成自己的。虽然笔记内容很普通,但掌握能这些,变成自己的知识,也是挺不错的
学习技巧
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