Java服务端对Cookie的简单操作

时间 2016-04-07 10:39:44


极客头条

主题
Java

前面一片简单介绍了session和cookie的简单知识点和对比,其中提到cookie在应用中的一些功能应用,那么在这里我就来简单记录cookie在java服务端的一些操作!

(一)Cookie的写入操作

①建立一个最简单的Cookie,随着浏览器的打开而建立,随着浏览器的消失而关闭,不做任何时效、操作域、路径设置;

@RequestMapping("login")
public void UserOAuthLogin(HttpServletRequest request, HttpServletResponse response) {
try {
Cookie cookie = new Cookie("username",URLEncoder.encode("123456","UTF-8")); // 新建Cookie
response.addCookie(cookie); // 必须执行这一句
response.sendRedirect("http://www.cuiyongzhi.com");
} catch (Exception e) {
logger.error(e, e);
	}

}</pre>

②建立一个有可控范围的Cookie:

// new一个Cookie对象,键值对为参数
Cookie cookie = new Cookie("key", "cookie的value值");
//如果cookie的值中含有中文时,需要对cookie进行编码,不然会产生乱码,使用
URLEncoder.encode("cookie的value值","utf-8");
// 设置Cookie最大生存时间,以秒为单位,负数的话为浏览器进程,关闭浏览器Cookie消失
cookie.setMaxAge(*24*60*60); // 一天
// 将Cookie添加到Response中,使之生效
cookie.setDomain("www.cuiyongzhi.com"); //设置cookie作用域
cookie.setPath("/");//设置cookie存储的虚拟目录
response.addCookie(cookie); //addCookie后,如果已经存在相同名字的cookie,则最新的覆盖旧的cookie

(二)读取Cookie

①方法一

@RequestMapping("loginout")
public void userLoginOut(HttpServletRequest request, @CookieValue("username") String cookieValue) {
System.out.println("==========================================="+cookieValue); //输出读取到的Cookie
request.getSession().invalidate(); //清空Session
}

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

public static Cookie getCookieByName(HttpServletRequest request,String name){
Map cookieMap = ReadCookieMap(request);
if(cookieMap.containsKey(name)){
Cookie cookie = (Cookie)cookieMap.get(name);
return cookie;
}else{
return null;
}
} private static Map ReadCookieMap(HttpServletRequest request){

Map cookieMap = new HashMap();

Cookie[] cookies = request.getCookies();

if(null!=cookies){

for(Cookie cookie : cookies){

cookieMap.put(cookie.getName(), cookie);

}

}

return cookieMap;

}

(三)Cookie的修改操作(重新赋值即可)

@RequestMapping("/editCookie")
public void editCookie(HttpServletRequest request,HttpServletResponse response,String name,String value){
Cookie[] cookies = request.getCookies();
if (null==cookies) {
System.out.println("没有cookie==============");
} else {
for(Cookie cookie : cookies){
if(cookie.getName().equals(name)){
System.out.println("原值为:"+cookie.getValue());
cookie.setValue(value);
cookie.setPath("/");
cookie.setMaxAge(30 * 60);// 设置为30min
System.out.println("被修改的cookie名字为:"+cookie.getName()+",新值为:"+cookie.getValue());
response.addCookie(cookie);
break;
}
}
}
    }</pre>

(四)Cookie的删除操作(赋值为null即可)

 @RequestMapping("/delCookie")
public void delCookie(HttpServletRequest request,HttpServletResponse response,String name){
Cookie[] cookies = request.getCookies();
if (null==cookies) {
System.out.println("没有cookie==============");
} else {
for(Cookie cookie : cookies){
if(cookie.getName().equals(name)){
cookie.setValue(null);
cookie.setMaxAge(0);// 立即销毁cookie
cookie.setPath("/");
System.out.println("被删除的cookie名字为:"+cookie.getName());
response.addCookie(cookie);
break;
}
}
}
}

对Cookie的简单操作基本就是这些,如有问题可以留言讨论,感谢查阅!

    </div>
<div class="article_social">
<div class="article_like">
<div class="circle circle-like" id="my_zan" data_id="r6f2Ibv"> </div>
分享

收藏


纠错

        <div class="bottom_plink huodong-detail-plink-banner clearfix">
