Servlet & JSP - Cookie
关于 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的更多相关文章
- Servlet/JSP-05 Cookie
一. 问题? HTTP协议是一种无状态协议,服务器本身无法识别出哪些请求是同一个浏览器发出的,浏览器的每一次请求都是独立的.现实业务中服务器有时候需要识别来自同一个浏览器的一系列请求,例如购物车,登录 ...
- servlet&jsp高级:第三部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Servlet&jsp基础:第四部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- JavaWeb学习记录总结(二十九)--Servlet\Session\Cookie\Filter实现自动登录和记住密码
一.Servlet package autologin.servlet.login; import java.io.IOException;import java.security.MessageDi ...
- Servlet&JSP基础
Servlet JSP JSP四种基本语法: JSP注释<%--注释内容--> JSP声明<%!变量.函数%> JSP表达式<%= ...
- Servlet&JSP中的知识点
先sun提出的是Servlet体系,这个体系使得使用JAVA的程序员也能开发基于B/S架构的WEB应用程序,使用Servlet类将HTTP请求和响应封装在标准JAVA类中来实现各种WEB应用方案.随着 ...
- 马士兵Servlet&Jsp学习
Servlet&JSP 1>http常见错误信息: 404--url地址找不找, 403--禁止访问 500--服务器内部错误 2>Servlet的生命周期: *生命全过 ...
- ④品茶看<Servlet&JSP>-EL表达式
前言 今早,概率课偷了下小懒写的: 泡一杯红茶,ACM集训前,写篇博客记录记录EL表达式. #EL介绍 ①EL 语法 ②访问JavaBean等 ③EL隐式对象 ④EL运算符 EL介绍 EL 全名为Ex ...
- Jsp Cookie
cookie它是用户访问Web服务器时,服务器在用户硬盘上存放的信息. 1.使用Servlet实现cookie @WebServlet("/CookieServlet") publ ...
随机推荐
- jeecms附件标签用法
[#if content.attachments?size gt 0] [#list content.attachments as attach] <a id="attach${att ...
- Object类、instanceof
一.Object 1.所有类都默认继承至Object 2.两个常用的方法 2.1.toString:返回类的字符串描述,一般子类会重写用来打印属性 2.2.equals:默认比较两个对象的引用是否相同 ...
- [置顶] 文件和目录(一)--unix环境高级编程
普通文件和目录linux中最多的两类文件,linux中一共有七种类型的文件,如下: 1.普通文件 2.目录 3.字符特殊设备 4.块特殊设备 5.FIFO,又叫命名管道 6.Socket,即套接字 7 ...
- TinyTask Portable(录制和回放电脑操作过程)
一直想找个软件,可以回放自己或他人编码的过程.我认为,只有亲眼看到别人是怎么做的,才能更好的了解他人的思路. 虽然找到http://thecodeplayer.com/这个,但它只能回放它上面的代码, ...
- 在VB中使用Linq To SQLite注意事项
昨天使Linq To SQLite 支持VB,今天在VB中写了几条Linq语句,发现了几个问题: 1.在Linq To SQLite中的Linq语句查询后并不是得到的匿名数据类,而是将Linq转换为S ...
- 浅谈TCP优化
原文地址:http://kb.cnblogs.com/page/197406/ 很多人常常对TCP优化有一种雾里看花的感觉,实际上只要理解了TCP的运行方式就能掀开它的神秘面纱.Ilya Grigor ...
- javascript数组总结(0504)
一:数组复制 //方法一//slice()函数将会返回一个新的数组对象 var arr = [1,2,3,4]; var clone = arr.slice(0); arr.splice(1,2);/ ...
- c语言指针函数与函数指针
例一:指针函数 指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个 ...
- SSO 登录功能的实现
一.引言 自己早晚都会碰到的问题. 当需要到分离多站点多应用的时候,都是希望用户只要在一个站点登录,其它所有的应用站点都是已登录的状态. 查了下新浪与淘宝的登录的资料,自己实现了一个并做下记录. 二. ...
- js中replace的用法【转】
1.replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp ...