session对象

Spring02——Spring 中 Bean 的生命周期及其作用域

早过忘川 提交于 2020-03-27 00:00:11
在前一篇文章中,我们已经介绍了 Spring IOC 的相关知识,今天将为个位介绍 Spring 中 Bean 的相关知识。关注我的公众号「Java面典」,每天 10:24 和你一起了解更多 Java 相关知识点。 Bean 的生命周期 Spring 生命周期有四个阶段,分别是: 实例化 Instantiation 属性赋值 Populate 初始化 Initialization 销毁 Destruction 实例化 通过构造器或工厂方法创建 Bean 实例,也就是我们常说的给自己 new 一个对象。 属性赋值 为 Bean 的属性设置值和对其他 Bean 的引用,主要涉及以下几个方面的内容: IOC 依赖注入 :按照 Spring 上下文对实例化的 Bean 进行配置,也就是 IOC 注入; setBeanName 实现 :如果这个 Bean 已经实现了 BeanNameAware 接口,会调用它实现的 setBeanName(String)方法,此处传递的就是 Spring 配置文件中 Bean 的 id 值; BeanFactoryAware 实现 :如果这个 Bean 已经实现了 BeanFactoryAware 接口,会调用它实现的 setBeanFactory,setBeanFactory(BeanFactory)传递的是 Spring 工厂自身

Django 会话session

只谈情不闲聊 提交于 2020-03-26 19:26:55
因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的、独立的。通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户。对于静态网站,这可能不是个问题,而对于动态网站,尤其是京东、天猫、银行等购物或金融网站,无法识别用户并保持用户状态是致命的,根本就无法提供服务。可以尝试将浏览器的cookie功能关闭,会发现将无法在京东登录和购物。 为了保持连接状态,网站会通过用户的浏览器在用户机器内被限定的硬盘位置中写入一些数据,也就是所谓的Cookie。通过Cookie可以保存一些诸如用户名、浏览记录、表单记录、登录和注销等各种数据。但是这种方式非常不安全,因为Cookie保存在用户的机器上,如果Cookie被伪造、篡改或删除,就会造成极大的安全威胁,因此,现代网站设计通常将Cookie用来保存一些不重要的内容,实际的用户数据和状态还是以Session会话的方式保存在服务器端。 Session就是在服务器端的‘Cookie’,将用户数据保存在服务器端,远比保存在用户端要安全、方便和快捷得多。 Session依赖Cookie!但与Cookie不同的地方在于Session将所有的数据都放在服务器端,用户浏览器的Cookie中只会保存一个非明文的识别信息,比如哈希值。 Session是大多数网站都需要具备的功能

sqlalchemy ORM

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-26 07:45:38
orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直接使用sql语言。 在Python中,最有名的ORM框架是SQLAlchemy。 一、安装 pip3 install SQLAlchemy -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 二、sqlalchemy基本使用 创建表 # -*- coding:utf-8 -*- # Author:Brownyangyang import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,String #建立连接,echo=True是打印创建过程,root是用户,mysql是密码,liyang是表空间 #

保护你的会话令牌

独自空忆成欢 提交于 2020-03-26 04:24:35
保护你的会话令牌 通常我们会采取以下的措施来保护会话。 1.采用强算法生成Session ID 正如我们前面用Web Scrab分析的那样,会话ID必须具有随机性和不可预测性。一般来说,会话ID的长度至少为128位。下面我们就拿常见的应用服务器Tomcat来说明如何配置会话ID的长度和生成算法。 首先我们找到{TOMCAT_HOME}\conf\context.xml,然后加入下面一段设置 <Manager sessionIdLength="20" ➊ secureRandomAlgorithm="SHA1PRNG" ➋ secureRandomClass="java.security.SecureRandom" ➌ /> ➊ 定义会话ID 的长度,如果我们这里不声明的话,默认是16字节。可能有读者会纳闷,怎么平时我看到的会话ID都是很长的呀?我们就拿这里的20个字节来讲吧,我们在浏览器发送请求时会发现这样的会话ID: JSESSIONID=90503B6BE403D4AB6164A311E167CF1F6F3F2BD0 仔细看会发现ID的长度为40,因为这里显示的是十六进制,每两个字符代表一个字节。 ➋ 定义随机数算法,默认的是SHA1PRNG,你也可以换成自己的算法。 ➌ 定义随机数类,默认的是java.security.SecureRandom

浅析Cookie、Session以及Token机制

最后都变了- 提交于 2020-03-25 02:41:56
一、前言   这篇博客来谈一谈 Web 应用中广泛使用的 Cookie 、 Session 以及 Token 机制,它们在 Web 应用中起着至关重要的作用,同时也是面试中的高频考点。这篇博客我主要来介绍一下这三种东西的相关概念和它们实现的原理,以及它们之间的区别。 二、正文   2.1 为什么需要它们   首先来说第一个问题,我们为什么需要这三样东西?稍微了解过 HTTP 的应该知道, HTTP 协议是一个无状态的协议。什么是无状态?就是说, HTTP 服务器对每一条请求一视同仁,不会记录每一条请求的状态,比如是由谁发出的,所有的请求对它来说都是陌生的。就算你连续向同一个服务器发送两条请求,对它来说,这也是两条完全不相关的请求。但是,我们会发现这样一个现象,当我们在一个网站登录后,服务器就好像认识了我们,我们发送出去的请求,都能得到与我们自身相关的响应。比如说我们在淘宝登录后,点击购物车,就能够看见我们自己加入的商品;而如果我们没有登录,就会被拦截下来,跳转到登录页面。这是为什么呢?不是说 HTTP 是无状态的吗。其实,这就是依赖于上面的三种机制。   2.2 Cookie    Cookie 其实就是浏览器保存在电脑中的一些文本数据,它们都是 key-value 形式的,其中包含了我们自己以及服务器的一些信息。当我们向一个服务器发送请求时,服务器可能希望我们在本地保存一些数据

