• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    jsp使用cookie存储中文示例分享

    看J2EE的时候,看见书上讲到使用cookie保存信息的时,看到书上举得例子都是英文的键值对,我就想中文是不是一样呢?试了一下果然不一样。废话不多说,直接上代码:

    比如说有addCookie.jsp代码如下:

    复制代码 代码如下:

    html xmlns="http://www.w3.org/1999/xhtml">
    head>
        title>增加cookie/title>
    /head>
    body>
    %
    String name = request.getParameter("name");
    Cookie c = new Cookie("username",name);
    c.setMaxAge(3600);
    response.addCookie(c);//添加cookie
    %>
    /body>
    /html>

    在地址栏中输入localhost:8080/webDemo/addCookie.jsp?name=测试名字即可完成cookie添加。

    下面就该是取出cookie了,getCookie.jsp代码如下:

    复制代码 代码如下:

    html xmlns="http://www.w3.org/1999/xhtml">
    head>
        title>增加cookie/title>
    /head>
    body>
    %
    Cookie[] cookies = request.getCookies();//取出cookie
    for(Cookie cc:cookies)//遍历找到对应的cookie
    {
        if(cc.getName().equals("username"))
        {
            out.println(cc.getValue());
        }
    }
    %>
    /body>
    /html>

    但是当在地址栏中输入localhost:8080/webDemo/getCookie.jsp时发现报错,造成这种情况是因为编码原因根据RFC 2109中的规定,在Cookie中只能包含ASCII的编码。

    那么就只能在设置cookie时,将中文编码一下就行了。改进代码如下:

    复制代码 代码如下:

    %
    String name = request.getParameter("name");
    byte[] rawName = name.getBytes("ISO-8859-1");
    String strName = new String(rawName,"GB2312");//得到参数的中文字符串形式
    Cookie c = new Cookie("username",URLEncoder.encode(strName,"UTF-8"));
    c.setMaxAge(3600);
    response.addCookie(c);
    %>
    %
    Cookie[] cookies = request.getCookies();
    for(Cookie cc:cookies)
    {
        if(cc.getName().equals("username"))
        {
            String str = URLDecoder.decode(cc.getValue(),"UTF-8");//解码
            out.println(str);
        }
    }
    %>

    其他地方问题不大,就是在下面这段代码中,有人做的不一样。

    复制代码 代码如下:

    byte[] rawName = name.getBytes("ISO-8859-1");
    String strName = new String(rawName,"GB2312");//得到参数的中文字符串形式
    Cookie c = new Cookie("username",URLEncoder.encode(strName,"UTF-8"));

    我搜了很多资料,都只有一段代码,形如:Cookie c = new Cookie("username",URLEncoder.encode("孙悟空","UTF-8"));

    把中文直接放在encode方法的参数位置,看起来可以直接在name=request.getParameter("name");后就调用上面的Cookie c = new Cookie("username",URLEncoder.encode(name,"UTF-8"));代码段,看起来好像没有错,但是我实践中发现会产生乱码,我用的是火狐浏览器,然后我就加了两段代码,就是:byte[] rawName = name.getBytes("ISO-8859-1");
    String strName = new String(rawName,"GB2312");才没有产生乱码,具体为什么会产生这样的原因,我尚不知道,不知哪位大神可以解释一下。

    您可能感兴趣的文章:
    • 关于jsp中cookie丢失问题(详解)
    • jsp实现cookie的使用
    • 用JSP操作Cookie
    • JSP实现浏览器关闭cookies情况下的会话管理
    • jsp源码实例5(cookie)
    • JSP的Cookie在登录中的使用
    上一篇:不让tomcat显示目录文件列表的配置方法
    下一篇:jsp中include指令静态导入和动态导入的区别详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    jsp使用cookie存储中文示例分享 jsp,使用,cookie,存储,中文,