JavaWeb学习笔记(狂神版)--- 第九节 Cookie与Session
第九节 Cookie与Session
目录
- 第九节 Cookie与Session
- 9.1 会话
- 9.2 Cookie
- 9.3 Session
9.1 会话
会话:用户打开一个浏览器,点了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话
有状态会话:一个客户端访问过服务端,下次再访问时,服务端会知道这个客户端访问过
一个网站,怎么证明客户访问过?(客户端->服务端)
- 服务端给客户端一个信件,客户端下次访问服务端带上这个“信件”即可->cookie
- 服务器登记了客户端来过,下一次客户端再访问时进行匹配->session
保存会话的两种技术
cookie:一种客户端技术(请求和响应)
session:一种服务器技术,利用这个技术可以保存用户的会话信息,我们可以把信息和数据放在session中
常见实例:访问过一个网站,下一次不用再登录就可以直接访问
9.2 Cookie
- 从请求中拿到cookie //Cookie[] cookies = req.getCookies();
- 服务器响应给客户端cookie //resp.addCookie(new Cookie(“lastLoginTime”,System.currentTimeMillis()+""));
典例:保存用户的上一次访问时间
//保存用户上一次访问的时间
public class cookie extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//服务器告诉你来的时间,把那个时间封装成一个信件,你下一次带着信件来,服务器就知道你来了req.setCharacterEncoding("utf-16");resp.setCharacterEncoding("utf-16");PrintWriter writer = resp.getWriter();//Cookie是服务器从客户端获取的Cookie[] cookies = req.getCookies(); //返回一个数组,说明cookie存在多个//先判断Cookie是否存在if(cookies!=null){//如果存在writer.write("你上一次访问的时间为:");for(int i=0;i<cookies.length;i++){Cookie cookie = cookies[i];//获取cookie的名字if(cookie.getName().equals("lastLoginTime")){//获取cookie中的值long l = Long.parseLong(cookie.getValue());Date date = new Date(l);writer.write(date.toLocaleString());}}}else {writer.write("这是你第一次访问本站");}//服务器给客户端响应一个cookieresp.addCookie(new Cookie("lastLoginTime",System.currentTimeMillis()+""));}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}
}
启动测试
如果关闭浏览器,则上一次访问的时间将会改变,不再保存,但是可以通过设置有效期使上一次访问的时间在有效期内保存,即浏览器关闭cookie仍然存在
//cookie有效期为一天
cookie.setMaxAge(24*60*60);
cookie一般会保存在本地的用户目录下appdata
关于Cookie的删除:
- 不设置有效期,关闭浏览器自动删除
- 设置有效期为0
注意:在通信时如果存在中文,最好使用这种方式:编码URLencoding.encode(“你好世界”,“utf-8”),解码URLDecoder.decode(“你好世界”,"utf-8’’)
9.3 Session
Session简介:服务器会为每一个用户(浏览器)创建一个Session对象,一个Session独占一个浏览器,即只要浏览器没有关闭,这个Session就存在
用户登录之后,整个网站都可以访问–>保存用户信息(保存购物车等)
典例:通过session获取一个类的信息
访问/session存储信息
@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//解决乱码问题req.setCharacterEncoding("utf-16");resp.setCharacterEncoding("utf-16");resp.setContentType("text/html;charset=utf-8");//得到SessionHttpSession session = req.getSession();//给session存储数据session.setAttribute("name",new person("srq",520));//获取session的idString id = session.getId();//判断是否是新的sessionif(session.isNew()){resp.getWriter().write("新的session已创建,新的session的id为:"+id);}else {resp.getWriter().write("session已经存在,新的session的id为:"+id);}//Session创建的时候做了什么事情
// Cookie cookie = new Cookie("JSESSIONID",id);
// resp.addCookie(cookie);}
访问/s2打印信息
@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//解决乱码问题req.setCharacterEncoding("utf-16");resp.setCharacterEncoding("utf-16");resp.setContentType("text/html;charset=utf-8");//得到SessionHttpSession session = req.getSession();//获取Session数据person name = (person) session.getAttribute("name");System.out.println(name.toString());}
启动测试
Session的注销:
在java文件中注销
session.invalidate();
在配置文件中注销
<!-- 设置Session的默认失效时间--><session-config>//15min后session自动失效<session-timeout>15</session-timeout></session-config>
Session与Cookie的区别:
Cookie:把用户的数据写给用户的浏览器(保存多个信息)
Session:把用户的数据写在用户独占的Session中(保存重要的信息),由服务器创建
使用场景:保存用户登录信息,保存购物车信息
如果文章对您有所帮助,记得一键三连支持一下哦~
JavaWeb学习笔记(狂神版)--- 第九节 Cookie与Session相关推荐
- Web后端学习笔记 Flask(9)cookie and session
Flask_wtf除了可以做表单验证,模板渲染之外,还可以防御CSRF攻击.要了解CSRF攻击的原理,首先需要了解cookie和session的知识点. cookie:在网站中,HTTP请求是无状态的 ...
- Spring学习笔记-狂神版
1|0前言 Mybatis学完开始学Spring 同样先放上参考文档,现在只是需要短时间之内要过一下基础,等考完研再看要不要深入学习吧. B站 https://www.bilibili.com/vid ...
- B站狂神说JavaWeb学习笔记
JavaWeb学习笔记(根据b站狂神说java编写) 1.基本概念 1.1 前言 静态Web: 提供给所有人看数据不会发生变化! HTML,CSS 动态Web: 有数据交互,登录账号密码,网站访问人数 ...
- JavaWeb学习笔记(5)-B站尚硅谷
文章目录 十四.书城项目第三阶段--优化 (1)页面jsp动态化 (2)抽取页面中相同的内容 A.登录成功的菜单 B.base.css.jQuery标签 C.每个页面的页脚 D.manager模块的菜 ...
- JavaWeb学习笔记(软件系统体系结构、Tomcat、Web应用、HTTP协议)
JavaWeb学习笔记 JavaWeb学习笔记 软件系统体系结构 常见软件系统体系结构C/S.B/S Web资源 Web服务器 Tomcat Tomcat概述 安装.启动.配置Tomcat Web应用 ...
- JavaWeb学习笔记2 —— Web服务器简介
JavaWeb学习笔记2 -- Web服务器简介 参考教程B站狂神https://www.bilibili.com/video/BV12J411M7Sj 相关技术 ASP: 微软:国内最早流行的就是A ...
- JavaWeb学习笔记(数据库、SQL语句、数据查询语法、完整性约束、编码、备份和恢复数据、多表查询)
数据库.SQL语句.数据查询语法.完整性约束.编码.备份和恢复数据.多表查询 JavaWeb学习笔记 数据库 数据库概念 基本命令 启动和关闭mysql服务器 客户端登录退出mysql SQL语句 S ...
- JavaWeb学习笔记(十)--HttpServletRequest
1. HttpServletRequest简介 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中 2. Ht ...
- JavaWeb学习笔记-目录(待完成)
JavaWeb学习笔记-目录(待完成) 01-基础加强(注解+反射) 02-mysql基础 03-mysql约束 04-mysql多表事务 05-jdbc 06-jdbc连接池JDBCTemplate ...
最新文章
- 如何允许计算机远程桌面连接,远程桌面 - 允许访问你的电脑
- CF1097D Makoto and a Blackboard(期望)
- 在现有K8S集群上安装部署JenkinsX
- redis -memcahe-mongo资料-windows定时重启计划
- java中long类型转换为int类型
- 【北京】线下活动 | Azure SQL Database Managed Instance发布会
- 【转】温故之.NET 异步
- 计算机组装虚拟实验,组装计算机的虚拟实验室
- 从浏览器中下载文件如何修改默认保存位置
- 2020 开春程序员面试必备!拿走不谢!
- python生成器函数的使用(模拟cycle函数)
- 20190925 On Java8 第二十二章 枚举
- 程序猿最喜欢哪一个浏览器?
- 超级鹰 古诗文网验证码识别实例
- 武汉大学计算机学院成绩单,2018年武汉大学各学院总评成绩计算公式汇总
- 程序员也需要知道的经济学通识
- MATLAB中cumsum函数
- 阻容感基础06:电容器分类(2)-电解电容
- iOS平台epub阅读器推荐
- Win7,8的上帝模式文件夹 GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}