Cookie的工作原理:
Cookie是最常用的客户会话跟踪技术。Cookie是将会话数据保存在客户端来维护会话状态的一种方式。它是服务器发送给浏览器的体积很小的纯文本信息,用户以后在访问同一个Web服务器时,浏览器会把Cookie原样发送给服务器。通过这种方式,保存了用户的会话状态。
Cookie分为两类:持久的和暂时的。持久的Cookie会被存储在客户端文件中;暂时的Cookie存储在内存中,一旦浏览器关闭Cookie就消失了。一般来说,客户端浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4kb,因此Cookie不会占用太大的硬盘空间。虽然Cookie很好用而且持久性高,但是由于有些用户担心Cookie对个人隐私有威胁,会关闭Cookie。一旦这样,便无法利用Cookie来达到会话追踪的功能了。下面看看Cookie具体怎么使用:
SetCookies.java(写入)
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class SetCookies extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Cookie c1 = new Cookie("password", "123");
response.addCookie(c1);
Cookie c2 = new Cookie("client_ip", request.getRemoteAddr());
//设置cookie的生命周期为一个小时,单位为秒
c2.setMaxAge(60*60);
response.addCookie(c2);
response.getWriter().println("SetCookies OK!");
}
}
ShowCookies.java(读取)
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class ShowCookies extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Cookie[] Cookies = request.getCookies();
for (int i=0; i<Cookies.length; i++) {
Cookie c = Cookies[i];
response.getWriter().println(c.getName() + ", " + c.getValue());
}
}
}
Session的工作原理:
HttpSession对象自动为开发者提供一个可以方便地存储会话信息的地方,HttpSession的会话机制是基于Cookie和URL重写(URL重写就是利用GET方法,在URL的尾部添加一些额外的参数来达到会话追踪的目的)技术,融合了这两种技术的优点。当客户端允许使用Cookie时,HttpSession对象使用Cookie进行会话追踪,如果客户端禁用Cookie,则选择使用URL重写。
session与Cookie一样拥有特定的生命周期。一个session可以利用isNew方法来得知是否为一个新的session。所谓“新”的session就是说,他已经被Server产生,但是Client尚未被告知。
一般来说,session在一段时间内没有起作用就会自动失效,也就是Server会自动控管session失效的时间,不过时间的长短通常因容器而异,也可以自己手动设定session的失效时间。下面看看session具体怎么使用:
SetSessionServlet.java(写入)
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class SetSessionServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(true);
session.setAttribute("ip", request.getRemoteAddr());
response.getWriter().println("SetSession OK!");
}
}
ShowSessionServlet.java(读出)
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class ShowSessionServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(true);
String ip = (String)session.getAttribute("ip");
response.getWriter().println("ip=" + ip);
}
}
简单的总结了一下,正在学习中... ...
分享到:
相关推荐
cookie-session, 基于简单cookie的会话中间件 cookie会话 基于简单cookie的会话中间件。用户会话可以通过 Cookies 以两种主要方式存储: 在服务器上... 这个模块在cookie中存储会话数据,而像 express会话的模块在cook
cookie会话 简单的基于cookie的会话中间件。 用户会话可以用cookie的两种主要方式存储:在服务器上或在客户端上。... cookie-session可用于存储“轻量”会话,并包含一个标识符以查找数据库支持的辅助存储
一、属性说明: 1 secure属性 ...也就是说两个属性,并不能解决cookie在本机出现的信息泄漏的问题(FireFox的插件FireBug能直接看到cookie的相关信息)。 二、实例 项目架构环境:jsp+servlet+applet
cookie即是传统的会话控制,由于要存储的信息是保存在客户端的,所以安全系数较低,而session会话控制是将要存储的信息保存在服务器上的,所以相对于cookie安全系数较高. 不论是在使用cookie方式存储,还是session...
首先下载两个模块包 session模块包:用于保持登录状态或保持会话状态等。 npm install express-session --save-dev cookie模块包:用于解析cookie。 npm install cookie-parser --save-dev 接着在app.js(我在node....
提供了两个会话存储: Cookie和Memory 。 Session提供4个基本功能: create , get , set和destroy 。 create需要一个SessionStore和您的会话数据,并返回代表您的新会话的 。 get使用SessionStore和Cookie并返回您...
当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。 Servlet也可以执行ServletRequest接口和ServletResponse接口。...
很早之前写过一篇关于Cookie和Session的文章,那是2017年的事咯,当时还是个学生,技术也菜,对知识理解的也不深。恰巧有机会重新学习Java Web,今天就再次来简单的聊一聊Cookie与Session。 1.会话与会话技术 在...
0. 正常情况下, 浏览器保存 cookie 都是和域名关联的, 在不同的 tab 之间访问同一个域名, cookie 的修改都会互相影响。 1. 一般情况下,session id 都是通过 cookie 保存 2. 这样,我们就可以使用插件保存当前 ...
我们通常使用cookie和session来确定会话双方的身份。 cookie cookie 是从服务器端发送的,服务器给不同的用户发送不同的标识,这个标识表示用户的身份,服务器通过客户端发送的这个标识来识别用户的身份,从而查询...
除此之外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》还提供了两个完整的实例来讲解开发SSH的详细步骤和方法。通过对这两个实例的学习,读者可以对SSH开发模式有更透彻地理解和认识。SSH是...
正对java Web项目,同浏览器同时打开两个登录窗口(不同Tag),用不同用户登录,为避免使用同一个Session,需要使用这段代码。否则先登录的用户的Session会变成后登录用户的Session.相关系统使用权限也会变。
我们都知道当在session 会话有基于cookie和基于url两种传递SESSIONID的方法。为了实现客户端禁止cookie发送的情况也不影响客户登陆网站,可以设置 php.ini中 session.use_trans_sid=1 ,表示当客户端浏览器禁止...
在前面我们学习了Cookie和Session两种会话技术,这个也是比较主流的两种会话技术。除了Cookie、Session,会话技术还有重写Url、隐藏表单域两种,不过使用起来比较不方便,因此就不进行介绍了。 那理论学完了,我们...
除此之外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》还提供了两个完整的实例来讲解开发SSH的详细步骤和方法。通过对这两个实例的学习,读者可以对SSH开发模式有更透彻地理解和认识。SSH是...
一般我们web网站都会有cookie来保存session ID,将用户和服务器保持在一次会话中,但是很遗憾,微信小程序不支持cookie,他的每一次请求就是一次会话,这样就会产生一个问题,每次请求都需要确定当前的用户是谁,...
两个用户都必须安装该插件。1.在“上下文”菜单中“复制当前会话”。2.将复制到剪贴板复制到收件人的代码转发。3.收件人将代码复制到浏览器的地址栏,然后单击“接管cookie并加载网站”或在地址栏的建议中的会话共享...
两个常见的示例是localStorage和cookie。 尽管这些工具的界面相当简单,但通常涉及用用于管理这种其他状态形式的语句来乱码您的代码。 借助Redux,我们可以将状态保持在一个地方,并允许“中间件”订阅状态更改或...
ip_hash使用源地址哈希算法,将同一客户端的请求总是发往同一个后端服务器,除非该服务器不可用。 ip_hash语法: upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; ...
cookie和session是web开发新手容易搞混的两个概念,弄清楚两者有助于对web交互更好的理解。个人认为session和cookie的区别主要有如下几点: cookie 信息保存在客户端 具体实现由客户端负责 数据大小和数量一般有...