映射一对多双向关联关系 cascade、inverse、属性

允我心安 提交于 2020-03-23 13:02:26
当类与类之间建立了关联,就可以方便的从一个对象导航到另一个对象。或者通过集合导航到一组对象。例如: 对于给定的Emp对象,如果想获得与它关联的Dept对象,只要调用如下方法 Dept dept=emp.getDept(); //从Emp对象导航到关联的Dept对象 以Dept(部门)类和Emp(员工)类为例: 一、配置双向一对多关联 需在Dept类中增加一个集合类型的emps属性 private Set<Emp> emps=new HashSet<Emp>(); public Set<Emp> getEmps() { return emps; } public void setEmps(Set<Emp> emps) { this.emps = emps; 如何在映射文件中映射集合类型的emps属性。由于在Dept表中没有直接与emps属性对应的字段。因此不能用<property>元素来映射emps属性,而要使用<set>元素: <set name="emps"> <key column="deptNo"></key> <!-- 多的一方 emp外键 --> <one-to-many class="Emp" /> </set> 解析: <set>元素的name属性:设定持久化类的属性名。此处为Dept类的emps属性。 <set>元素还包含两个子元素: ①<key>元素

06章 映射一对多双向关联关系、以及cascade、inverse属性

倾然丶 夕夏残阳落幕 提交于 2020-03-23 13:02:02
当类与类之间建立了关联,就可以方便的从一个对象导航到另一个对象。或者通过集合导航到一组对象。例如: 对于给定的Emp对象,如果想获得与它关联的Dept对象,只要调用如下方法 Dept dept=emp.getDept(); //从Emp对象导航到关联的Dept对象 以Dept(部门)类和Emp(员工)类为例: 一、配置双向一对多关联 需在Dept类中增加一个集合类型的emps属性 private Set<Emp> emps=new HashSet<Emp>(); public Set<Emp> getEmps() { return emps; } public void setEmps(Set<Emp> emps) { this.emps = emps; 如何在映射文件中映射集合类型的emps属性。由于在Dept表中没有直接与emps属性对应的字段。因此不能用<property>元素来映射emps属性,而要使用<set>元素: <set name="emps"> <key column="deptNo"></key> <!-- 多的一方 emp外键 --> <one-to-many class="Emp" /> </set> 解析: <set>元素的name属性:设定持久化类的属性名。此处为Dept类的emps属性。 <set>元素还包含两个子元素: ①<key>元素

Hibernate关联关系配置(多对一,一对多)

半城伤御伤魂 提交于 2020-03-23 13:01:13
第一种关联关系:一对多(多对一) "一对多"是最普遍的映射关系,简单来讲就如员工与部门的关系。 一对多 :从部门的角度来说一个部门有多个员工,即为一对多。 多对一 :从员工的角度来说多个员工对应一个部门,即多对一。 多对一关系单向在hbm文件中的配置信息: Emp.hbm.xml中: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- package:要映射的对象所在的包(可选,如果不指定,此文件下所有的类都要指定全路径) auto-import 默认为true,在写HQL的时候自动导入包名 如果指定为false,在写HQL的时候必须要写上类的全名-- > <hibernate-mapping package="cn.xsy.entity.day_manytoone"> <class name="Emp" table="Emp"> <id name="empno" column="empno"> <generator class="native"></generator> </id> <many-to-one

Hibernate组件映射

北慕城南 提交于 2020-03-23 12:54:18
组件的映射 建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表中的数目及表之间的外键参照关系。以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,然后建立员工信息表和地址信息表之间的外键关系,当每次查询员工信息时,都需要建立这两个表的连接。建立表的连接是很耗时的操作,为了提高数据库运行性能,可以把这两张表的信息整合在一张员工信息表Empinfo中 提示: HibernateUtil工具类(用于获取session和关闭session) package cn.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { //初始化一个ThreadLocal对象,有get和set方法 private static final ThreadLocal<Session> sessionTL=new ThreadLocal<Session>(); private static Configuration configuration; private final static SessionFactory

06章 映射一对多双向关联关系、以及cascade、inverse属性

半世苍凉 提交于 2020-03-23 12:53:48
当类与类之间建立了关联,就可以方便的从一个对象导航到另一个对象。或者通过集合导航到一组对象。例如: 对于给定的Emp对象,如果想获得与它关联的Dept对象,只要调用如下方法 Dept dept=emp.getDept(); //从Emp对象导航到关联的Dept对象 以Dept(部门)类和Emp(员工)类为例: 一、配置双向一对多关联 需在Dept类中增加一个集合类型的emps属性 private Set<Emp> emps=new HashSet<Emp>(); public Set<Emp> getEmps() { return emps; } public void setEmps(Set<Emp> emps) { this.emps = emps; 如何在映射文件中映射集合类型的emps属性。由于在Dept表中没有直接与emps属性对应的字段。因此不能用<property>元素来映射emps属性,而要使用<set>元素: <set name="emps"> <key column="deptNo"></key> <!-- 多的一方 emp外键 --> <one-to-many class="Emp" /> </set> 解析: <set>元素的name属性:设定持久化类的属性名。此处为Dept类的emps属性。 <set>元素还包含两个子元素: ①<key>元素