客户端与服务器端有相关操作时:1.服务器端会生成一个唯一的编号 2.把保存客户端浏览器相关信息以及自己网页的相关信息的cookie传递给客户端.
cookie分为两种:一种是设定了生命周期的cookie(通过文本文件写入自己的网页信息,这样可以让不同的网站只能拿自己的cookie)
另一种是没有设定生命周期的cookie,该cookie存在单个浏览器所对应的内存中,而不
是通过文本文件的方式写入到客户端硬盘中,故其他浏览器不能访问到这个cookie;即使是两个浏览器访问同一个服务器页面也不能共享内存中的cookie;
重点:一个servlet/jsp文件写的cookie只能够被和该servlet/jsp文件在相同url路径或其子路径下的serlet/jsp文件拿到;
对于cookie:
如果浏览器支持cookie,创建session的时候会把sessionId是存放在浏览器在内存的cookie中的,
如果浏览器不支持cookie,必须自己编程使用url重写的方式实现session,response.encodeURL(),首先要解决转码问题,然后url后面加入sessionid
session是存储在服务器端内存中,记录客户端相关操作,每个session都只和自己相对应的浏览器相关,sessionId是存放在浏览器在内存的cookie中的。
在程序中得到session对象的方法是通过:request.getSession(true);
而对于getSession(true)方法,则表示如果客户端浏览器没有得到一个sessionid则服务器端就会在内存中分配空间创建并存储该session,如果浏览器有一个sessionid服务器就会拿到那个sessionid所对应的session。从而得到该浏览器在服务器端都做了什么!session是以key-value形式存储的,key都是string类型,value是object类型,故session中可以存任何东西!
而对于getSession(false)方法,则表示不会给浏览器创建和存储一个session
重点:session不像cookie拥有路径访问的问题;同一个web application下的servlet/jsp可以共享同一个session的,但前提是同一个浏览器窗口或其子窗口;(每个session只与同一个浏览器相对应)session是以最近的访问时间开始计算失效时间的,可以通过tomcat的conf路径下的web.xml中的
<session-config>
<session-timeout>30</session-timeout>
</session-config>
来设定session失效时间,
对于application是能够被该web application下的全部servlet访问;
在API中表现为ServletContext
通过HttpServlet的getServletContext方法拿到;通过ServletContext的get/setAttribute()方法取得/设置相关属性;
cookie,session,application
最新推荐文章于 2024-09-10 10:54:43 发布