session对象

讲讲session是怎么工作的,session的用法?

被刻印的时光 ゝ 提交于 2020-01-03 09:09:19
6.session的用法 到现在为止,我们学会了一次单独的请求和响应之间传递参数。但是如何跨越几次请求响应之间传递参数呢?比如我以马克的身份登录,这是 一次请求响应。之后买书又是一次请求响应。如何买书的时候还记得买书的人是马克,而不是张三呢?马克这个参数存在哪呢?这是跨越两次访问。Sun公司为我 们提供了HttpSession这个接口。HttpSession session = request.getSession();通过这句话,你可以得到一个与你的浏览器绑定的session对象,存在Tomcat里。这 个session对象只认你这个浏览器,之后只要是你这个浏览器发出的请求,无论跨越多少次请求响应,这个session对象就对它开放,其它浏览器不能 访问。通过session.setAttribute()可以往session里面存值,session.getAttribute可以取值。问题是 session是如何识别你的浏览器呢?初学者可忽略:靠Cookie或者URL改写:如果浏览器支持Cookie,则使用Cookie;如果浏览器不支持Cookie或者Cookie功能被关闭,则自动使用URL改写方法。拿cookie来说(通常客户很少见关闭cookie,即使你关了,我也可以发现,之后提醒你打开或编程序重写URL),服务器往客户端写东西时,cookie会带上sessionid

MyBatis 注解开发+逆向(Generator)

