`
fulerbakesi
  • 浏览: 565182 次
文章分类
社区版块
存档分类
最新评论

Cookie和Session-----会话跟踪中的两个重要技术

 
阅读更多

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的会话中间件.zip

    cookie-session, 基于简单cookie的会话中间件 cookie会话 基于简单cookie的会话中间件。用户会话可以通过 Cookies 以两种主要方式存储: 在服务器上... 这个模块在cookie中存储会话数据,而像 express会话的模块在cook

    cookie-session:基于cookie的简单会话中间件

    cookie会话 简单的基于cookie的会话中间件。 用户会话可以用cookie的两种主要方式存储:在服务器上或在客户端上。... cookie-session可用于存储“轻量”会话,并包含一个标识符以查找数据库支持的辅助存储

    cookie机制和session机制的区别.docx

    cookie 机制和 session 机制的区别 ...cookie 机制和 session 机制都是实现 Web 会话跟踪的重要手段,但它们的实现机制和应用场景却有所不同。了解它们的区别和特点,可以更好地应用于实际项目中。

    JavaWeb开发技术-会话技术.pptx

    在Servlet技术中,提供了两个用于保存会话数据的对象,分别是Cookie和Session。Cookie是保存在客户端的文本文件,用于存储少量的会话数据,而Session则是保存在服务器端的对象,用于存储大量的会话数据。 会话技术...

    Session Cookie的HttpOnly和secure属性

    一、属性说明: 1 secure属性 ...也就是说两个属性,并不能解决cookie在本机出现的信息泄漏的问题(FireFox的插件FireBug能直接看到cookie的相关信息)。 二、实例 项目架构环境:jsp+servlet+applet

    PHPChina-PHP会话控制完美版资料.ppt

    会话控制是网站中非常重要的一部分,通过 cookie 和 session 机制来实现。cookie 和 session 都可以暂时保存在多个页面中使用的变量,但是它们有本质的差别。会话控制可以使网站更好地支持用户,并根据授权和用户...

    PHP cookie与session会话基本用法实例分析

    cookie即是传统的会话控制,由于要存储的信息是保存在客户端的,所以安全系数较低,而session会话控制是将要存储的信息保存在服务器上的,所以相对于cookie安全系数较高. 不论是在使用cookie方式存储,还是session...

    F5负载均衡会话保持技术及原理技术白皮书.docx

    基于 Cookie 的会话保持有两个模式:Cookie 插入模式和 Cookie 重写模式。Cookie 插入模式是指 BIGIP 负责插入 Cookie,后端服务器无需作出任何修改。Cookie 重写模式是指在客户进行第一次请求时,客户 HTTP 请求...

    JavaWeb(Servlet+request和response+EL表达式+JSP+Cookie和Session)

    JavaWebServlet JavaWeb 是基于 Java 语言的 Web 应用程序开发技术,Servlet 是 ...在 JavaWeb 应用程序中,Servlet、JSP、EL 表达式、Cookie 和 Session 是紧密相关的技术,共同组成了 JavaWeb 应用程序的核心组件。

    详解node.js平台下Express的session与cookie模块包的配置

    首先下载两个模块包 session模块包:用于保持登录状态或保持会话状态等。 npm install express-session --save-dev cookie模块包:用于解析cookie。 npm install cookie-parser --save-dev 接着在app.js(我在node....

    purescript-biscotti-session:PureScript会话管理

    提供了两个会话存储: Cookie和Memory 。 Session提供4个基本功能: create , get , set和destroy 。 create需要一个SessionStore和您的会话数据,并返回代表您的新会话的 。 get使用SessionStore和Cookie并返回您...

    同浏览器不同窗口不同用户Session问题

    正对java Web项目,同浏览器同时打开两个登录窗口(不同Tag),用不同用户登录,为避免使用同一个Session,需要使用这段代码。否则先登录的用户的Session会变成后登录用户的Session.相关系统使用权限也会变。

    java-servlet-api.doc

    当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。 Servlet也可以执行ServletRequest接口和ServletResponse接口。...

    详解ASP.NET中Session的用法_.docx

    Session 对象有两个大事可用于在 Session 对象启动和释放是运行过程。 1. Session_OnStart:Session_OnStart 大事在服务器创建新会话时发生。服务器在执行恳求的页之前先处理该脚本Session_OnStart 大事是设置会话...

    会话技术之Cookie详解

    很早之前写过一篇关于Cookie和Session的文章,那是2017年的事咯,当时还是个学生,技术也菜,对知识理解的也不深。恰巧有机会重新学习Java Web,今天就再次来简单的聊一聊Cookie与Session。 1.会话与会话技术 ​在...

    express如何使用session与cookie的方法

    我们通常使用cookie和session来确定会话双方的身份。 cookie cookie 是从服务器端发送的,服务器给不同的用户发送不同的标识,这个标识表示用户的身份,服务器通过客户端发送的这个标识来识别用户的身份,从而查询...

    java web技术开发大全(最全最新)

    除此之外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》还提供了两个完整的实例来讲解开发SSH的详细步骤和方法。通过对这两个实例的学习,读者可以对SSH开发模式有更透彻地理解和认识。SSH是...

    解决前后端分离 vue+springboot 跨域 session+cookie失效问题

    首先发现sessionID不一致,导致每一次都是新的会话,当然不可能存在用户了。然后发现cookie浏览器不能自动保存,服务器响应set-cookie了 搜索问题,发现跨域,服务器响应的setCookie浏览器无法保存,而且就算保存了...

    php禁用cookie后session设置方法分析

    我们都知道当在session 会话有基于cookie和基于url两种传递SESSIONID的方法。为了实现客户端禁止cookie发送的情况也不影响客户登陆网站,可以设置 php.ini中 session.use_trans_sid=1 ,表示当客户端浏览器禁止...

    会话技术之登录状态的保持

    在前面我们学习了Cookie和Session两种会话技术,这个也是比较主流的两种会话技术。除了Cookie、Session,会话技术还有重写Url、隐藏表单域两种,不过使用起来比较不方便,因此就不进行介绍了。 ​那理论学完了,我们...

Global site tag (gtag.js) - Google Analytics