一、cookie的操作

对Cookie的操作无外乎三部分:读、分析、写。

写Cookie

Cookie theCookie = new Cookie(“username” , “Tom”);

response.addCookie(theCookie);

当Servlet向客户端写Cookie时,还可以通过Cookie类的setMaxAge(intexpiry)方法来设置Cookie的有效期。参数expiry以秒为单位,它具有以下含义:

·如果expiry大于零,就指示浏览器在客户端硬盘上保存Cookie的时间为expriy秒。

·如果expiry等于零,就指示浏览器删除当前Cookie。

·如果expiry小于零,就指示浏览器不要把Cookie保存到客户端硬盘。Cookie仅仅存在于当前浏览器进程中,当浏览器进程关闭,Cookie也就消失。

Cookie默认的有效期为-1。对于来自客户端的Cookie,Servlet可以通过Cookie类的getMaxAge()方法来读取Cookie的有效期。

读取分析客户端Cookie

Cookie[] cookies = request.getCookies();

HttpServletRequest类的getCookies()方法返回一个Cookie数组,它包含了HTTP请求中的所有Cookie。如果在HTTP请求中没有任何Cookie,那么getCookies()方法返回null。

对于每个Cookie对象,可调用getName()方法来获得Cookie的名字,调用getValue()方法来获得Cookie的值。

二、常用的Cookie类方法

String getName()   用于返回Cookie的名称

void setValue(String name)    用于设置Cookie的值

String getName()    用于返回Cookie的值

void setMaxAge(int expiry)    用于设置Cookie在浏览器客户端上保存的秒数

int getMaxAge()     用于获取Cookie在浏览器客户端上保存的秒数

void setPath(String uri)    用于设置该Cookie项的有效目录路径

String getPath()    用于获取该Cookie项的访问目录路径

void setDomain(String pattern)    用于设置该Cookie项的有效域

String getDomain()    用于返回该Cookie的项有效域

void setVersion(int v)    用于设置该Cookie采用的项协议版本

int getVersion()    用于返回该Cookie项采用的协议版本

void setComment(String purpose)    用于设置该Cookie项的注解部分

String getComment()    用于返回该Cookie项的注解部分

void setSecure(boolean flag)    用于设置该Cookie项是否只能采用安全协议传送

boolean getSecure()    用于返回该Cookie项是否只能使用安全的协议传送

三、Cookie案例(1)——显示用户上次访问时间

(1)新建 LastAcessServlet 类

老规矩,还是在 Servlet 项目下,新建 com.liuyanzhao 包,然后新建LastAcessServlet.java

  1. package com.liuyanzhao;
  2. import java.io.IOException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.Cookie;
  7. import javax.servlet.http.HttpServlet;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import org.apache.jasper.tagplugins.jstl.core.Out;
  11. /*
  12. * @author LiuYanzhao
  13. */
  14. public class LastAcessServlet extends HttpServlet{
  15. private static final long serialVersionUID = 1L;
  16. public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
  17. //指定服务器输出内容的编码方式为UTF-8,防止乱码
  18. response.setContentType("text/html;charset=utf-8");
  19. /*
  20. * 设定与个人cookie的name为:lastAcessTime
  21. * 读取客户端发送的cookie获得用户上次访问的时间显示
  22. */
  23. String lastAcessTime = null;
  24. //获取所有cookie,并将这些cookie存放在数组中
  25. Cookie[] cookies = request.getCookies();
  26. for(int i=0;cookies!=null && i<cookies.length;i++) {
  27. if("lastAcess".equals(cookies[i].getName())) {
  28. //如果cookie名称为lastAcess,则获取该cookie的值
  29. lastAcessTime = cookies[i].getValue();
  30. break;
  31. }
  32. }
  33. //判断是否存在名称为lastAcess的cookie
  34. if(lastAcessTime==null) {
  35. response.getWriter().print("您是首次访问本站");
  36. } else {
  37. response.getWriter().print("您上次访问本站的时间是:"+lastAcessTime);
  38. }
  39. //创建cookie,将当前时间作为cookie的值发送给客户端
  40. String currentTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
  41. Cookie cookie = new Cookie("lastAcess", currentTime);
  42. cookie.setMaxAge(60*60);
  43. //发送cookie
  44. response.addCookie(cookie);
  45. }
  46. protected void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
  47. this.doPost(req, resp);
  48. }
  49. }

