Cookie和session分别是用来记录用于用户信息,喜好的方法。
Cookie就像是默认不能超过4k,就好像放入用户端的小蛋糕。存在于servlet.http包中。一般使用的方法生成一个cookie对象,然后加入response.add()方法放入到客户端的缓存里面。而获取的时候则用request.getCookie来获取该你留在客户端的所有cookie,然后通过getValue和getName来进行区分。
Cookie有着时效。用setMaxAge方法来设置在客户端停留的时间,单位为秒。同时Cookie是路径相关的。只有同一路径上的下才能获得相应的cookie。并且父路径不允许访问子路径。
同时Cookie有着不太稳定的特性。因为浏览器是可以随时禁用cookie的。一旦禁用,那么你所有的cookie行动都将会毫无用处。所以在在看《尚学堂》的录像中,核心业务逻辑不要用cookie来实现。
Session意味会话。记录着客户端和服务器之间的对话。在API中他只是一个接口,叫做HTTPSession。也是存在于servlet.http包中。由于其是一个接口,所以获得一般都是通过request的getSession来获得。如果要往里面放东西,就用setAtrribute(name,value)。而获得则是get(name).记住要转换类型。
Session的数据是放在服务器端的。但是服务器端通过一个ID号来区分每个Session。同时客户端也是通过这个ID号来和客户端进行联系。在客户端,存储这个ID的有两种方式,一种是cookie,一种是URL重写。但是实际操作中,可以使用两种response的encodeRedirectURL方法来省去麻烦。因为这个方法会自动判断客户端是否支持cookie,如果支持,就返回原始链接。如果不支持,则是会返回经过URL重写的链接。