public class CookieServletDemo extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");

//cookie添加 ---向客户端添加/修改cookie
//addCookie(request,response);
readCookie(request,response);
//delCookie(request,response);

out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}

//读取客户端发来的cookie ---不同浏览器,cookie是不共享的
private void readCookie(HttpServletRequest request,
HttpServletResponse response) throws IOException {
Cookie cs[] = request.getCookies();
if(cs!=null){
for(Cookie c:cs){
String key = c.getName();
String value = c.getValue();
value = URLDecoder.decode(value, "utf-8");
int maxAge = c.getMaxAge();//cookie机制安全性考虑,不让读取,因此返回都是-1
System.out.println(key+","+value+","+maxAge);
}
}

}

//添加/修改
private void addCookie(HttpServletRequest request,
HttpServletResponse response) throws IOException {
//String name="hncu";
String name = "湖南城院";
name = URLEncoder.encode(name, "utf-8");//如果是中文,则需要编码
Random r = new Random();
name = name+r.nextInt(1000);
System.out.println(name);
Cookie coo = new Cookie("school", name);
coo.setMaxAge(60*60);//为该cookie设置有效期(浏览器会自动把它转变成过期时间)
coo.setPath(request.getContextPath());//由路径控制访问权限
response.addCookie(coo);//如果存在相同key的cookie则是覆盖(修改),若不存在则是新建(添加)
}

//删除cookie ==其实就是向浏览器添加一个maxAge为0的cookie, 该cookie的key为将要被删除cookie的,要注意权限(cookie路径要设得和创建时完全一样)
private void delCookie(HttpServletRequest request,
HttpServletResponse response) throws IOException {
//删除key为"school"的cookie
Cookie coo = new Cookie("school", "aa");
coo.setMaxAge(0);//效期设为0即是代表删除
coo.setPath(request.getContextPath());//权限控制:删除时,路径必须和创建时设置的完全一样,否则无权删除
response.addCookie(coo);//删除
}

}

---------------------------------------------------------------------------------------------------------------------------------------------

<a href="CookieServletDemo">CookieDemo基本用法演示</a>

<h3>以下servlet用于演示cookie的访问权限</h3>
<form action="servlet/CookieServletDemo2" method="post">
Name:<input type="text" name="name"/> <br/>
<input type="submit" value="提交"/>
</form>

对Cookie进行增删改查的更多相关文章

  1. Selenium入门13 cookie的增删改查

    cookie的增删改查: 查询:get_cookies()查询所有cookie,get_cookie(cookie的name)获取单个cookie 删除:delete_cookie(cookie的na ...

  2. 原生js对cookie的增删改查

    一.增 document.cookie = cname + "=" + cvalue + ";expires=" + expires + ";path ...

  3. cookie的增删改查函数

    function setCookie(name,value,expires,path,domain){ //设置过期时间 var oDate = new Date(); oDate.setDate(o ...

  4. js中实现cookie的增删改查(document.cookie的使用详情)

    一.设置cookie的值 1.每个cookie都是一个名称/值对,名称/值对用等号连接,并将该名称/值对赋值给document.cookie即可.如:document.cookie="id= ...

  5. 优秀前端工程师必备: cookie的增删改查Demo!

    1 cookie可以很好地解决微信浏览器登录状态的保存,具体教程看下面链接: https://www.cnblogs.com/autoXingJY/p/10456767.html 2 参考了w3c等的 ...

  6. Cookie的增删改查

    增加: 第一种方法:Response.Cookies[“UserName”].Value=”张三” Response.Cookies[“UserName”].Expires=DateTime.Now. ...

  7. Java实现对cookie的增删改查

    原文地址:http://blog.csdn.net/k21325/article/details/54377830 @RequestMapping(value="meeting/addGua ...

  8. 网络系列之 cookie增删改查(封装)

    什么是cookie 呢?简单来说,这个小东西,会记录你的 浏览器 浏览习惯,或 账号密码等, 以便于提高用户的体验感. 举个例子: 你们有没有发现,去淘宝一些购物网站, 你搜索了 椅子, 挑选了一会椅 ...

  9. sqlHelper做增删改查,SQL注入处理,存储值,cookie,session

    一.存储值 eg:登录一个页面,在进入这个页面之前你怎么知道它登没登录呢?[在登录成功之后我们把状态保存起来] 存储值得方式有两种,一种是cookie,一种是session 1.1区别: 代码: if ...

随机推荐

  1. Hello Indigo

    Windows Communication Foundation (WCF),formerly code-named “Indigo,” is Microsoft’s platform for Ser ...

  2. Oracle EBS 预警系统管理

    本章主要讲述配置和设置Oracle EBS预警系统管理, 它比较方便和及时发用户或系统对数据库操作情况.下面讲一操作步聚: 1.预警系统管理-->系统-->选项 名称"Unix ...

  3. mapreduce源码分析总结

    一 MapReduce概述 Map/Reduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的,Google已经将它完整的MapReduce论 文公开发布了.其中对 ...

  4. Error building results for action sayHello in namespace /inteceptor -

    原因:不知道如何编译此 struts.xml ,解决方法:导入struts-default文件: <package name="test"  namespace=" ...

  5. (转)如何正确使用C++多重继承

    http://bigasp.com/archives/486 如何正确使用C++多重继承 2011年06月17日 — Asp J 原创文章,转载请注明:转载自Soul Apogee本文链接地址:如何正 ...

  6. 普通Java类获取spring 容器的bean的5种方法

    方法一:在初始化时保存ApplicationContext对象方法二:通过Spring提供的工具类获取ApplicationContext对象方法三:继承自抽象类ApplicationObjectSu ...

  7. net 内存泄露和内存溢出

    一直以来都对内存泄露和内存溢出理解的不是很深刻.在网上看到了几篇文章,于是整理了一下自己对内存泄露和内存溢出的理解. 一.概念 内存溢出:指程序在运行的过程中,程序对内存的需求超过了超过了计算机分配给 ...

  8. domReady source code, domready源码

    domready源码,domready实现代码,js实现domready的源代码. jquery的domready源码,require.js的domready源代码 . [domReady sourc ...

  9. nyoj 括号匹配

    这个方程有两种形式,本文采用 if(s[i]=s[j]) dp[i][j]=d[i-1][j-1]   dp[i][j]=min(dp[i][k]+dp[k+1][j],dp[i][j]) (i=&l ...

  10. linux内核系列(二)内核数据结构之链表

    双向链表 传统链表与linu内核链表的区别图: 图一 图二 从上图中看出在传统链表中各种不同链表间没有通用性,因为各个数据域不同,而在linux内核中巧妙将链表结构内嵌到数据域结构中使得不同结构之间能 ...