笑着哭i 提交于 2020-01-02 18:42:50
注解开发 最初设计时,MyBatis 是一个 XML 驱动的框架。配置信息是基于 XML 的,而且映射语句也是定义在 XML 中的。随着技术的更新发展,对于开发效率要求也原来越高,特别是一些小型项目;越来越多的框架开始支持注解, 到MyBatis3时,MyBatis对注解有了完善的支持,利用注解可以在一些情况下提高开发效率 但不幸的是,Java 注解的的表达力和灵活性十分有限。尽管很多时间都花在调查、设计和试验上, 最强大的 MyBatis 映射并不能用注解来构建 1. select 接口方法声明: import com.kkb.pojo.User; import org.apache.ibatis.annotations.Select; public interface UserMapper2 { @Select("select * from kuser where id = #{id}") public User selectUserByID(int id); } 测试方法: @Test public void selectTest(){ SqlSession session = factory.openSession(); UserMapper2 mapper = session.getMapper(UserMapper2.class); User user = mapper

会话、Cookie、Session、url重写

感情迁移 提交于 2020-01-02 16:15:55
会话 在介绍Cookie与Session之前,想说明一下什么是会话。 会话 :可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应。 在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束。 为什么需要会话技术呢?这还地得从Http说起,Http是无状态的,所谓无状态就好像没有记忆一样。要保存一些共享的数据信息,就需要会话技术。 会话跟踪技术 :在一个会话的多个请求中共享数据,这就是会话跟踪技术。 四大会话跟踪技术分别是:Cookie,Session,url重写,隐藏域。 Cookie :服务器在一个应答首部传递给浏览器的名称/值对。浏览器保存的时间由cookie的过期时间属性来指定。当浏览器向某个服务器发送一个请求时,它会检查其保存的cookie,并在请求首部中包含从同一台服务器上接收到的所有cookie。 首次都是通过URL传递的,即在URL后跟一个ID标识。然后会判断客户端是否接受cookie,接受的话,存放在cookie里。不接受的话,仍然利用URL传递,即id保存在每次的URL里。 Session :在浏览器和服务器之间不直接传送所有的状态信息,而只是传递表示符(session ID)。浏览器发送sessionID,服务器跟踪与该会话相关联的所有信息

服务器认证、授权、鉴权、session、token

跟風遠走 提交于 2020-01-02 15:25:23
1、session(赛神)会话机制 session 会话机制会借助 cookie + session 一起来做认证 cookie 是放在浏览器中的,cookie 是存储在客服端,但是可以由服务端和客户端生成。 sesion 是保存在服务端的数据库中的,session 是服务端一块存储空间,只能由服务端生成。 session 是把 session id 也就是session 的 key 值,保存到 cookie 当中 这个 key 值 一般在访问其他页面的时候会放到 cookie 当中,向后端发起请求 当用户输入账号和密码登录后,服务端会返回用户的session id 把他放在cookie中这就是session机制认证 2、token(套肯)安全令牌机制 token 不依赖服务器资源 token 服务端生成的 往往会将 token 放在浏览器中,请求头中 当用户输入账号和密码后,后端将他的安全令牌作为相应数据返回给我,那就是 token 令牌机制 当用户输入账号和密码后,会返回一个 token ,绝大多数情况下会 通过前端的工程师放到请求头当中,然后再去发起请求 用的最多的是 jwt token 机制 浏览器接收到响应报文之后,会将 token 放在 local storage (本地存储空间)/ session storage 3、鉴权   是指验证用户是否拥有访问系统的权利--

express-session使用理解

佐手、 提交于 2020-01-02 08:14:17
本篇主要段落翻译来自https://github.com/expressjs/session 客户端与服务会使用一个Sessionid的Cookie值来进行客户端和服务器端会话的匹配,这个Cookie一般是服务器端读/写的,并在Http请求响应的Header中的Set-Cookie属性设置: express-session是针对nodejs express框架提供的一套session扩展 主要参数有 secret,sesave,saveUninitialized,cookie cookie 主要属性如下,默认值 { path: '/', httpOnly: true, secure: false, maxAge: null } domain :设置cookie可以设置的域名,如果没有设置则cookie默认在当前域可以使用 expires :cookie失效时间,可以设置时间,不建议给固定时间,设置maxAge之后自动会生成这个值 例子 //获取当前时间 var date=new Date(); var expireDays=10; //将date设置为10天以后的时间 date.setTime(date.getTime()+expireDays*24*3600*1000); //将userId和userName两个Cookie设置为10天后过期 expires:date

Hibernate学习

北城余情 提交于 2020-01-02 04:36:23
Hibernate学习 Hibernate基本配置 ### 实体类 package com.xiao;​import lombok.Data;​@Datapublic class GoodsEntity {​ public GoodsEntity() { }​ public GoodsEntity(String name, Double price) { this.name = name; this.price = price; }​ private int sid; private String name; private Double price;​} Hibernate核心配置文件 <?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!--mysql账户名--> <property name="connection.username">root</property>

Hibernate(六)一对多映射(多对一)

浪子不回头ぞ 提交于 2020-01-02 03:49:23
一、Hinbernate中持久化类的关联关系 在数据库中,表表之间是通过外键关联的,在程序中是要转化为持久化类也就是(JAVA Bean)来实例的。 但在Hibernater中持久化的之间的映射关系,不是通外键建立关联,而是通过属性.主要有以下几种 一对一, 一对多(多对一) 多对多 关联方向: 单向关联 双向关联 二、一对多单向关联关系 2.1、建立数据库表 班级表,和学生表,学生生通过班级表中的,班级编号为外键 --班级表 create table grade ( gid number primary key, --班级ID gname varchar2(50), --班级名称 gdesc varchar2(50) --班级介绍 ); --学生表 create table student ( sid number primary key, --主键ID学生ID sname varchar2(20), --学生姓名 sex varchar2(20), --学生性别 gid number references grade(gid) ---外键班级ID ); 2.2、建立持久化类和映射配置文件 班级和学生类 package entity; import java.util.HashSet; import java.util.Set; /* * 班级类 */ public class

hibernate之一对多映射

烂漫一生 提交于 2020-01-02 03:49:05
目录 第一章 课程简介 第二章 Hibernate中的单向一对多关联 2-1 一对多映射简介 2-2 hibernate的基础配置 2-3 创建HibernateUtil工具类 2-4 在mysql数据库中建表 2-5 创建持久化和映射文件并配置一对多关系 2-6 测试——添加和查询学生信息 2-7 测试——修改和删除学生信息 2-8 set元素的常用属性 第三章 单向多对一关联 3-1 简介 3-2 单向多对一的配置 3-3 测试——添加学生信息 3-4 双向多对一测试 第四章 inverse和cascade属性 4-1 inverse属性的用法 4-2 cascade属性的用法 4-3 测试——信息查询 源码地址: https://github.com/weiliangchun/JavaCode/tree/master/hibernateImooc/1-2Hibernate-one2many 第一章 课程简介 映射类型 一对多(one-to-many) 多对一(many-to-one) 一对一(one-to-one) 多对多(many-to-many) 第二章 Hibernate中的单向一对多关联 2-1 一对多映射简介 如:一个班级对应多个学生 在数据库中,可以通过添加主外键的关联,表现一对多的关系 通过在一方持有多方的集合实现,即在“一”的一端中使用 元素表示持有“多

如何搭建环境---初识mybatis

我只是一个虾纸丫 提交于 2020-01-01 12:32:45
一:mybatis概念 1:简介 MyBatis本是apache的一个开源项目iBatis,2010年改名为 MyBatis, MyBatis 是一个基于Java的持久层框架。(操作数据库) 2:优点 1:半自动化的ORM实现(实体类和SQL语句之间建立映射关系) 2:SQL代码从程序代码中彻底分离,可重用 3:与JDBC相比,减少了50%以上的代码量 4:小巧灵活、简单易学,是最简单的持久化框架 5:提供XML标签,支持编写动态SQL 6:提供映射标签,支持对象与数据库的ORM字段映射 3:MyBatis缺点 1:SQL语句编写工作量大,对开发人员有一定sql技术要求 2:数据库移植性差(不同数据库,sql语句语法有所不同) *******************************************mybatis环境搭建开始****************************************** 1:导入mybatis的jar包 mybatis-3.2.2.jar mysql-connector-java-5.1.25-bin.jar 2:创建mybatis的核心配置文件(mybatis-config.xml) <configuration> <environments default="development"> <environment id=

hibernate02环境的搭建

人走茶凉 提交于 2020-01-01 09:16:05
hibernate: 持久层的框架! 是一个开放源代码的对象关系映射框架(ORM)!之前我们访问数据库使用JDBC! 对JDBC进行了轻量级的对象封装!是一个全自动ORM框架!(底层可以自动生成sql语句)! 使用面向对象的思想来操作数据库! 创建一个java项目 引入需要的hibernate需要的jar包以及连接数据库需要的驱动包 把jar包放入项目中并引用 创建对应的学生类 /** * 学生的实体类 */ public class Student { private Integer id; private Integer age; private String name;// 和数据库中不一致 (sname) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Student