java 中cookie的详解及简单实例
作者:lqh 发布时间:2022-10-30 05:56:49
标签:java,cookie
java 中cookie的详解
Java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和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[]
cookies = request.getCookies();//这样便可以获取一个cookie数组
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://blog.csdn.net/qq_35101189/article/details/54098385


猜你喜欢
- Unity没有像Vs那样的“*.sln”的项目工程文件,不能通过这个文件来打开工程。但是原有的打开已有工程的方法太过于麻烦了,则现在来通过添
- 我们在安卓开发中安卓自带的控件满足不了我们的需求,因此我们就需要用到自定义View来满足我们的需求,在这里我要讲解的是自定义View实现选座
- 1. 讲故事最近因为各方面原因换了一份工作,去了一家主营物联柜的公司,有意思的是物联柜上的终端是用 wpf 写的,代码也算是年久失修,感觉技
- 本文实例讲述了C#使用二分查找法判断指定字符的方法。分享给大家供大家参考,具体如下:private int sort_init(ref st
- 项目中为了实现账号多设备登录的监听 一个账号在别的设备登录时在该设备上需要弹出对话框提示 故而用到全局对话框方案一、1、在开发中有时会用到全
- 为什么我们要爬取数据在大数据时代,我们要获取更多数据,就要进行数据的挖掘、分析、筛选,比如当我们做一个项目的时候,需要大量真实的数据的时候,
- 在本文中,我们将通过用C#重构一个非常简单的代码示例来解释依赖注入和IoC容器。 简介:依赖注入和IoC乍一看可能相当复杂,但它们
- 本文实例讲述了C#实现的xml操作类,分享给大家供大家参考,具体如下:using System;using System.Data;usin
- 目录1、第一步2、第二步3、最后可以检查一下设计designer.cs的文件看看对不对很多初学者都想把默认的C#关闭按钮事件弄明白,主要用在
- Mybatis采用责任链模式,通过 * 组织多个 * (插件),通过这些 * 可以改变Mybatis的默认行为(诸如SQL重写之类的),由
- 以前使用spring的使用要注入property要配置PropertyPlaceholder的bean对象。在springboot除&nbs
- 对于QQ截图,肯定是早就有认识了,只是一直没有去认真观察这个操作的具体实现步骤。所以这里将自己的记忆中的步骤简单的写一下:习惯性用QQ或者T
- 前言在【Android】线程间通信 - Handler之使用篇主要讲了 Handler 的创建,发送消息,处理消息 三个步骤。那么接下来,我
- 在未分享整个查询分页的执行代码之前,先了解一下执行流程。1.总体上是利用mybatis的插件 * ,在sql执行之前拦截,为查询语句加上li
- java代理有jdk * 、cglib代理,这里只说下jdk * ,jdk * 主要使用的是java反射机制(既java.lang.r
- 前言本文介绍的内容是偶然发现的这个功能,就给移过来了,整理了一下,也是一个类就实现的,使用很方便特别感谢@TakWolf大大的开源项目,学了
- 拖曳小球WPF的拖曳效果,基本配置一下,就可以了,但是自绘的话,就得自己控制,按键点击,按键移动和按键松开的事件,与其配合达到目的。这个效果
- 前言在电商的应用中,最常见的就是在首页或完成某事件之后,弹出一堆的活动/广告。假如重叠弹出,很丑,给用户的体验也不好,所以一般都会依次依条件
- 本文实例讲述了Android SQLite数据库操作方法。分享给大家供大家参考,具体如下:SQLite and AndroidSQLite简
- 说明SpringBoot版本:2.1.4.RELEASEjava版本:1.8文中所说JPA皆指spring-boot-starter-dat