javaweb_会话管理(sessionCookie)
一、会话管理
1、会话概述:
双方的交流或交互,计算机中也是,浏览器和服务器的交互称之为会话。
一次会话中包含多次请求和响应
2、会话功能:
在一次会话的范围内的多次请求间,共享数据
功能:
限制页面的访问(后台的页面在非登录的情况下是不能进行访问的)
临时的存储数据,在多次请求之间进行数据共享
记住密码,自动登录,7天免登陆等等
3、生命周期:
开始
浏览器访问服务器那一刻会话开始
结束
浏览器或服务器一方中断时结束
注意事项:服务器一般处于持续运行状态,因此会话结束一般是浏览器关闭引起的。
4、会话技术:
最常见方案:数据库存储
将数据存储到Cookie:数据由浏览器保存
将数据存储到session:数据由服务器保存
5、案例
案例<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><!-- Cookie存储的基本使用 --><!-- 需求:访问cookiedemo1页面时,通过Cookie保存一个用户名 将来在这个web_07_cookie这个项目中的任意页面中可以去访问到这个cookie所保存的用户名(1)创建Cookie对象,绑定数据(在服务器端获取指定数据通过cookie保存)** Cookie cookie = new Cookie(key,value);(2)发送Cookie对象(从服务端---》客户端)** response.addCookie(cookie)(3)获取Cookie,获取数据** Cookie [] cookies = request.getCookies()注意事项:如果通过cookie进行保存数据时,数据中含有特殊的字符:空格,@&*等等需要进行编码和解码 编码 URLEncoder.encode("字符串","utf-8");解码 URLDecoder.decode("字符串","utf-8"); --><%//1.创建Cookie 保存用户名 键值对的形式Cookie cookieUsername = new Cookie("username",URLEncoder.encode("张无 忌", "utf-8")); //2.通过response响应对象发送的浏览器客户端进行保存response.addCookie(cookieUsername);%></body>
</html>
二、Cookie
1、概述
(1)用来存储客户端的一小段文本
(2)是一门客户端的技术,将数据保存到客户端;因为cookie是存储在客户端浏览器中的
(3)是为了实现 客户端与服务器端之间的状态的保持
(4)cookie技术,不安全,不要使用cookie存储敏感信息!比如登录状态和登录信息;
(5)一些敏感的数据 应该存储在服务器端
2、常用方法
void setMaxAge(int e);
** 设置Cookie有效期,单位秒,正数为多少秒后失效;负数表示当浏览器关闭时,Cookie将会被删除(争议);零表示清空Cookie
int getMaxAge();
** 获取Cookie有的效时间,单位秒
void setValue(String value);
** 在Cookie创建后,对Cookie进行赋值
String getValue();
** 获取Cookie的值
String getName();
** 获取Cookie的名称
Cookie[] getCookies();
** 获取Cookie中所有的属性名
3、使用方式
(1)创建Cookie对象,绑定数据(在服务器端获取指定数据通过cookie保存)
** Cookie cookie = new Cookie(key,value);
(2)发送Cookie对象(从服务端---》客户端)
** response.addCookie(cookie)
(3)获取Cookie,获取数据
** Cookie [] cookies = request.getCookies()
4、注意事项
编码 URLEncoder.encode("字符串","utf-8");
解码 URLDecoder.decode("字符串","utf-8");
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%//获取sessionString str = (String)session.getAttribute("username");out.println(str);%></body>
</html>
三、session
1、概述
session是属于jsp9大内置对象之一
(1)服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象。jsp:session servlet:HttpSession
(2)通过Session可以在应用程序的WEB页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。
注意事项:客户端长时间不向服务端发出请求,Session对象就会自动消失。这个时间取决于服务器,例如,Tomcat服务器默认为30分钟。
常用方法
public void setAttribute(String name,String value);
** 设定指定名字的属性的值,并将它添加到session会话范围内,如果这个属性是会话范围内存在,则更改该属性的值。
public Object getAttribute(String name);
** 在会话范围内获取指定名字的属性的值,返回值类型为object,如果该属性不存在,则返回null。
public void removeAttribute(String name);
** 删除指定名字的session属性,若该属性不存在,则出现异常。
public void invalidate();
** 使session失效。可以立即使当前会话失效,原来会话中存储的所有对象都不能再被访问。
public String getId( );
** 获取当前的会话ID。每个会话在服务器端都存在一个唯一的标示sessionID,session对象发送到浏览器的唯一数据就是sessionID,它一般存储在cookie中。
public void setMaxInactiveInterval(int interval);
** 设置会话的最大持续时间,单位是秒,负数表明会话永不失效。
public int getMaxInActiveInterval();
**获取会话的最大持续时间,使用时候需要一些处理
四、session和Cookie的区别
(1)session存储数据在服务端,Cookie在客户端
(2)session是一个内置对象,其属性也可以是任何类型,而Cookie对象只能设置字符串
(3)session没有数据大小限制,Cookie有数据大小限制
(4)session数据安全,Cookie相对于不安全
五.Cookie和session代入项目中使用
<!-- 通过include指令引入checkLogin.jsp页面检查是否登录 --><%@ include file="checkLogin.jsp" %><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%/* //定义变量 保存登录的用户String username = "";//后台主页面获取到当前的Cookie对象中所保存的用户名 Cookie[] cookies = request.getCookies();if(null!=cookies){for(Cookie cookie:cookies){if("uname".equals(cookie.getName())){username = cookie.getValue();break;}}}//问题:后台页面不是随随便便能够访问,必须进行管理员登录才能进行访问//判断:username为空 说明没有登录 cookie获取时 cookie.getValue不能赋值if(""==username){//me米有登录//送回去response.sendRedirect("admin_login.jsp");} *///-----------------------------sessionString username = (String)session.getAttribute("username");if(null==username){response.sendRedirect("admin_login.jsp");}%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%/* //退出登录 拿到当前的cookie进行重新保存 跳转到login.jspCookie[] cookies = request.getCookies();if(null!=cookies){for(Cookie cookie:cookies){if("uname".equals(cookie.getName())){//失效 退出登录cookie.setMaxAge(0);//设置时长response.addCookie(cookie);break;}}}//跳回登录页面response.sendRedirect("admin_login.jsp");*///-------------------session注销session.invalidate();//使当前的session失效response.sendRedirect("admin_login.jsp");%>if(""!=uname && ""!=pwd){//数据库查到记录了 /* //-------------------------------cookie-------------------//判断如果选中了复选框 通过Cookie保存值//创建CookieCookie cookieUsername = new Cookie("uname",username);if(null!=isChecks){//选中了复选框------一周内免登陆//由于浏览器关闭后,会话中断,Cookie自动清除//设置时长 秒cookieUsername.setMaxAge(1*60*60*24*7);}//通过response响应对象写回客户端浏览器response.addCookie(cookieUsername);*///-------------------------------session-------------------if(null!=isChecks){//选中了复选框------一周内免登陆//session保存用户名session.setAttribute("username", username);//设置非有效活动时间 如果在10秒内没有对该页面进行任何操作,那么session就会失效,重新登录//类似网银网站session.setMaxInactiveInterval(10);}response.sendRedirect("admin.jsp");//转发到主页面//request.getRequestDispatcher("admin.jsp").forward(request, response);}else{//out.println(js)response.sendRedirect("doAdminLogin.jsp");}
javaweb_会话管理(sessionCookie)相关推荐
- SSH远程会话管理工具 - screen使用教程
刚接触Linux时最怕的就是SSH远程登录Linux VPS编译安装程序时(比如安装lnmp)网络突然断开,或者其他情况导致不得不与远程SSH服务器链接断开,远程执行的命令也被迫停止,只能重新连接,重 ...
- linux会话管理,Linux 安装 screen 远程会话管理工具
在使用景文互联的Linux 云服务器产品编译一些环境时,您可能需要花费不少的时间,如果编译时间过长,可能导致当前SSH会话超时,从而断开了SSH,也终止了环境编译的进程,这对用户使用体验非常不利,所以 ...
- 会话管理隐患与防御 总结
什么是会话控制 SESSION COOKIE 服务器记录用户凭证的一个变量.是一个时域(从用户登录到注销的时间域) 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常 ...
- 5G NGC — 会话管理模型 — PDU Session
目录 文章目录 目录 5G 的会话管理模型 PDU Session PDU Session 的类型 Ethernet Type Unstructured Type DNN 的作用 UE IP 地址的分 ...
- 5G NGC — SMF 会话管理功能
目录 文章目录 目录 SMF SMF 过载控制 NF Services Nsmf_PDUSession Service Create SM Context service operation Upda ...
- js如何获取jwt信息_学习后端鉴权系列: 基于JWT的会话管理
内容回顾 上一节讲了基于Cookie+Session的认证方案. Even:学习后端鉴权系列: 基于Cookie, Session认证zhuanlan.zhihu.com 由于基于Session方案 ...
- 使用Spring Session做分布式会话管理
在Web项目开发中,会话管理是一个很重要的部分,用于存储与用户相关的数据.通常是由符合session规范的容器来负责存储管理,也就是一旦容器关闭,重启会导致会话失效.因此打造一个高可用性的系统,必须将 ...
- java模拟浏览器不关闭会话_JSP实现浏览器关闭cookies情况下的会话管理
通常,会话管理是通过服务器将 Session ID 作为一个 cookie 存储在用户的 Web 浏览器中来唯一标识每个用户会话.如果浏览器不支持 cookies,或者将浏览器设置为不接受 cooki ...
- JWT实现token-based会话管理
上文<3种web会话管理的方式>介绍了3种会话管理的方式,其中token-based的方式有必要从实现层面了解一下.本文主要介绍这方面的内容.上文提到token-based的实现目前有一个 ...
最新文章
- 简单安装与使用composer
- SQL Server 2012 OFFSET/FETCH NEXT分页示例
- Selenium 2.0的由来及设计架构(三)
- LinkedBlockingQueue 注记
- 【机器学习】什么是机器学习?(上)
- 【深度学习】人脸识别模型的动手实践!
- javaScript第六天(1)
- hadoop家族的各个成员
- opendrive匝道
- war 发布后页面不更新_吐槽 | 都发布一万年了,这游戏还不“更新”?
- mysql查询结果输出文件_如何将MySQL查询输出保存到文件?
- matlab打乱矩阵行,matlab 中,怎么让一个矩阵按某一列排列,并且行也跟着变动?...
- 新中大如何修改服务器地址,新中大GE10.0安装配置手册
- 利用服务器在家远程登录办公室电脑
- 经此一疫,互联网公司格局发生了哪些变化?
- FineBI中tomcat服务器部署
- TXLINE 这个软件 计算 微带线的宽度
- 中国古代经典励志名言100句,百读不厌,陪孩子一起读经典!
- 对PHM铣刀磨损数据进行分析
- WinSockAPI