日历

2008 7.25 Fri
  12345
6789101112
13141516171819
20212223242526
2728293031  
«» 2008 - 7 «»

文章搜索

日志文章

2007年10月28日 00:34:46

cookie,session,application

客户端与服务器端有相关操作时: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()方法取得/设置相关属性;






Tags: servlet重点  

类别: 技术专栏 |  评论(0) |  浏览(580) |  收藏
发表评论