`
wenson
  • 浏览: 1053602 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

把一个对象序列化后保存到cookie

    博客分类:
  • Java
阅读更多

下面是把把整个购物车对象序列化为字符串放入Cookie进行存取的方式:

 

存储代码:

private   void  saveCartToCookie(Cart cart)  ... {
        
try   ... {
                 ByteArrayOutputStream baos 
=   new  ByteArrayOutputStream();
              ObjectOutputStream oos 
=   new  ObjectOutputStream(baos);
              oos.writeObject(cart);
            String cookieValue 
=  baos.toString( " ISO-8859-1 " );
            String encodedCookieValue 
=  java.net.URLEncoder.encode(cookieValue,
                    
" UTF-8 " );
            Cookie cookie 
=   new  Cookie(CART_COOKIE_FLAG, encodedCookieValue);
            cookie.setSecure(
false );
            cookie.setPath(getCartCookiePath());
            cookie.setMaxAge(COOKIE_MAX_AGE);
            getResponse().addCookie(cookie);
        }
  catch  (Exception e)  ... {
            log.error(
" 保 存购物车到cookie出错: "   +  e.getMessage());
        }

    }

 

 

读取代码:

private  Cart getCartFromCookie()  ... {
        Cookie cookie 
=  getCartCookie();
        
if  (cookie  ==   null ... {
            
return
null ;
        }


        String cookieValue 
=  cookie.getValue();
        
if  (StringUtils.isEmpty(cookieValue))
            
return   null ;
        
try   ... {
            String decoderCookieValue 
=  java.net.URLDecoder.decode(cookieValue,
                    
" UTF-8 " );
                 Cart result 
=   new  Cart();

                             ByteArrayInputStream bais 
=   new  ByteArrayInputStream(cookieValue
                .getBytes(
" ISO-8859-1 " ));
                            ObjectInputStream ios 
=   new  ObjectInputStream(bais);
                             result 
=  (Cart) ios.readObject();
            
return  result;
        }
  catch  (Exception e)  ... {
            log.error(
" 从 cookie中解析购物车出错: "   +  e.getMessage());
            
return   null ;
        }

    }

 

在序列化时主要是要注意两个部分,首先是先把序列化的字节流转换为ISO-8859-1编码方式的字符串,然后就是再把该字符串编码为UTF-8格式进行 传输。

分享到:
评论
2 楼 无毒欧阳锋 2012-02-28  
锅锅,base64编码下就没有乱码了
1 楼 darklipeng 2011-11-22  
依然有乱码,cookie依然保存不了

相关推荐

    序列化保存对象到Cookie中

    一种常见的做法是将对象序列化后保存到Cookie中。Cookie是一种小型文本文件,服务器可以将其发送到用户的浏览器,并在后续请求时由浏览器返回,这为临时存储用户状态提供了便利。 **序列化** 是将对象的状态转换...

    asp.net序列化cookie-vs2010版本

    在ASP.NET中,序列化是一个关键概念,它涉及到将对象的状态转换为可以存储或传输的数据格式,如XML、JSON或二进制。在本案例中,我们将探讨ASP.NET中的Cookie序列化,特别是在Visual Studio 2010环境下。 Cookie是...

    Cookie购物车序列化

    在上述代码中,我们首先创建了一个包含商品ID、名称和数量的对象数组,然后使用JSON.stringify()将其转换为字符串,接着使用document.cookie将序列化的购物车数据保存到Cookie中。为了应对Cookie编码限制,我们还...

    PHP中的序列化和反序列化

    `serialize()`函数的主要功能是将PHP变量(包括数组、对象等复杂数据类型)转换为一个字符串,这个字符串可以被保存到文件或者通过网络传输。在上述示例中,数组`$stooges`被`serialize()`处理后,输出了一串特殊的...

    WEBSphere反序列化漏扫.rar

    Java 序列化是指把 Java 对象转换为字节序列的过程,便于保存在内存、文件、数据库中,ObjectOutputStream类的 writeObject() 方法可以实现序列化。反序列化是指把字节序列恢复为 Java 对象的过程,...

    ASP.Net如何用Cookies保存对象

    首先,我们需要创建一个可序列化的对象。在.NET中,我们通过添加`[Serializable]`特性标记类,使其成为可序列化的。例如: ```csharp [Serializable] public class Person { public string Name { get; set; } ...

    C#操作cookie,解密加密cookie

    在C#中操作Cookie不仅涉及到基本的添加、读取和删除,还涉及到更高级的功能,如序列化、反序列化,甚至是加密与解密。通过理解和掌握这些技术,开发者可以构建更加安全、高效的应用程序。对于Cookie的管理,尤其是其...

    jquery.cookie实现json添加、查询、删除

    然后,将该对象序列化并保存到Cookie: ```javascript $.cookie('myJson', JSON.stringify(myJson)); ``` 2. **查询Cookie中的JSON**: 要获取Cookie中的JSON数据,首先读取Cookie的值,然后使用JSON.parse()...

    ex_cookie2_excookie_ex_python_EXCookie_

    3. **保存Cookie到文件**: 为了在不同会话间持久化Cookie,我们可以将它们序列化并写入文件。Python的内置`pickle`模块可用于序列化Python对象,包括Cookie字典。这样,我们就可以用`pickle.dump()`将Cookie保存到...

    Extjs 关于 cookie的操作

    其中,`cookieForm` 函数负责将当前表单的数据序列化后存入 Cookie: ```javascript function cookieForm(cookie, saveCookieId) { var myForm = new Ext.form.BasicForm('form'); var inputs = myForm.getValues...

    jquery.jsoncookie.zip

    使用`jquery.jsoncookie.js`插件,你可以方便地将JSON对象序列化成字符串并存入Cookie,或者从Cookie中读取JSON数据并反序列化回对象。以下是一些基本用法: 1. 存储JSON数据到Cookie: ```javascript $.cookie('...

    C#中Cookie之存储对象

    // 序列化用户信息为JSON字符串,并使用UTF-8编码存储到Cookie userInfo.Value = HttpUtility.UrlEncode(ObjectToJson(enUser), Encoding.GetEncoding("UTF-8")); // 将Cookie写入客户端并设置过期时间 System.Web....

    js控制多个div拖拽和拖动、且能保存数据至cookie、数据库、xml

    总的来说,这个主题涵盖了JavaScript事件处理、DOM操作、数据序列化、Ajax通信以及数据持久化等多个重要知识点。熟练掌握这些技能,将有助于提升开发者构建动态、交互性丰富的Web应用程序的能力。

    前端项目-js-cookie.zip

    1. **设置Cookie**:通过`Cookie.set(name, value, [options])`方法可以方便地设置一个Cookie,其中`name`是Cookie的名称,`value`是存储的值,`options`是一个可选的对象,包含过期时间、路径、域名、安全性和...

    jquery json cookie demo

    在这个demo中,JSON可能会被用来存储和传递Cookie中的数据,因为它的结构清晰,便于序列化和反序列化。 Cookie是Web应用程序中用于持久化用户数据的一种机制。它们存储在用户的浏览器中,每次用户访问同一网站时,...

    Jquery.cookie

    - **$.cookie.json()**:当设置Cookie的值时,如果你的值是一个JavaScript对象,可以使用`$.cookie.json()`来序列化对象,并将其存储为JSON格式。读取时,它会尝试将JSON字符串反序列化回原生JavaScript对象。 ```...

    引用外部类实现Flash Cookie的读写

    `data`参数是一个对象,其属性将被序列化并保存到Cookie中。 3. `deleteCookie(name: String): void` - 删除指定名称的Flash Cookie。 4. `clearAllCookies(): void` - 删除所有存储的Flash Cookies。 在`Cookie....

    jquery下的cookie.js文件

    如果Cookie需要存储复杂数据结构,如JSON对象,可将其序列化后再设置: ```javascript var user = { name: 'John Doe', age: 30 }; $.cookie('userInfo', JSON.stringify(user)); ``` 读取时再反序列化: ```...

    jquery cookie插件

    - **$.cookie.json([boolean])**:设置是否使用JSON进行序列化和反序列化。默认为`false`,不使用JSON,但你可以设置为`true`来启用。 - **$.cookie.raw([boolean])**:设置是否保持Cookie值的原始字符串。默认为`...

Global site tag (gtag.js) - Google Analytics