session对象

django(五):cookie和session

只谈情不闲聊 提交于 2019-12-24 02:30:17
一、Cookie   1、cookie机制    会话(Session)跟踪是Web程序中常用的技术,用来 跟踪用户的整个会话 。常用的会话跟踪技术是Cookie与Session。 Cookie通过在客户端记录信息确定用户身份 , Session通过在服务器端记录信息确定用户身份 。    在程序中,会话跟踪是很重要的事情。理论上, 一个用户的所有请求操作都应该属于同一个会话 ,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。   而Web应用程序是使用HTTP协议传输数据的。 HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话 。 即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。   Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。   关于cookie,需要记住几点:     - 1

Flask进阶(路由视图,session,蓝图,上下文管理)

99封情书 提交于 2019-12-24 01:13:02
1. 路由+视图 a. 路由设置的两种方式: @app.route('/xxx') def index(): return "index" def index(): return "index" app.add_url_rule("/xxx",None,index) 注意事项: - 不用让endpoint重名 - 如果重名函数也一定要相同。 b. 参数 rule, URL规则 view_func, 视图函数名称 endpoint=None, 名称,用于反向生成URL,即: url_for('名称') methods=None, 允许的请求方式,如:["GET","POST"] strict_slashes=None, 对URL最后的 / 符号是否严格要求, redirect_to=None, 重定向到指定地址 defaults=None, 默认值,当URL中无参数,函数需要参数时,使用defaults={'k':'v'}为函数提供参数 subdomain=None, 子域名访问 c. CBV import functools from flask import Flask,views app = Flask(__name__) def wrapper(func): @functools.wraps(func) def inner(*args,**kwargs): return

Scala 入门笔记-单例对象

