session
1.session的理解:session是服务器端与客户端浏览器的会话过程,主导是在服务器端,第一次请求时会服务器会自动产生一个session,并赋予一个sessionID(用来标识该session对象),这个ID会给客户端浏览器,以后客户端接着请求本应用中其他资源的时候,会自动在请求头上添加:Cookie:JSESSIONID=客户端第一次拿到的session ID。等客户端再次请求时服务器会根据sessionID找到对应的session对象 提供给客户端使用,第一次请求的时候不会带sessionID,第二次请求的时候会带上sessionID。一个会话之只有一个session!
2.关于session的什么时候产生,以及它的有效时间是怎么计算的,session存放在哪?多次请求的时候sessionID是一样的么?
一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建,故可以从请求中获取session;session是从他最近的一次与客户端会话开始的,当session超时,或者设置为invalid或者服务关闭的时候session就删除了;session一般存放在内存中,会耗资源;按理说每次请求都会产生一个新的session,但在一个浏览器窗口中,多个标签同时访问一个页面,则session是一个,如果多个窗口之间同时或者相隔很短时间访问一个页面,session是多个的,通过url来访问用一个应用的不同资源则session是一样的
3.关闭浏览器是不会删除session的,session是一个容器,可以存放会话过程中的任何对象。
cookie
1.cookie是就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,客户端每次向服务器发送请求的时候都会带上这些特殊的信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header)当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,如果你勾选了它之后再登录,那么在下一次访问该网站的时候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。