关于 Cookie 的内容,参考 HTTP - Cookie 机制

获取来自客户端的 cookie

request.getCookies 方法可以获取来自 HTTP 请求的 cookie,返回的是 javax.servlet.http.Cookie 数组。

Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
resp.getWriter().print("name: " + cookie.getName());
resp.getWriter().print(", value: " + cookie.getValue());
resp.getWriter().print(", domain: " + cookie.getDomain());
resp.getWriter().print(", path: " + cookie.getPath());
resp.getWriter().print(", maxAge: " + cookie.getMaxAge());
resp.getWriter().print(", sercure: " + cookie.getSecure());
resp.getWriter().print(", version: " + cookie.getVersion());
resp.getWriter().print(", comment: " + cookie.getComment());
resp.getWriter().println(", httpOnly: " + cookie.isHttpOnly());
}
}

很遗憾,没有诸如 getCookieByName 的方法来通过 cookie 的名称获取 cookie,只能遍历 cookie 数组去匹配想要的 cookie。

送 cookie 至客户端

response.addCookie 方法可以将 cookie 送至客户端。

Cookie cookie = new Cookie("userid", userid);
resp.addCookie(cookie);

一旦 cookie 从服务器端发送至客户端,服务器端就不存在可以显示删除 cookie 的方法。但可通过覆盖已过期的 cookie,实现对客户端 cookie 的实质性删除操作。

Cookie cookie = new Cookie("userid", userid);
cookie.setMaxAge(0);
resp.addCookie(cookie);

中文字符

如果 cookie 的内容是中文字符,则需要对其编码:

String username = java.net.URLEncoder.encode("中文字符", "UTF-8");
Cookie cookie = new Cookie("username", username);
resp.addCookie(cookie);

在获取 cookie 时则再对其解码:

java.net.URLDecoder.decode(cookie.getValue(), "UTF-8");

httpOnly 字段

在 servlet3.0 之前,javax.servlet.http.Cookie 没有提供设置 httpOnly 字段的方法。可以通过 Set-Cookie 首部来设置 httpOnly 字段。

resp.addHeader("Set-Cookie", "testcookie=test; Path=/; HttpOnly");

Servlet & JSP - Cookie的更多相关文章

  1. Servlet/JSP-05 Cookie

    一. 问题? HTTP协议是一种无状态协议,服务器本身无法识别出哪些请求是同一个浏览器发出的,浏览器的每一次请求都是独立的.现实业务中服务器有时候需要识别来自同一个浏览器的一系列请求,例如购物车,登录 ...

  2. servlet&jsp高级:第三部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. Servlet&jsp基础:第四部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. JavaWeb学习记录总结(二十九)--Servlet\Session\Cookie\Filter实现自动登录和记住密码

    一.Servlet package autologin.servlet.login; import java.io.IOException;import java.security.MessageDi ...

  5. Servlet&JSP基础

    Servlet     JSP     JSP四种基本语法:     JSP注释<%--注释内容-->     JSP声明<%!变量.函数%>     JSP表达式<%= ...

  6. Servlet&JSP中的知识点

    先sun提出的是Servlet体系,这个体系使得使用JAVA的程序员也能开发基于B/S架构的WEB应用程序,使用Servlet类将HTTP请求和响应封装在标准JAVA类中来实现各种WEB应用方案.随着 ...

  7. 马士兵Servlet&Jsp学习

    Servlet&JSP 1>http常见错误信息:  404--url地址找不找,  403--禁止访问  500--服务器内部错误  2>Servlet的生命周期:  *生命全过 ...

  8. ④品茶看<Servlet&JSP>-EL表达式

    前言 今早,概率课偷了下小懒写的: 泡一杯红茶,ACM集训前,写篇博客记录记录EL表达式. #EL介绍 ①EL 语法 ②访问JavaBean等 ③EL隐式对象 ④EL运算符 EL介绍 EL 全名为Ex ...

  9. Jsp Cookie

    cookie它是用户访问Web服务器时,服务器在用户硬盘上存放的信息. 1.使用Servlet实现cookie @WebServlet("/CookieServlet") publ ...

随机推荐

  1. 负载均衡session共享问题

    负载均衡+session共享(memcached-session-manager实现) http://www.cnblogs.com/youzhibing/p/5094460.html http:// ...

  2. socket断开连接的四次握手及常见过程解析

    TCP的协议文档对TCP的一些规定:文档名称-RFC793  TCP消息头的控制位 URG:紧急指针字段有效 ACK:确认头部字段有效 PSH:强制函数 RST:重置链接 SYN:同步系列号码 FIN ...

  3. 剑指OFFER之跳台阶(九度OJ1388)

    题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n< ...

  4. iOS开发-Core Location和Map Kit

    一.Core Location确定物理位置 利用以下3种技术: 1.GPS(最精确的) 2.蜂窝基站ID定位(cell ID Location) 3.WPS(Wi-Fi Positioning Ser ...

  5. Codeforces Gym 100425H H - Football Bets 构造

    H - Football BetsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...

  6. [置顶] VC++界面编程之--自定义CEdit(编辑框)皮肤

    自定义编辑框是登陆界面经常用到的效果,所以我也模仿站酷网的素材做了个. 要想继承CCustomDraw来完全自绘CEdit控件,是不太可行的方案,因为一旦你完全重绘,那么你需要额外做以下几件事: 1. ...

  7. POJ1463:Strategic game(树形DP)

    Description Bob enjoys playing computer games, especially strategic games, but sometimes he cannot f ...

  8. QuickXdev+sublime text打造quick-cocos2d-x开发环境

    Sublime 插件安装方法: 一.简单的安装方法 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: import urllib.request, ...

  9. 将PHP作为Shell脚本语言使用

    我们都知道.PHP是一种非常好的动态网页开发语言(速度飞快.开发周期短--).可是仅仅有非常少数的人意识到PHP也能够非常好的作为编写Shell脚本的语言,当PHP作为编写Shell脚本的语言时,他并 ...

  10. QProcess调用外部程序方式的差异

    众所周知QProcess类的作用是启动一个外部的程序并与之交互它有三种方式调用外部程序: 1. execute 2. start 3. startDetached 从调用上看: execute是阻塞调 ...