session、cookie

1、HttpSession概述
>HttpSession是由JavaWeb提供的,用来会话跟踪的类。session是服务器端对象,保存在服务器端!!!
>HttpSession是Servlet三大域对象之一(request、session、application(ServletContext)),所以它也有setAttribute()、getAttribute()、removeAttribute()方法
>HttpSession底层依赖Cookie,或是URL重写!
session技术:保存用户信息的技术, session是服务器端保存用户数据的技术
使用session前先获取session:
①Servlet中获取session对象:HttpSession session = request.getSession();
②Jsp中得到session对象:session是jsp内置对象之下,不用创建就可以直接使用!
session域相关方法:
>void setAttribute(String name, Object value);存对象
>Object getAttribute(String name);取出对象
>void removeAttribute(String name);移除对象
1、session 数据存储和获取 (跨请求存取数据)
存数据:session.setAttribute("uname" ,"用户名的值");
取数据:session.getAttribute("uname");
2、session作用范围 :【一次会话】在一次会话内,所有的servlet和jsp共享 session对象中的数据 ,一次会话可以跨请求(跨页面)
   什么是一次会话:打开浏览器(同一个浏览器) => 访问web应用项目 => 浏览器关闭。就是一次会话【注意:不同的浏览器,属于不同的会话】
3、session是否是同一个session。【通过sessionid去判断:session.getId();】
4、session的应用:【session保存用户信息、session 统计在线用户数量】
5、session的过期机制:帮助我们理解 session作用范围,存取值问题
设定session过期机制的三种方式:
①web.xml中进行配置:tomcat -->conf-->web.xml【过期时间默认为30, 单位是分钟】

 <session-config>
<session-timeout>30</session-timeout>
</session-config>

②程序中设置过期时间【以秒为单位,过期时间(负值或0 永不过期)】 session.setMaxInactiveInterval(1); 
③ session.invalidate();方法 ,对session 中的对象解绑,session过期
注:如果sesssion过期 ,那么 session.setAttibute("uname" ,"值");中存放的数据将获取不到

2、Cookie机制:
  
Cookie技术是一个浏览器端保存数据的技术,保存用户信息的机制【记住密码功能和购物车功能 cookie技术的典型应用】
cookie工作原理:(熟悉)
①服务器端生成 cookie对象保存用户数据,
②将cookie对象放到 response对象中,响应给浏览器客户端,
③在浏览器客户端保存cookie(带有用户数据的)信息 ,
④在用户第二次访问web应用的时候,会把带有用户信息的cookie 通过request对象将用户名数据发送给服务器
⑤服务器解析request对象获取cookie信息
3、session和cookie的区别:[session和cookie都可以保存用户信息]
①存储方式
session以对象的形式存取
session.setAttribute("uname" ,"value"); Object obj = session.getAttribute("uname");
cookie数据存取形式,内部是字符串的形式存在的

②session存储机制,在服务器端存储用户数据;cookie是在客户端存储数据(服务器端只是生成和设置cookie)
③存储的数据量的问题
cookie存放在客户端,只是存储少量数据
存储大量数据,存放在服务器端session
④安全问题
session更加安全 ,因为session存放在服务器上
cookie存放在用户的浏览器客户端
⑤效率问题:session存取效率更高
⑥有效时间问题
 理论上,如果浏览器一直存在,存放在cookie中数据就一直存在(永久保存)。session 是一次会话,相对较短
⑦适合的场景:一些重要的数据 存放在session中;一些不是太重要的数据存放在cookie中.

