今天来和大家分享的时候有关cookie的一个基础练习,我们老师给留的一个课后练习:
题目:
用户第一次访问的时候,显示“欢迎,这是您第一次访问”后续用户继续访问的时候显示“欢迎回来,您上次访问的时间为xxx年xx月xx日 hh:mm:ss”
老师后续也给了一些提示:
提示1:你要使用cookie来保存该访问时间
提示2:创建servlet,在里面进行逻辑判断,判断是否有你创建的“lastVisit”名字的 cookie
提示3:每次访问的时候都要存储一个cookie 这个cookie的名字要保持一致
解答:
接下来给大家讲一下我的思路:
第一步:
首先设置一个页面进行跳转,并且简单的设置账号,密码以及form表单的提交
第二步:
设置一个Servlet,并且在其中设置静态的账户和密码,完成一个简单的登录功能。
第三步:
登录成功后进行业务的实现,当用户第一次登录的时候,显示 :欢迎,这是您第一次访问,并且创建一个cookie,传输给浏览器。当用户后续登录的时候则通过cookie是否存在来判断用户是否重复访问。
实现:
第一步 :

第二步+第三步:
写这两步的时候,我犯了一些错误:
1. 可以看见我最开始单一的使用了if else,进行了简单粗暴的判断,导致重复输出:欢迎,这是您第一次访问,这是因为我对cookie中的name进行了简单的判断,只要cookie中name值不是lastVisit的就输出内容,所以后续我是用一个布尔对象——t,并设置true来保证“欢迎,这是您第一次访问”只输出一次,并且输出一次之后将t设为false。
2.如果用户重复访问的时候,我输出的“欢迎回来,您上次访问的时间为xxx年xx月xx日 hh:mm:ss”,会追加在“欢迎,这是您第一次访问”的后面,这并不是我想要的结果,所以我上网查了一下,使用了response.resetBuffer();来清除文本缓存,根据网上的说明,我使用了过后的确是清除了第一次的输出内容。
总结:
这次的码代码的时候,没有对代码的逻辑进行一个仔细的思考,导致后续不得不进行一些修补,对代码的理解仍然不够,考虑的不够仔细,一些小的细节没有想到,除了上述说的问题,其他地方倒也没有很大的问题,对之前的内容也还是有所印象比如时间的格式化等没有忘记。还有一点各个忘记说了的是,当向cookie传入值的时候,如果存在一些空格等字符的时候,需要对其进行编码后在进行添加,这样才能保证能存储到cookie中,同样输出的时候也需要对其进行解码。最后附上老师的代码:(思路可能和我差不多,但是老师的细节就是没有问题,也没有出现第二次输出的内容在第一次后面追加输出的情况)

本文分享了一次关于使用Cookie实现用户访问记录的编程练习。作者首先介绍了问题背景,即在用户首次和后续访问时显示不同的欢迎信息。然后,详细阐述了解决方案的步骤,包括设置页面跳转、创建Servlet以及处理登录逻辑。在实现过程中,作者遇到了判断逻辑错误和输出追加问题,并通过引入布尔变量和response.resetBuffer()方法进行了修复。最后,作者反思了自己在编程时对代码逻辑思考的不足,并提供了老师的代码作为参考,强调了处理Cookie时需要注意的细节,如值的编码和解码。
1万+

被折叠的 条评论
为什么被折叠?



