博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cookie详解
阅读量:4182 次
发布时间:2019-05-26

本文共 2277 字,大约阅读时间需要 7 分钟。

            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唐虞之道查看截图。

转载地址:http://oorai.baihongyu.com/

你可能感兴趣的文章
【Java并发编程实战】——Java内存模型与线程
查看>>
Java复制文件的4种方式
查看>>
mysql的JDBC连接工具类
查看>>
利用多线程(用到原子类AtomicInteger)往数据库批量插入大量数据
查看>>
多个线程操作数组
查看>>
定长线程池的应用
查看>>
ArrayBlockingQueue的简单使用
查看>>
Git 常用命令总结(一)
查看>>
Git 常用命令总结(二)
查看>>
JAVA 并发——synchronized的分析
查看>>
Echarts——使用 dataset 管理数据
查看>>
DES 加解密工具类
查看>>
SpringBoot多模块项目实践(Multi-Module)
查看>>
第一篇: 服务的注册与发现Eureka(Greenwich版)
查看>>
第二篇: 服务消费者(rest+ribbon)(Greenwich版本)
查看>>
第三篇: 服务消费者(Feign)(Greenwich版本)
查看>>
获取客户的真实IP地址
查看>>
第四篇: 熔断器(Ribbon+Feign)(Greenwich版本)
查看>>
Linux的常用命令(一)
查看>>
Linux的常用命令(二)
查看>>