05-【session、cookie】的更多相关文章

  1. Jmeter之处理session、cookie以及如何做关联

    具体描述问题之前,我们先了解下session.cookie session.cookie的概念 1.session是放在服务器上的,过期与否取决于服务期的设定,cookie是存在客户端的,过去与否可以 ...

  2. python运维开发(十九)----Django后台表单验证、session、cookie、model操作

    内容目录: Django后台表单验证 CSRF加密传输 session.cookie model数据库操作 Django后台Form表单验证 Django中Form一般有2种功能: 1.用于做用户提交 ...

  3. Python全栈【进程、线程】

    Python全栈[进程.线程] 本节内容: 进程 线程 协程 I/O多路复用 进程 1.进程就是一个程序在一个数据集上的一次动态执行过程,进程是资源分配的最小单元. 2.进程一般由程序.数据集.进程控 ...

  4. 【Collection、泛型】

    [Collection.泛型] 主要内容 Collection集合 迭代器 增强for 泛型 第一章 Collection集合 1.1 集合概述 集合:集合是java中提供的一种容器,可以用来存储多个 ...

  5. Servlet体验之旅(二)——Session、Cookie

    我们知道Session和Cookie都是用于会话跟踪的,仅仅是实现的方式不大一样,那么他们到底有什么不同呢?以下跟着我脚步来了解一下: Session.Cookie的含义: Session 一种ser ...

  6. JWT的初步了解以及session、cookie机制

    1.什么是状态保持? 想要了解JWT,首先需要知道什么是状态保持,举一个例子来说:无论是在web上还是在手机app上,我们都可以以游客的身份访问,此时都会有登录/注册字眼,当我们登录之后,就会是我们的 ...

  7. JavaSpring【一、概述】

    主要内容 JavaSpring[一.概述] JavaSpring[二.IOC] JavaSpring[三.Bean] JavaSpring[四.Bean管理注解实现] JavaSpring[五.AOP ...

  8. JavaWeb【一、简介】

    原计划上周完成的内容,硬是过了一个清明拖到了这周,工作上还有很多东西没做...明天抓紧看把,争取这周末搞定 内容简介:(学习完后会重新梳理调整) 1.JavaWeb[一.简介] 2.JavaWeb[二 ...

  9. JavaJDBC【一、概述】

    其实这个内容在学习java基础的时候就有看过了,只是没有详细整理,在这再整理一下 数据库操作对于任何一门后端语言来说都是很重要的 JDBC:Java Data Base Connectivity 内容 ...

随机推荐

  1. Tanimoto Coefficient

    Tanimoto Coefficient The Tanimoto coefficient between two points, a and b, with k dimensions is calc ...

  2. vs把asp.net旧的项目名称全部修改

    1 先打开项目,把名称全部替换掉,然后把解决方案,程序集名称全部替换掉. 2 重新生成,清理,关闭项目. 3 把.sln文件用文本编辑器打开,替换里面的名称,然后把文件夹名称都修改好.d 4.打开项目 ...

  3. SpringBoot: 3.SpringBoot整合filter(转)

    整合方式一:通过注解扫描完成 Filter 组件的注册 1.编写filter package com.bjsxt.filter; import javax.servlet.*; import java ...

  4. Mac 每次重启终端后配置的不生效.需要重新source

    Mac 每次都要执行source ~/.bash_profile 配置的环境变量才生效 自己在 ~/.bash_profile 中配置环境变量, 可是每次重启终端后配置的不生效.需要重新执行 : $s ...

  5. Opencv 简单视频播放器

    // C++ header and namespace #include <iostream> #include <string> #include <cstdlib&g ...

  6. [转帖]云服务器使用CentOS、Debian、Ubuntu的哪个版本

    云服务器使用CentOS.Debian.Ubuntu的哪个版本 2018-09-09 12:32:45作者:ywnz稿源:云网牛站 https://ywnz.com/linuxyffq/2986.ht ...

  7. 【Python】【demo实验18】【练习实例】【统计输入字符串中,数字的个数、英文字母的个数及其他符号的个数】

    原题: 输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. (本题暂时不支持中文字符及汉字) 我的代码: #!/usr/bin/python # encoding=utf-8 # -* ...

  8. Redis(1.8)Redis与mysql的数据库同步(缓存穿透与缓存雪崩)

    [1]缓存穿透与缓存雪崩 [1.1]缓存和数据库间数据一致性问题 分布式环境下(单机就不用说了)非常容易出现缓存和数据库间的数据一致性问题,针对这一点的话,只能说,如果你的项目对缓存的要求是强一致性的 ...

  9. 在Docker Container 内部安装 Mono 的方法 ---From官网

    1.首先 mono 是什么 Mono是一个由Xamarin公司(先前是Novell,最早为Ximian)所主持的自由开放源代码项目. 该项目的目标是创建一系列匹配ECMA标准(Ecma-334和Ecm ...

  10. python报错及处理 -- 不断总结

    ModuleNotFoundError: No module named 'PIL' 解决方法: 运行命令:pip install Pillow IndentationError: expected ...