jsp开发网站使用cookie的一点经验

cookie|js

在开发网站应用程序的过程中,使用cookie记录用户的一些信息是比较常用的一种方法,而cookie的使用也非常简单。如果我们在jsp程序中希望得到cookie的值,只需要使用HttpRequest.getCookies()即可得到所有cookie的值,而把值写入客户端的cookie文件也非常容易,是需要创建一个cookie,然后调用HttpReponse.addCookie(Cookiec)即可。但是我们在使用过程中往往会忽略一个问题,就是如果在一个页面中多次写一个cookie,那么结果如何呢?我们现在看一下下面两个页面的代码,test.jsp代码如下:<%      Cookie c = new Cookie("test_cookie_name","test_cookie_value");      response.addCookie(c);      Cookie c1 = new Cookie("test_cookie_name","test_cookie_value_new");      response.addCookie(c1);%><a href="test1.jsp">show cookie value</a>test1.jsp代码如下:<%      Cookie[] cs = request.getCookies();      for(int i=0;i<cs.length;i++){              out.println(cs[i].getName()+"  "+cs[i].getValue()+"<br>");      }%>我们打开test.jsp,然后点击链接,进入test1.jsp,我们会发现,页面里的内容如下:test_cookie_name  test_cookie_valueJSESSIONIDQiv2X8CVzyA6T0hNzrVNHFJUepeAiG8magiz2bREKiUP1Pyiiebq!-1263017589!-1062731417!80!443我们可以看到test_cookie_name的值是test_cookie_value,这说明我们第二次调用response.addCookie()没有起到任何作用。为了更加确定这一说法我把test.jsp的代码做了一定的改动:<%for(int i=0;i<8;i++){      Cookie c = new Cookie("test_cookie_name","test_cookie_value"+i);      response.addCookie(c);    }%><a href="test1.jsp">test</a>通过测试可知结果还是一样,已有第一次赋的值真正的被写入了cookie。有人也许会说,我们可以通过request.getCookies()得到所有cookie,然后找出这个要写的cookie,然后改变值,测试代码如下:test.jsp代码:<%      Cookie c = new Cookie("test_cookie_name","test_cookie_value");      response.addCookie(c);      Cookie c1 = new Cookie("test_cookie_name","test_cookie_value_new");      response.addCookie(c1);      Cookie c2 = new Cookie("test_cookie_name1","test_cookie_value1");      response.addCookie(c2);      Cookie[] cs = request.getCookies();      for(int i=0;i<cs.length;i++){              if(cs[i].getName().equals("test_cookie_name1")){                      cs[i].setValue("test_cookie_value1_new");                      response.addCookie(c2);                      break;              }      }%><a href="test1.jsp">show cookie value</a>测试结果还是证明这种做法不能解决我们遇到的问题,test_cookie_name1的值仍是test_cookie_value1,而不是test_cookie_value1_new,其实我们仔细想一下就可以知道,这个解决方案是行不通的。因为我们知道,对于一个页面中的request和response,是一次http请求产生的,request是http请求中的所有参数,因此包含了发出这次http请求时cookie的值,而response是对于这次http请求webapplication产生的反应,所以它可以写cookie的值,这样看来,request得到的cookie的值,和response要写的cookie的值可以说是完全不同的,简单地说request得到的cookie的值是在这次http请求之前的cookie的值,而response要写得值是这次http请求之后的cookie的值。所以上面的解决方案是无法行得通的。而我现在还没有发现有什么好的解决方案能够是的cookie记录下我们最后一次写入的值,因此对于这个问题我们只能在代码中做到,对于每个http请求,对于每个cookie的值,只写一次,从而保证cookie的正确性。版权所有:idilent 网站转载请注明作者 其他转载方式请与作者联系(idilent@yahoo.com.cn)。

时间: 2024-08-03 17:00:45

jsp开发网站使用cookie的一点经验的相关文章

五年站长 浅谈网站推广优化的一点经验

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 对于这个网站,已经运营了五年了,在这五年中,有改域名,有改版,有被K,也有排名非常好的时候,他汇聚着作为一个站长非常多的心血,也留下了很多悲壮的故事,悲则悲矣,都已从过去,作为一个创业者,很多时候,就是水手一般,擦干泪,在风雨中继续前行! 今天,就以本人的经历,写下一些粗糙的文字,希望这些文字,能够给站长朋友们一点点帮助! 下面是案例网站当前

