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. poj3254Corn Fields(状压)

    http://poj.org/problem?id=3254 第一个状压题 思路挺好想 用二进制表示每行的状态 然后递推 用左移 右移来判断是不是01间隔出现 c大神教的 我的代码WA在这个地方了.. ...

  2. 在eclipse里卸载已安装的插件[例如Android Development Tools ADT]

    在eclipse里卸载已安装的插件                                        有四种方法: 1.到plugins和features目录中找到你要卸载的插件的文件夹, ...

  3. new Option及用法

    op.sclassnumber.options.add(new  Option(secondMenuClassNumber[0]+":"+secondMenuText[0]),se ...

  4. bzoj2039

    还是同一类最小割问题 对于只要记住,建图是来最小化损失, 最大化收益是所有收益-最小取不到的收益 首先对于每个经理i,如果不取,必然有signma(w[i,j])收益会得不到(这里我们先不考虑额外的损 ...

  5. 清理Xcode中无用的 Provisioning Profile.

    Xcode中如果添加过多个开发者账号, 慢慢就会发现 Provisioning Profile 有很多, 无用的 Provisioning Profile Xcode也不会自动删除, 想要清理的话, ...

  6. c#等待所有子线程执行完毕方法

    当我们在使用线程中,你会发现主线结束后子线程的结果才显示出来.现在我要等待所以子线程结束,然后在显示结果,怎么做呢? 方法如下: 1.使用 ManualResetEvent,代码如下:  using  ...

  7. LightOJ 1259 Goldbach`s Conjecture 水题

    不想说了 #include <cstdio> #include <iostream> #include <ctime> #include <vector> ...

  8. JSP-讲解(生成java类、静态导入与动态导入)

    一.JSP技术简介 JSP是Java Server Page的缩写,它是Servlet的扩展,它的作用是简化网站的创建和维护. JSP是HTML代码与Java代码的混合体. JSP文件通常以JSP或J ...

  9. 华为2015 简单 字典输入法 java

    题目摘自http://blog.csdn.net/dongyi91/article/details/38639915 写了2个小时,水平太菜了 入法的编码原理为:根据已有编码表,当输入拼音和数字后输出 ...

  10. Fixing ssh login long delay

    原文:http://injustfiveminutes.com/2013/03/13/fixing-ssh-login-long-delay/ For a long time I had a prob ...