(2在 web.xml 里添加 LastAcessServlet 映射

  1. <servlet>
  2. <servlet-name>LastAcessServlet</servlet-name>
  3. <servlet-class>com.liuyanzhao.LastAcessServlet</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <!-- 映射为 LastAcessServlet -->
  7. <servlet-name>LastAcessServlet</servlet-name>
  8. <url-pattern>/LastAcessServlet</url-pattern>
  9. </servlet-mapping>

(3)重启 Tomcat , 打开浏览器

①在浏览器输入:http://localhost:8080/ServletTest/LastAcessServlet

②刷新浏览器或者关闭浏览器,重新输入刚才的 url

本文链接:https://liuyanzhao.com/4905.html

java中Cookie类详解相关推荐

  1. java remove removeat_2016.3.12 Java中ArrayList类详解(转)

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...

  2. Java中dimension类详解

    dimension - Java的一个类 dimension是Java的一个类,封装了一个构件的高度和宽度,这个类与一个构件的许多属性具有相关性,因此在Component类中定义多个与之有关的方法,L ...

  3. Java中Unsafe类详解

    http://www.cnblogs.com/mickole/articles/3757278.html java不能直接访问操作系统底层,而是通过本地方法来访问.Unsafe类提供了硬件级别的原子操 ...

  4. Java中JDBC连接数据库详解

    今天动力节点java学院小编分享的是JDBC连接数据库的相关知识,希望通过看过此文,各位小伙伴对DBC连接数据库有所了解,下面就跟随小编一起来看看JDBC连接数据库的知识吧. 一.JDBC连接数据库概 ...

  5. JAVA的StringBuffer类详解

    JAVA的StringBuffer类详解 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer ...

  6. JAVA中的Random详解

    JAVA中的Random详解 首先,在JDK自带的常用的random中有两个,这俩都是产生随机数的,不过一个是util下的random,另外一个是Math下的.我们分别介绍一下 util中的rando ...

  7. java中new关键字详解

    java中new关键字详解 在java中我们可以经常使用new来创建一个对象,但是这对于初学者来说可能只会使用却不能理解new关键字和它的语法 new关键字的语法 注意使用前先导包,一般我们使用ide ...

  8. java之Pattern类详解

    在JDK 1.4中,Java增加了对正则表达式的支持. java与正则相关的工具主要在java.util.regex包中:此包中主要有两个类:Pattern.Matcher. Pattern  声明: ...

  9. Java中super关键字详解

    Java中super关键字详解 super有什么用? super什么时候不可以省略呢? super在内存图中是如何存在的呢? super使用时的注意事项 super有什么用? (1)当子类中构造方法第 ...

  10. php closure 类,PHP中Closure类详解

    本文主要和大家分享PHP中Closure类详解,PHP Closure 类是用于代表匿名函数的类,匿名函数(在 PHP 5.3 中被引入)会产生这个类型的对象,Closure类摘要如下:Closure ...

最新文章

  1. html怎么插入外部js,如何插入js,引用外部js,js在页面中的位置
  2. 腾讯的电商,在东南亚击败了阿里巴巴
  3. 快速获取OpenCV库(Lib)文件下的所有文件的目录名~
  4. oracle产品追溯,如何追溯AR到Receipt再到GL
  5. 《scikit-learn》通过GridSearchCV来进行超参数优化
  6. Git生成ssh密钥指定文件
  7. centos7 安装mysql8_CentOS7中安装MySQL8.0.21爬坑记录
  8. Python入门基础教程(儿童版) [分享一本入门级教程]
  9. ENTBOOST V2014.183 Linux发布,开源企业IM免费企业即时通讯
  10. SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对照注解方式的优缺点)...
  11. 拓客系统专用服务器,北京拓客系统
  12. 如何html设置下载的字体呢?
  13. php文件怎么改为mp3,如何将wav转换成MP3格式的音频文件
  14. html 制作箭头,怎么使用html制作箭头?制作箭头代码分享!
  15. 网络冗余备份之VRRP技术备份网关(上)
  16. video截取视频内容作为封面
  17. PS光影神话完整版下载安装
  18. 【c++】设置控制台窗口字体颜色和背景色(system和SetConsoleTextAttribute函数 )
  19. Unity2d 学习笔记(四)碰撞检测
  20. 科学家即将揭示人类大脑神经网络结构的奥秘

热门文章

  1. barplot函数--R语言
  2. 菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options...
  3. 新手指南: 手把手教你安装 Ubuntu 和 Fedora
  4. OSChina 周三乱弹 —— 九招助你工资秒长(干货哟)
  5. sqlServer数据库自动备份
  6. 基于jQuery UI CSS Framework开发Widget
  7. illustrative visualization思考
  8. pythonsqlite3模糊_让 Python 更加充分的使用 Sqlite3
  9. git与idea结合,实现通过idea向远程仓库gitee发送代码和获取代码
  10. python正则表达式思考_Python正则表达式由浅入深(一)