<a href="https://www.mysubmail.com/sms?s=tuicool" target="_blank"><img src="http://static2.tuicool.com/images/upload/submail700.jpg"></a> </div>
</div>
<div id="site_articles" style="clear:both;">
<div class="article-part-title">
<span>推荐文章</span>
</div>
<ul class="side_article_list">
<li class="side_article_list_item">
1.<a href="/articles/6nA7ryU" target="_blank" title="百度称神马用“假百度”劫持流量 神马回应称同为受害者">
百度称神马用“假百度”劫持流量 神马回应称同为受害者
</a>
</li>
<li class="side_article_list_item">
2.<a href="/articles/fIvqUfq" target="_blank" title="交通部长李小鹏:积极鼓励和支持“共享单车”">
交通部长李小鹏:积极鼓励和支持“共享单车”
</a>
</li>
<li class="side_article_list_item">
3.<a href="/articles/6veEfuq" target="_blank" title="新农业+互联网,一场转型升级正在轰轰烈烈进行,其商业逻辑有哪些?有哪些机会?">
新农业+互联网,一场转型升级正在轰轰烈烈进行,其商业逻辑有哪些?..
</a>
</li>
<li class="side_article_list_item">
4.<a href="/articles/Mz2yqa2" target="_blank" title="在东南亚再造一个“阿里巴巴”:蚂蚁金服投资菲律宾支付公司Mynt">
在东南亚再造一个“阿里巴巴”:蚂蚁金服投资菲律宾支付公司Mynt
</a>
</li>
<li class="side_article_list_item">
5.<a href="/articles/rAnqM3R" target="_blank" title="从PGC到MCN,何仙姑夫在短视频风口中寻求增量">
从PGC到MCN,何仙姑夫在短视频风口中寻求增量
</a>
</li>
<li class="side_article_list_item">
6.<a href="/articles/jmIvQni" target="_blank" title="高盛:预计微博2018年利润率高于41% 股价达70美元">
高盛:预计微博2018年利润率高于41% 股价达70美元
</a>
</li>
</ul>
</div>
<div id="kan_articles"></div>
<div id="article_weibo" style="display:none;">
<div class="article-part-title">
<span>相关微博</span>
<sub>
<a href="/articles/weibo_list/r6f2Ibv" target="_blank">(<i id="weibo_num"></i>)</a>
</sub>
</div>
<div class="related-weibo-list"></div>
</div>
<div class="comments">
<div class="comments-area">
<div class="comments-header">
<h5>我来评几句</h5>
<div class="alert comment-alert alert-error" style="display:none;">
错误
</div>
<textarea cols="60" rows="5" id="comment-body" placeholder="请输入评论内容..." style="resize: none;"></textarea>
<span class="btn btn-medium btn-submit" id="comment-submit">登录后评论</span>
<p style="margin-top: 5px;margin-left:10px;">
已发表评论数(<span class="comment_cnt">0</span>)
</p>
</div>
<div class="comments-list">
<div class="empty-cmts alert alert-success" style="display:none;">
没有更多评论了^^
</div>
</div>
<div class="more-comments" style="display:none;">
<a href="">更多评论</a>
</div>
<div class="load-fail" style="display:none;">
评论加载失败,<a href="javascript:reload_comments('r6f2Ibv',1,0,-1);">重新加载</a>
</div>
</div>
</div>

