java学习笔记————本质篇2
来源:互联网 发布:凤凰于飞 知乎 编辑:程序博客网 时间:2024/04/29 18:23
10.Cookie:Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。客户端会保存Cookie,并会标注出Cookie的来源//哪个服务器的Cookie当客户端向服务器发出请求时会把所有这个服务器Cookie包含在请求中发送给服务器,这样服务器就可以识别客户端了Cookie是服务器送给浏览器的小纸条!保存在客户端的!当客户端再次发出请求时,会把这个服务器的cookie归还给服务器!服务器通过cookie来识别客户端状态! // 根据服务器,来区别发送cookieCookie的覆盖:如果服务器端发送重复的Cookie那么会覆盖原有的CookieCookie添加与获取:客户端访问AServlet,AServlet在响应中添加Cookie,浏览器会自动保存Cookie。然后客户端访问BServlet,这时浏览器会自动在请求中带上CookieCookie cookie = new Cookie("id", id);response.addCookie(cookie);//响应cookie 到浏览器端 保存在浏览器端!Cookie的生命: Cookie在客户端的有效时间cookie.setMaxAge(-1) // 表示只在浏览器 内存中 存活。 一旦关闭浏览器窗口,那么cookie就会消失。cookie.setMaxAge(0) // 它表示cookie被作废! 作删除操作cookie.setMaxAge(60*60) // 表示cookie对象可存活1小时 当生命大于0时,浏览器会把Cookie保存到硬盘上Cookie中根本不能保存中文: 除非先编码 再解码11.Session:我们可以把一个会话内需要共享的数据保存到HttSession对象中!session底层是依赖Cookie的!!! // javax.servlet.http.HttpSession接口表示一个会话获取HttpSession对象:request.getSesssion() // 如果当前会话已经有了session对象那么直接返回, 如果当前会话还不存在会话,那么创建session并返回;request.getSession(boolean) // 当参数为true时,与requeset.getSession()相同。 如果参数为false,那么如果当前会话中存在session则返回,不存在返回null;HttpSession是域对象: // 下面三个是 Servlet中 可以使用的 域对象 而JSP中可以多使用一个域对象 pageContextServletContext:一个项目只有一个对象 //一个应用只创建一个ServletContext对象,所以在ServletContext中的数据可以在整个应用中共享,// 只要不重启服务器,那么ServletContext中的数据就可以共享HttpSession: 一个会话只有一个对象 //一个会话创建一个HttpSession对象,同一会话中的多个请求中可以共享session中的数据HttpServletRequest:一个请求只有一个对象 //一个请求创建一个request对象,所以在同一个请求中可以共享requestAPI:setAttribute(String name, Object value)getAttribute(String name)removeAttribute(String name)getAttributeNames()void setMaxInactiveInterval(int interval):设置session允许的最大不活动时间(秒),如果设置为1秒,那么只要session在1秒内不被使用,那么session就会被移除;void invalidate():让session失效!调用这个方法会让session失效,当session失效后,客户端再次请求,服务器会给客户端创建一个新的session,并在响应中给客户端新session的sessionId;String getId():获取sessionId,其实它就是一个UUID,32位长的字符串;int getMaxInactiveInterval():获取session可以的最大不活动时间(秒),默认为30分钟。当session在30分钟内没有使用,那么Tomcat会在session池中移除这个session;long getCreationTime():返回session的创建时间,返回值为当前时间的毫秒值;long getLastAccessedTime():返回session的最后活动时间,返回值为当前时间的毫秒值;boolean isNew():查看session是否为新。当客户端第一次请求时,服务器为客户端创建session,但这时服务器还没有响应客户端,也就是还没有把sessionId响应给客户端时,这时session的状态为新。session的实现原理:session底层是依赖Cookie的!// 服务端 session 与 sessionID绑定 客户端通过响应回的cookie("sessionID",sessionID) 在下一次请求时,通过发送此cookie,让服务端识别1:首次访问服务器,创建一个session对象,存放到session池中。再把session的id保存到cookie中发送给浏览器。 //cookie("sessionID",sessionID)2:浏览器保存的sessionId。session则保存在服务器中3:当客户端再次访问服务器,客户端会归还cookie,即sessionId4:服务器再通过sessionId知道对应的session 对象,进行操作.5:保存sessionId 的cookie 是内存cookie,浏览器关闭,cookie 没了。 // cookie.setMaxAge(-1)session与浏览器:session保存在服务器,而sessionId通过Cookie发送给客户端,但这个Cookie的生命只能是-1,即只在浏览器内存中存在.当用户再次打开浏览器访问服务器时,就不会有sessionId发送给服务器,那么服务器会认为你没有session,所以服务器会创建一个session,并在响应中把sessionId保存到Cookie中发送给客户端。 你可能会说,那原来的session对象会怎样?当一个session长时间没人使用的话,服务器会把session删除了!这个时长在Tomcat中配置是30分钟,可以在${CATALANA}/conf/web.xml找到这个配置,当然你也可以在自己的web.xml中覆盖这个配置!
0 0
- java学习笔记————本质篇2
- java学习笔记————本质篇
- java学习笔记————本质篇1
- java学习笔记————本质篇3
- java学习笔记————本质篇4
- java学习笔记————本质篇5
- java学习笔记————本质篇6
- java学习笔记————本质篇7
- c# 本质论学习笔记——(1)数据类型
- Java学习——Servlet 本质是什么 servlet运行原理
- 《COM本质论》笔记——引子
- Java学习之路全攻略——编程本质论-Java基础-Java-编程开发
- 深入java虚拟机——enum本质
- 【Objective-C学习笔记】核心语法——类的本质、description方法
- 黑马程序员——【Java反射学习】反射的应用:测试泛型的本质
- 提高学习效率的方法一——厘清本质的本质
- java学习笔记—
- 并发编程实战学习笔记(一)——线程安全性问题的本质以及理论概述
- 纯js访问webService(wsdl)
- 时间戳
- 使用PHP调用Matlab接口实现一个简易的计算器
- AutoMapper创建Mapper对象
- xhprof windows下安装和使用(windows版本)
- java学习笔记————本质篇2
- linux下文件时间戳
- 多线程 CreateThread与_beginthreadex本质区别
- Matlab中gradient函数的使用方法
- Reorder List
- java int short long float double 大整理(不要错过) ,
- inet_pton()和inet_ntop()函数详解
- Vmtools安装不成功的解决办法
- 发现一个python的第三方包