Cookie踩坑经历

这篇博客记录了在Java应用中使用Cookie保存和读取Google Map的zoom及location信息时遇到的问题与解决方法。内容包括监听地图事件写入Cookie、Java读取Cookie以及在Tomcat高版本中遇到的数据有效性检查问题。
摘要由CSDN通过智能技术生成

很久没用cookie了,最近遇到要使用cookie的需求;公司web项目中在使用google map。

大抵需求是用户使用地图,退出系统时记录map zoom和center location,

再次登录时显示上一次的地图状态。

浅显分析,有三个要点:

1.地图移动,缩放等都要记录

2.退出时,记录在库

3.登录时查库,用库里的数据初始化地图。

先实现需求,以后再考虑更好方案,如此要做到:

1.监听地图,将zoom和location记录在cookie;

2.从cookie取值存库;

3.从库中取值,写入cookie;

一步一步来:

一、监听地图,写入cookie,google 提供许多监听事件,再次举一例,如下

google.maps.event.addListener(map, "zoom_changed", function() {
var location = map.getCenter();
var lastZoom = map.getZoom();
document.cookie="zoom="+lastZoom+";path=/;";

var los= new Array(); //定义一数组 
los=String(location).split(',');
document.cookie="lat="+String(los[0]).replace('(','')+";path=/;";
document.cookie="lng="+String(los[1]).replace(')','')+";path=/;";

});

最初打算把经纬度频道一起,逗号分隔就好了,一起放cookie里,

要注意奥,重点(敲黑板),cookie中的数据不能包含逗号分号等。。。。

还有上边的红色字体,"/"表示cookie读取路径,也可以理解为权限。像我这里前后端交互使用的,一定要用“/”.

二、java读取cookie

从request里直接读取就好了

Cookie[] cookies=request.getCookies(); 
if(cookies!=null){

String zoom="10";
for(int i=0;i<cookies.length;i++){
Cookie cookie = cookies[i];
if(cookie.getName().equalsIgnoreCase("zoom")){
zoom = cookie.getValue();
}

}

三、写入cokie

Cookie zoom1=new Cookie("zoom",sysUser.getZoom());
zoom1.setPath("/");
logger.info("befoe add zoom");
response.addCookie(zoom1);

此处也要注意path

还有一点,tomcat7或者更低版本,在写入cookie时,不检查数据有效性,

我服务器上使用tomcat9,本地正常,服务器部运行,放大exception才发现

高版本tomcat做了更安全的检查,有特殊字符,如逗号都要抛异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值