javaweb开发中Servlet三大域对象的应用(request请求、session会话、application应用)。jsp还有一个。
cookie和session都是会话跟踪技术。
首先cookie是存在客户端的,session存在 服务端的。
两者都可以存放东西,但是cookie不安全,一般只存放简单数据。比如京东的购物车。
cookie只是在相同请求路径下会去携带。
两者都是可以设置过期时间的,这里我主要说一下两者的关系。
当客户端第一次请求服务端,服务端会生成一个session,还有一个32个随机字符的字符串,以32字符串id为key,session对象为value,存放到我们客户端。并且以jSessionid为key,32个随机字符的字符串为value发送给客户端,客户端接收,第二次请求的时候通过cookie来请求客户端,客户端会根据这个jSessionid的值在服务端的session的一个map对象里面去找。这样就实现了会话跟踪技术。
然后说一下为什么cookie客户端禁用后会引发的问题
①当客户端禁用后cookie之后,每次请求服务端都会生成一个session,生成一个session是耗费资源的,那样你服务端的系统性能就会下降。也不会跟踪会话,对于客户操作也不便。
②客户端禁用cookie后,重定向和非重定向,会对请求路径重新编码,将jsessionid直接放到请求路径之后,这样是及其不安全的,因为这样别人就可以通过这个id跟踪到你之前的会话。
最后建议,在符合条件的情况下,域属性空间越小越好。