问题描述
1.除了服务器关闭和重启,什么时候还会调用servlet的destroy方法?2. 网上购物系统里边,当用户退出的时候,购物车里的信息该怎么弄?我回答的是:可以放在数据库里持久化,下次再登录的时候读出来. 然后面试官问:还有其他方法没?我:可以放在cookie里,但是不是很安全,但是cookie里的东西是可以被用户修改的. 面试官:这个一般没人去修改吧?我:我觉得cookie的方法不太安全,放服务器上还是最好的 面试官:那有什么方法可以防止用户修改cookie?我:加密吧... 面试官:怎么弄?我:我说 把信息变成字符串,然后加密下,到服务器上再解密 面试官:那不是还没解决这个问题?我想了想 ,最后说不知道第二个问题 怎么用cookie解决? 问题补充:面试官的意思是让我用cookie解决的梦中有你 写道
解决方案
你写入Cookie有数据是吧?把那个封装数据的对象实现Serializable接口(把包含用户浏览过的商品信息用对象流写入硬盘,下次再浏览的时候进行反序列化),Cookies可以修改,但是这个序列化是改不了的,改了也不影响对数据的反序列化 而且,写入的文件类型随你定是什么后缀的 不影响反序列化 这个不是更好吗?比Cookie安全多了
解决方案二:
唉,面试官给你下套,你非要往里钻? 可以用另一种方式完成 有些功能完成不了的 要不然现在怎么会有那么多技术前仆后继?
解决方案三:
写到数据库可以。不过这样会很多查询操作。。不是很好。。。一般放在SESSION中。。退出时候持久化。。下次再读出来放入缓存。。
解决方案四:
一般购物车那块存放用户选购商品的信息是用map集合(K:strID--V:ProductBean)来暂时存放 如果客户退出之后还想查看购物车信息的话那就只能把数据存起来了(没账号的游客也行,一起存入数据库) 或者实现序列化接口,把对象写入硬盘,修改不了的