Cookie详解

            Cookie详解

Cookie用于网站记录客户的信息,如我们登录网站时可以将用户名和密码存储在浏览器的客户端。网站能够根据Cookie得到用户的信息。Session在浏览器关闭之后就会失效,Cookie会存储在浏览器的客户端,除非超出cookie生命周期。

   因为cookie不是jsp的内置对象,所以使用cookie前需要先创建cookiejsp9大内置对象不需创建可直接使用。

  1、 首先向浏览器中写入cookie。(代码均经过测试,测试环境myeclipse2010

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

 <title>向客户端添加cookie</title>

  </head>

  

  <body>

      姓名:<%=request.getParameter("username")%><br>

      年龄:<%=request.getParameter("age")%>

      

   <%

       String username=request.getParameter("username");

       String age=request.getParameter("age");

       //创建一个新的cookie对象co1

       Cookie co1=new Cookie("username",username);

       //创建一个新的cookie对象co2

       Cookie co2=new Cookie("age",age);

       //设置cookie的有效期

       co1.setMaxAge(60*60);

       co2.setMaxAge(60*60);

       //向客户端增加cookie1cookie2

       response.addCookie(co1);

       response.addCookie(co2);

    %>

  </body>

</html>

在浏览器地址栏中输入以下地址(建议使用谷歌浏览器,注意乱码,默认为ISO)参数可自行设定。

 

2、通过request.getCookies()方法采用for-each循环获取客户端存储的Cookie

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>获取一组cookie</title>

  </head>

  

  <body>

    <%

    //以数组的形式获取一组cookie

    Cookie[] cookies = request.getCookies();

    //for-each循环遍历所有cookie

    for(Cookie c:cookies)

    {

    out.println(c.getName()+""+c.getValue()+"<br>");

    }

    %>

  </body>

</html>


 

 

  1. 默认情况下,cookie值不准出现中文值(这也就是我们的username为啥一般是英文),存储中文时,我们可以可以先编码,读取Cookie时再解码。编码(java.net.URLEncoder)解码(java.net.URLDecoder

    编码代码:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

      <head>

        <title>cookie中存储中文</title>

      </head>

      

      <body>

        <%

         Cookie co3 = new Cookie("chinesename",java.net.URLEncoder.encode("太原理工大学","gbk"));

        co3.setMaxAge(60*60);

         response.addCookie(co3);

         %>

      </body>

    </html>

    解码代码:

    <%@page import="java.net.URLDecoder"%>

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

       <head>

           <title>得到中文cookie</title>

       </head>

       <body>

        <%

          Cookie[] cookies=request.getCookies();

           for(Cookie c:cookies)

           {

               if(c.getName().equals("chinesename"))

               {

                out.println(java.net.URLDecoder.decode(c.getValue()));

               }

           }

         %>

      </body>

    </html>

    先访问编码页面,再访问解码页面。执行结果:

     注:所有运行截图上传无效,可关注weibo唐虞之道查看截图。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值