【JSP开发】利用cookie实现商品浏览记录

在主页中显示商品,点击商品可以查看商品的具体信息,带用户浏览完之后,回到主页,就会看到自己曾经浏览过什么商品. 商品主页Servlet CookieDemo3.java: package cn.edu.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.LinkedHashMap; import java.util.Map; import javax.servlet.ServletExc

【JSP开发】利用cookie返回上次登陆时间

实现一个页面,当用户登陆进去之后会显示上次用户登录的时间. 这个是主页,会显示用户上次登录的时间(原理是从cookie中提取)和记录这次用户访问 的时间并加入到cookie中. CookieDemo1.java: package cn.edu.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import javax.servlet.ServletException; im

JSP开发中Cookie使用详解

用JSP创建cookie 什么是cookies 大家都知道,浏览器与WEB服务器之间是使用HTTP协议进行通信的,当某个用户发出页面请求时,WEB 服务器只是简单的进行响应,然后就关闭与该用户的连接.因此当一个请求发送到WEB服务器时,无论其 是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知.为了弥补这个缺陷, Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息,因此人们昵称为"小甜饼 ".cookies是一种WEB服务器通过浏览器在访问

jsp-请问JSP开发中多媒体网站,上传的视频是如果做到视频缩影的?

问题描述 请问JSP开发中多媒体网站,上传的视频是如果做到视频缩影的? 如题,请问JSP开发中多媒体网站,上传的视频是如果做到视频缩影的? 解决方案 调ffmpeg 获取视频关键帧,作为缩略图 解决方案二: 缩影是什么意思?是压缩么,如果是的话用h.264编码压缩 解决方案三: 用过一个叫CK Player的一个插件,网页视频播放器,挺好用的可以去看看 解决方案四: 上传的视频是如果做到视频缩影 不懂也问问

jsp开发的网站 前台页面都是用什么做的 是dreamweaver

问题描述 请问一个弱智问题jsp开发的网站前台页面都是用什么做的是dreamweaver吗 解决方案 解决方案二:dreamweaver是所见即所得的网页设计软件当然可以完成前台页面的设计此外前台静态页面设计师还需要photoshopdiv+css等等方面的素养

做完一个小网站的一点经验总结(1): asp.net 与access数据库结合

access|asp.net|数据|数据库 第一次跟别人做东西,自己的一点经验,写下来,虽然比较菜,但还是要做点记录,如有错误缺漏,请各位不吝赐教,谢谢: )以前都是用asp.net 与sqlServer2000 结合做东西的,这次是用access,虽然是第一次用,但感觉与sqlServer2000的用法区别不大,以下对二者的用法做比较:SqlServer2000:    1>命名空间  using System.Data;                          using Syst

现场纪实:如何入侵基于JSP的网站

js 编者:<现场纪实>是黑客攻防专区新推出的小版块.在这里我们将陆续为您介绍一些网上黑客入侵的真实案例,与以往从网站安全人员的角度讲述不同,这些案例都是从黑客的角度来描述入侵的全过程.通过这些案例,您可以很清楚了解到黑客在入侵一个网站时所采用的技术手段及采取的策略.涉及具体技术细节,本栏目会做相应处理,因为我们的目的是通过这样的技术交流共同提高网络的安全性,而非恶意攻击他人的计算机. 很偶然的一个机会,浏览到一个网站,页面清新让人感觉很舒服.网站是用JSP开发的,出于个人爱好,我决定测试一下

如何使用 velocity 模板引擎开发网站

模板 开发网站-velocity模板引擎">基于 Java 的网站开发,很多人都采用 JSP 作为前端网页制作的技术,尤其在是国内.这种技术通常有一些问题,我试想一下我们是怎样开发网站的,通常有几种方法: 1:功能确定后,由美工设计网页的UI(界面)部分,然后由程序员在其上加入代码显示逻辑(比如循环,判断显示数据结果).也就是通常的 jsp 页面制作,当然这部分可以由美工完成模板,然后由 jsp 工程师再继续以它为原型创建相应的 jsp 页面. 2:功能确定后,由美工设计网页的UI(界面)