拟墨画扇 提交于 2019-12-23 12:50:21
在Scala中实现静态字段和静态方法的方式是用Object关键字来实现 1.工具类,存放常量和工具方法 2.实现单例模式 package day03 import scala.collection.mutable.ArrayBuffer object SingletonDemo { def main(args: Array[String]): Unit = { val sessionFactory = SessionFactory println(sessionFactory.getSession) println(sessionFactory.getSession.size) println(sessionFactory.removeSession) } } object SessionFactory { println("SessionFactory") var i = 5 private val session = new ArrayBuffer[Session] while (i > 0) { session += new Session i -= 1 } def getSession = session def removeSession : Unit = { session.remove(0) println("session " + session(0) + "

会话技术(Cookie,Session)

↘锁芯ラ 提交于 2019-12-23 10:44:47
会话技术(Cookie,Session) 会话:简单理解为一个用户开一个浏览器访问某一个网站,不关闭浏览器,点击多个超链接,访问服务器多个服务资源, 然后关闭浏览器。整个过程就是一次会话(会话是针对一个网站而言) 分类: 客户端会话:Cookie 服务器会话:Session 解决问题:使用会话技术,可以在一次会话中的多次请求共享数据 Cookie:一种在客户端保持会话的跟踪解决方案 原理: 1.客户端第一次请求服务器端,服务器作出响应时,会发送set-cookie头,携带需要共享的数据 2.当客户端接受到这个响应,会将数据存储在客户端 3.当客户端再次请求服务器端时,会通过cookie请求头携带着存储的数据。 4.服务器接受带请求,会获取客户端携带的数据 //创建Cookie cookie=new Cookie(string1,string2); string1:用于指定Cookie的属性名字 string2:用于存储指定的Cookie的属性值 //设置Cookie的有效时间 cookie.setMaxAge(time); time:以秒为单位的整数时间 //获取Cookie //从request对象中获取的是“一堆”的Cookie,所以是用一维数组接受 Cookie cookie[]=request.getCookie(); //可以用foreach去遍历数组 for

Hibernate详解

ⅰ亾dé卋堺 提交于 2019-12-23 02:12:19
核心API 编辑 Hibernate的API一共有6个,分别为: Session 、 SessionFactory 、 Transaction 、 Query 、 Criteria 和Configuration。通过这些 接口 ,可以对持久化对象进行存取、事务控制。 Session Session 接口负责执行被持久化对象的 CRUD 操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是 Session对象 是非 线程安全 的。同时,Hibernate的 session 不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。 SessionFactory SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了 工厂模式 。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。 Transaction Transaction 接口是一个可选的API,可以选择不使用这个接口

JavaMail入门第三篇 发送邮件

ε祈祈猫儿з 提交于 2019-12-22 05:18:11
JavaMail API使用javax.mail.Message类来表示一封邮件,Message类是一个抽象类,所以我们需要使用其子类javax.mail.internet.MimeMessage类来创建Message类的实例对象,如果我们创建的是一个简单文本邮件,那么MimeMessage类就可以满足我们的需求了,但是如果需要创建一封包含内嵌资源或者是带附件的复杂邮件,则需要使用到JavaMail API中的MimeMessage、javax.mail.internet.MimeBodyPart和javax.mail.internet.MimeMultipart等类。 1、MimeMessage类表示整封邮件 2、MimeBodyPart类表示邮件的一个MIME消息 3、MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。 这三个类的工作关系如下图所示: 虽然应用程序开发者在使用JavaMailAPI创建邮件内容时,通常只需要使用MimeMessage,MimeBodyPart和MimeMultipart这3个主要的类,但是了解他们的类继承关系也是必要的。下图列出了这三个类的继承关系以及常用方法。 下面用javax.mail.internet.MimeMessage类来创建一封简单的文本邮件, 1 import java.util.Date; 2

分布式系统session一致性问题

空扰寡人 提交于 2019-12-22 04:46:32
一、引言 1.什么是session Session 是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。最常见的,会把用户的登录信息、用户信息存储在 session 中,以保持登录状态。 2.session的创建 在会话开始时,分配一个唯一的会话标识 SessionID(sessionid 是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个 session, 有一个 sessionId 和它对应。),并通过 Cookie 将这个标识告诉浏览器(客户端会将 sessionID 保存在 cookie 中。), 以后每次请求的时候,浏览器都会带上这个会话标识SessionID来告诉Web服务器这个请求是属于哪个会话的。 在Web服务器上,各个会话都有独立的存储,保存不同会话的信息。如果遇到禁用Cookie的情况, 一般的做法就是把这个会话标识放到URL的参数中。 3.session共享 分布式情况下,如果每台服务器都session存在自己的内存中,不同服务器之间就会造成数据不一致问题, 这时候就需要session共享。单机情况下,不存在Session共享的情况。分布式情况下, 如果不进行Session共享会出现数据不一致,比如:会导致请求落到不同服务器要重复登录的情况。 二、解决方案 1.session复制 应用服务器开启web容器的session复制功能

Express 4.x Node.js的Web框架

左心房为你撑大大i 提交于 2019-12-21 14:22:27
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。 http://www.cnblogs.com/shijiaqi1066/p/3821150.html 本文使用node.js v0.10.28 + express 4.2.0 1 Express概述 Express 是一个简洁而灵活的node.js的MVC Web应用框架,提供一系列强大特性创建各种Web应用。 Express 不对 node.js 已有的特性进行二次抽象,我们只是在它之上扩展了Web应用所需的功能。 Expressd底层由Node.js的HTTP模块实现。 1.1 express 4.x 安装 express 4.x与之前的版本有了许多的变化,书里和网上的很多方法都不再适用。学习需要更多的参考官方文档。 若需要用express 3.x版本,直接使用nmp 中的@字符确定版本,指令如下: npm install -g express-generator@3 若需要使用4.x,注意的问题在4.x版本express 已经把命令行工具分离出来。 现在全局安装只需要安装这个命令行工具就可以,指令如下: npm install -g express-generator 1.2 创建express工程 使用express命令 express [options] 选项: -h, -

Servlet 学习开发笔记

依然范特西╮ 提交于 2019-12-21 04:23:25
生命周期 Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: Servlet 通过调用 init () 方法进行初始化。 Servlet 调用 service() 方法来处理客户端的请求。 Servlet 通过调用 destroy() 方法终止(结束)。 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。 init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。 service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。 destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。在调用 destroy() 方法之后

from beginning to end_mouth04_day03

蓝咒 提交于 2019-12-21 00:06:47
day03 为什么会出现跨域问题:1、浏览器限制,2、跨域(域名,端口不一样都是跨域),3、XHR(XMLHttpRequest请求)。同时满足三个条件才有可能产生跨域问题。 cookies和session的异同 cookie数据存放在客户的浏览器上,session数据放在服务器上。 cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。 session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。cookie 和session 的联系:session是通过cookie来工作的,可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中 CSRF的 攻击原理和防范措施 攻击原理: 用户C访问正常网站A时进行登录,浏览器保存A的cookie 用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数 而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookie 所以网站A在接收到请求之后可判断当前用户是登录状态,所以根据用户的权限做具体的操作逻辑