cookie implements session
cookie实现会话
服务器调用response.addCookie()设置set-cookie响应头后,浏览器收到这个响应头与数值后,会将它以文件的形式存储于本地PC上。当浏览器再次访问同一Web服务器时,会将之前收到的cookie作为cookie请求头自动发送给服务器。
Cookie是HTTP header的一部分,其传输由HTTP协议控制。
浏览器通常支持每个网站写出20个cookies。
API使用
使用setMaxAge()可以设定Cookie的有效期限,单位是“秒”,这样就会覆盖缺省设置——关闭浏览器后Cookie就失效。
服务端若要读取浏览器提交的cookie,可以通过HttpServletRequest接口的getCookies方法,该方法返回一个Cookie数组,若没有cookies则返回null。你需要遍历整个数组来查询某个特定名称的cookie。目前,还没有类似于getCookieByName这样的方法来帮助简化工作。
服务端也没有直接删除cookie的方法,只能创建一个同名的cookie,并将maxAge属性设置为0,并添加到HttpServletResponse接口中。
新特征
在Servlet 3.0中,Cookie类新增了setHttpOnly()方法,可以将Cookie标示为仅用于HTTP,这会在set-cookie标头上附加HttpOnly属性,在浏览器支持的情况下,这个Cookie将不会被客户端脚本(例如JavaScript)读取,可以使用isHttpOnly()来得知一个Cookie是否被setHttpOnly()标示为仅用于HTTP。
缺点
Cookies的问题在于用户可以通过改变其浏览器设置来拒绝接受cookies。
example
package com.test; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; @WebServlet("/write.do")
public class WriteCookie extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie cookie = new Cookie("Hello", "World");
cookie.setMaxAge(7 * 24 * 60 * 60);
resp.addCookie(cookie);
resp.getWriter().write("cookie writed");
} protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}
package com.test; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter; @WebServlet("/read.do")
public class ReadCookie extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
String name = cookie.getName();
String value = cookie.getValue();
PrintWriter writer = resp.getWriter();
writer.println("cookie name: " + name);
writer.println("cookie value: " + value);
}
}
} protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}
cookie implements session的更多相关文章
- 深入理解cookie和session
cookie和session在java web开发中扮演了十分重要的作用,本篇文章对其中的重要知识点做一些探究和总结. 1.cookie存在于浏览器 随意打开一个网址,用火狐的调试工具,随意选取一个链 ...
- cookie、session和java过滤器
基础知识理解: cookie.session和过滤器通常都是用在web应用中,cookie和session用来保存一定的数据,过滤器Filter则是在浏览器发出请求之后,而后台执行特定的请求之前发生一 ...
- day07 Cookie 和 Session(非常重要)
day07 Cookie 和 Session 1. 会话技术 2. cookie 的方法和 cookie 案例-显示用户上次访问网站的时间 3. cookie 的细节 - 删除 cookie 4. S ...
- Session与Cookie(自定义Session)
一.会话管理 会话管理: 管理浏览器客户端 和 服务器端之间会话过程中产生的会话数据. 域对象: 实现资源之间的数据共享. request域对象 context域对象 会话技术: Cookie技术:会 ...
- java:Cookie(常用操作),Cookie和Session免登录实例
1.常用操作: package cn.zzsxt.lee.web.cookie; import java.io.IOException; import javax.servlet.ServletEx ...
- Springboot中登录后关于cookie和session拦截案例
目录 一.前言 二.利用Cookie进行登录验证 一.前言 1.简单的登录验证可以通过Session或者Cookie实现. 2.每次登录的时候都要进数据库校验下账户名和密码,只是加了cookie 或s ...
- Cookie和Session的总结
1.开篇 在之前学习这一段的时候我一直有点没弄清楚,其实对Session这块的理解还可以,但是Cookie感觉始终还是欠缺点火候.之后的很长一段时间都基本上很少用Cookie了,渐渐的也淡忘了这一块的 ...
- java的会话管理:Cookie和Session
java的会话管理:Cookie和Session 1.什么是会话 此处的是指客户端(浏览器)和服务端之间的数据传输.例如用户登录,购物车等 会话管理就是管理浏览器客户端和服务端之间会话过程产生的会话数 ...
- Cookie和Session的那些事儿
Cookie和Session都是为了保持用户的访问状态,一方面为了方便业务实现,另一方面为了简化服务端的程序设计,提高访问性能.Cookie是客户端(也就是浏览器端)的技术,设置了Cookie之后,每 ...
随机推荐
- sass安装及使用
在Mac系统下,Ruby一般已内置在其中,如果您不能确认是否已安装,或者说你不知道你的Ruby使用的版本,你可以打开你的命令工具: $ ruby -v 安装sass 在大多数情况和大部分人群中,还是喜 ...
- 12、xamarin form中实现H5 网页唤醒微信支付的方法
在微信的支付中有种支付叫微信H5支付.方便用户在网页中轻松唤起微信进行支付. 当然微信不推荐大家使用这样的方式唤起微信支付.建议app还是使用正常的微信支付sdk即可 服务端与其他的建议参考微信支付官 ...
- SAS->关联分析实践
SAS系统被誉为国际上的标准软件系统,本文将详细介绍如何在SAS/EM模块中进行关联规则数据挖掘,使用的软件版本是SAS 9.1.3下的Enterprise Miner 4.3: 从SAS顶端的[解决 ...
- Java之集合(十二)TreeMap
转载请注明源出处:http://www.cnblogs.com/lighten/p/7411935.html 1.前言 本章介绍Map体系中的TreeMap,顾名思义,这个是一个树结构的Map.Tre ...
- php 实现繁体转简体代码效率对比
第一份代码: <?php Header("Content-Type:text/html;charset=utf-8"); function microtime_float() ...
- jquery.lazyload插件实现图片延迟加载
jquery.lazyload是一个实现图片延迟加载的jQuery 插件,它可以延迟加载长页面中的图片.在浏览器可视区域外的图片在初始状态下不会被载入,直到用户将页面滚动到它们所在的位置. 1.引入j ...
- dynamic解析Http xml格式响应数据
继续上一篇 构建RESTful风格的WCF服务 ,咱已经把服务端的数据和服务准备好了,客户端调用 wcf rest接口后如何解析xml?下面使用dynamic关键字解析来至于WCF REST XML响 ...
- 记录自己使用到的git命令行代码与git使用流程
1.安装创建版本库 新建一个文件夹,用命令行实现: $ cd /d //进入d盘 $ mkdir gitproject //新建gitproject文件夹 $ cd ...
- C#中const 和 readonly 修饰符的用法详解
1.const是不变常量,在编译的时候就需要有确定的值,只能用于数值和字符串,或者引用类型只能为null.(这里为什么要把字符串单独拿出来?是因为字符串string是引用类型,但是使用的时候却感觉是值 ...
- RegExp正则表达式——更深层次解析
转自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp RegExp 构造 ...