`

java Cookie操作总结

阅读更多
java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和cookie的路径问题。

可在同一应用服务器内共享方法:设置cookie.setPath("/")
本机tomcat/webapp下面有两个应用:webapp_a和webapp_b,
1.原来在webapp_a下面设置的cookie,在webapp_b下面获取不到,path默认是产生cookie的应用的路径。
2.若在webapp_a下面设置cookie的时候,增加一条cookie.setPath("/");或者cookie.setPath("/webapp_b/");
就可以在webapp_b下面获取到cas设置的cookie了。

建立一个无生命周期的cookie,即随着浏览器的关闭即消失的cookie,代码如下

HttpServletRequest request  
HttpServletResponse response
Cookie cookie = new Cookie("cookiename","cookievalue");
response.addCookie(cookie);



下面建立一个有生命周期的cookie,可以设置他的生命周期

cookie = new Cookie("cookiename","cookievalue");
 
cookie.setMaxAge(3600);
 
//设置路径,这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问
 
cookie.setPath("/");
response.addCookie(cookie);



下面介绍如何读取cookie,读取cookie代码如下

//这样便可以获取一个cookie数组
Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies){
    cookie.getName();// get the cookie name
    cookie.getValue(); // get the cookie value
}



上面就是基本的读写cookie的操作。我们在实际中最好进行一下封装,比如增加一个cookie,我们关注的是cookie的name,value,生命周期,所以进行封装一个函数,当然还要传入一个response对象,addCookie()代码如下


/**
 * 设置cookie
 * @param response
 * @param name  cookie名字
 * @param value cookie值
 * @param maxAge cookie生命周期  以秒为单位
 */
public static void addCookie(HttpServletResponse response,String name,String value,int maxAge){
    Cookie cookie = new Cookie(name,value);
    cookie.setPath("/");
    if(maxAge>0)  cookie.setMaxAge(maxAge);
    response.addCookie(cookie);
}



读取cookie的时候,为了方便我们的操作,我们希望封装一个函数,只要我们提供cookie的name,我们便可以获取cookie的value,带着这个想法,很容易想到将cookie封装到Map里面,于是进行下面的封装


/**
 * 根据名字获取cookie
 * @param request
 * @param name cookie名字
 * @return
 */
public static Cookie getCookieByName(HttpServletRequest request,String name){
    Map<String,Cookie> cookieMap = ReadCookieMap(request);
    if(cookieMap.containsKey(name)){
        Cookie cookie = (Cookie)cookieMap.get(name);
        return cookie;
    }else{
        return null;
    }   
}
 
 
 
/**
 * 将cookie封装到Map里面
 * @param request
 * @return
 */
private static Map<String,Cookie> ReadCookieMap(HttpServletRequest request){  
    Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
    Cookie[] cookies = request.getCookies();
    if(null!=cookies){
        for(Cookie cookie : cookies){
            cookieMap.put(cookie.getName(), cookie);
        }
    }
    return cookieMap;
}



转自:http://www.cnblogs.com/muzongyan/archive/2010/08/30/1812552.html

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java URLConnection全面总结(包括cookie的详细操作).docx

    java URLConnection全面总结(包括cookie的详细操作)

    java URLConnection全面解析(通俗易懂,包括cookie操作和上传文件)

    java URLConnection 的详细介绍,牛人项目经验的总结,绝对通俗易懂,包括cookie操作,上传文件,以及下载网页等介绍,是非常难得文档和教材

    java 面试题 总结

    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...

    JAVA基础学习总结笔记

    看的东西不在多,而在于精, 程序设计最重要的就是上级操作了, 既然选择了,就该要有坚持的觉悟... Cookie使用. ...里面是当年自学JAVA时的一些笔记,内容都是TXT格式的,都是一些基础性的概念总结。

    Java语言基础下载

    获取Cookie 565 HTTP响应报头--Response 566 会话管理 566 Servlet过滤器 569 Servlet监听器 576 内容总结 579 独立实践 580 第二十九章: Jsp 技术 583 学习目标 583 JSP介绍 584 JSP语法 584 模板元素 588 指令...

    xmljava系统源码-xutils:Java工具类项目,Java-Commons

    Cookie操作 FreemarkerUtils.java Freemarker操作 GsonTools.java JSON常用的想换转换 HttpUtils.java HTTP操作 PinYinUtils.java 汉字转拼音 SimpleXmlUtils.java Bean和XML相互转换 ZipUtils.java

    自动化测试面试题总结.docx

    一、linux 1,linux常用命令 2,某个时间段日志的查询 3,linux文件的上传和下载 二、功能测试 1,工作中所遇到的错误 2,测试流程: 3,测试计划元素: ...10,python操作图像 11,python的replace()方法的使用

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    java堆(Java Heap) 51 方法区 51 【JVM】JVM内存结构,GC垃圾收集解析 52 【JVM】双亲委派模型中,从顶层到底层,都是哪些类加载器,分别加载哪些类? 55 【JVM】能不能自己写个类叫java.lang.System? 57 【JVM】...

    JavaWeb总结xmind

    JavaWeb阶段的知识点分类总结:包括数据库操作,事务操作,tomcat,servlet,cookie、session、服务端开发等

    《在线视频播放平台》疑难杂症总结笔记.zip

    《在线视频播放平台》前后台-前端功能演示,Redis实现首页热点数据缓存 防止缓存雪崩 延迟双删实现缓存同步 登录校验 退出登录 Cookie Redis模拟Session 项目笔记讲解总结。登录的过程: ​ 前台获取username和user...

    Java学习笔记-个人整理的

    {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{...

    PHP3程序设计

    或Java Server Pages更好吗 3 1.9 总结 4 第2章 安装PHP 5 2.1 基本概念 6 2.2 编译前的准备工作 7 2.3 编译C编译器gcc 8 2.4 编译MySQL 8 2.5 测试MySQL 9 2.6 编译iODBC和MyODBC 12 2.7 编译PHP 12 2.8 安装...

    JSP实用技巧集合,jsp编程的一些小技巧总结

    jsp编程的一些小技巧总结,绝对实用。包括JSP编程中常用的js技术。 1.JSP编程中常用的js技术 2. 在下拉列表框里选择一个值后跳出新窗口? 3. 在JSP中启动execl? 4. 两级下拉列表框联动菜单? 5. java中如何把一个目录...

    ajax乱码解决汇总

    ajax乱码解决总结 第一,javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的, 第二,utf-8是每个汉字(unicode字符)用3个字节来存储。 第三,用utf-8来send数据是不会出现乱码的,是后台程序...

    《在线视频播放平台》前后台-前端功能演示.zip

    《在线视频播放平台》前后台-前端功能演示,Redis实现首页热点数据缓存 防止缓存雪崩 延迟双删实现缓存同步 登录校验 退出登录 Cookie Redis模拟Session 项目笔记讲解总结。登录的过程: ​ 前台获取username和user...

    《在线视频播放平台》重点讲解-pom-登录-文件上传-缓存.zip

    《在线视频播放平台》前后台-前端功能演示,Redis实现首页热点数据缓存 防止缓存雪崩 延迟双删实现缓存同步 登录校验 退出登录 Cookie Redis模拟Session 项目笔记讲解总结。登录的过程: ​ 前台获取username和user...

    javalruleetcode-ziliao:ziliao

    对题目做了一个大致分类,并对每种题型的解题思路做了总结。 排序、并查集、栈和队列、红黑树、散列表。 操作系统 :laptop: 进程管理、内存管理、设备管理、链接。 基本实现原理以及基本操作。 网络 :cloud: 物理层...

    leetcodepower-CyC2018:原作者repo地址https://github.com/CyC2018/CS-Notes

    对题目做了一个大致分类,并对每种题型的解题思路做了总结。 排序、并查集、栈和队列、红黑树、散列表。 :laptop: 操作系统 进程管理、内存管理、设备管理、链接。 基本实现原理以及基本操作。 :cloud: 网络 物理层...

    leetcode-CyC2018-CS-Notes:CyC2018-CS-笔记

    对题目做了一个大致分类,并对每种题型的解题思路做了总结。 排序、并查集、栈和队列、红黑树、散列表。 :laptop: 操作系统 进程管理、内存管理、设备管理、链接。 基本实现原理以及基本操作。 :cloud: 网络 物理层...

    javalruleetcode-cs_offer:对于cs_offer

    对题目做了一个大致分类,并对每种题型的解题思路做了总结。 排序、并查集、栈和队列、红黑树、散列表。 操作系统 进程管理、内存管理、设备管理、链接。 基本实现原理以及基本操作。 网络 物理层、链路层、网络层、...

Global site tag (gtag.js) - Google Analytics