Java服务端对Cookie的简单操作的更多相关文章

  1. jsonp协议 java服务端、JQuery客户端 简单实现原理

    原文链接:https://blog.csdn.net/Activity_Time/article/details/96440806 1. 概述 Jsonp(JSON with Padding) 是 j ...

  2. JPush简单Java服务端案例实现

    一.激光推送准备工作 1.注册极光推送开发者账号,创建应用: 2.完成推送设置,填写应用名提交生成安装包: 3.扫码安装简单的测试apk,查看应用信息会有AppKey和Master Secret用于推 ...

  3. RPC学习--C#使用Thrift简介,C#客户端和Java服务端相互交互

    本文主要介绍两部分内容: C#中使用Thrift简介 用Java创建一个服务端,用C#创建一个客户端通过thrift与其交互. 用纯C#实现Client和Server C#服务端,Java客户端 其中 ...

  4. C#使用Thrift简介,C#客户端和Java服务端相互交互

    C#使用Thrift简介,C#客户端和Java服务端相互交互 本文主要介绍两部分内容: C#中使用Thrift简介 用Java创建一个服务端,用C#创建一个客户端通过thrift与其交互. 用纯C#实 ...

  5. 那些年,我们见过的 Java 服务端乱象

    导读 查尔斯·狄更斯在<双城记>中写道:“这是一个最好的时代,也是一个最坏的时代.” 移动互联网的快速发展,出现了许多新机遇,很多创业者伺机而动:随着行业竞争加剧,互联网红利逐渐消失,很多 ...

  6. 那些年,我们见过的 Java 服务端“问题”

    导读 明代著名的心学集大成者王阳明先生在<传习录>中有云: 道无精粗,人之所见有精粗.如这一间房,人初进来,只见一个大规模如此.处久,便柱壁之类,一一看得明白.再久,如柱上有些文藻,细细都 ...

  7. 那些年,我们见过的Java服务端乱象

    导读 查尔斯·狄更斯在<双城记>中写道:“这是一个最好的时代,也是一个最坏的时代.”移动互联网的快速发展,出现了许多新机遇,很多创业者伺机而动:随着行业竞争加剧,互联网红利逐渐消失,很多创 ...

  8. 俯瞰 Java 服务端开发

    原文首发于 github ,欢迎 star . Java 服务端开发是一个非常宽广的领域,要概括其全貌,即使是几本书也讲不完,该文将会提到许多的技术及工具,但不会深入去讲解,旨在以一个俯瞰的视角去探寻 ...

  9. “快的打车”创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - V2EX

    "快的打车"创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - ...

随机推荐

  1. JavaScript位置:window&client&offset&scroll&MouseEvent&getBoundingClientRect&计算任意元素滚动条宽度

    Window: window.innerWidth:浏览器viewport视口宽,包括垂直滚动条 window.innerHeight:浏览器视口高,包括水平滚动条 window.outerWidth ...

  2. Nexus-配置vPC 实验二

    实验一中介绍的是单面的vPC,本实验配置的是dual site(双面vPC),这样的情况将上下的Port-channel都配置在了同一vPC下面. 实验拓扑如下: N5K-1配置:N5K-1(conf ...

  3. MQTT Web Toolkit - MQTT 在线客户端及服务器测试

    MQTT Web Toolkit 是 EMQ 最近开源的一款 MQTT (WebSocket) 测试工具,支持线上 (tools.emqx.io) 访问使用.该工具采用了聊天界面形式,简化了页面操作逻 ...

  4. ANSYS热分析简介1

    目录 1. ANSYS热分析简介 1.1 传导 1.2 热载荷分类 1.2.1 载荷施加 1.3 热分析分类 1.3.1 稳态热分析 1.3.2 瞬态热分析 1.3.3 非线性分析综述 2. 热分析单 ...

  5. 在Visual Studio 2017中,.NET(C#)通过Oracle.ManagedDataAccess来连接Oracle数据库

    C#如何通过Oracle.ManagedDataAccess来连接Oracle数据库 1.先创建一个项目,鼠标右击项目中的引用,再点击管理NuGet程序包(也可以先下载dll文件,再选添加引用),在搜 ...

  6. mybatis源码探索笔记-3(使用代理mapper执行方法)

    前言 前面两章我们构建了SqlSessionFactory,并通过SqlSessionFactory创建了我们需要的SqlSession,并通过这个SqlSession获取了我们需要的代理mapper ...

  7. python2.7 一个莫名其妙的错误

    先看看错误: Traceback (most recent call last): File "/home/darkchii/文档/PycharmProjects/ml/model.py&q ...

  8. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定文本左对齐

    <!DOCTYPE html> <html> <head> <title>菜鸟教程(runoob.com)</title> <meta ...

  9. Java基础 -3.5

    我觉得上一篇不是很严谨啊 我认为这个逻辑还是正确的 原码.反码.补码: (1)在Java中,所有数据的表示方式都是以补码形式来表示 如果没有特别的说明,Java 中的数据类型默认为int,int数据类 ...

  10. python学习第一课

    第一课: 1.不要使用来路不明的软件 2.下载杀毒软件 3.不懂技术的人在技术人面前会显得愈发无知 4.python无所不能 需要掌握的知识: 1.python基本语法 2.文件处理 3.函数 4.模 ...