一、会话管理

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)相关推荐

  1. SSH远程会话管理工具 - screen使用教程

    刚接触Linux时最怕的就是SSH远程登录Linux VPS编译安装程序时(比如安装lnmp)网络突然断开,或者其他情况导致不得不与远程SSH服务器链接断开,远程执行的命令也被迫停止,只能重新连接,重 ...

  2. linux会话管理,Linux 安装 screen 远程会话管理工具

    在使用景文互联的Linux 云服务器产品编译一些环境时,您可能需要花费不少的时间,如果编译时间过长,可能导致当前SSH会话超时,从而断开了SSH,也终止了环境编译的进程,这对用户使用体验非常不利,所以 ...

  3. 会话管理隐患与防御 总结

    什么是会话控制 SESSION COOKIE 服务器记录用户凭证的一个变量.是一个时域(从用户登录到注销的时间域) 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常 ...

  4. 5G NGC — 会话管理模型 — PDU Session

    目录 文章目录 目录 5G 的会话管理模型 PDU Session PDU Session 的类型 Ethernet Type Unstructured Type DNN 的作用 UE IP 地址的分 ...

  5. 5G NGC — SMF 会话管理功能

    目录 文章目录 目录 SMF SMF 过载控制 NF Services Nsmf_PDUSession Service Create SM Context service operation Upda ...

  6. js如何获取jwt信息_学习后端鉴权系列: 基于JWT的会话管理

    内容回顾 上一节讲了基于Cookie+Session的认证方案. Even:学习后端鉴权系列: 基于Cookie, Session认证​zhuanlan.zhihu.com 由于基于Session方案 ...

  7. 使用Spring Session做分布式会话管理

    在Web项目开发中,会话管理是一个很重要的部分,用于存储与用户相关的数据.通常是由符合session规范的容器来负责存储管理,也就是一旦容器关闭,重启会导致会话失效.因此打造一个高可用性的系统,必须将 ...

  8. java模拟浏览器不关闭会话_JSP实现浏览器关闭cookies情况下的会话管理

    通常,会话管理是通过服务器将 Session ID 作为一个 cookie 存储在用户的 Web 浏览器中来唯一标识每个用户会话.如果浏览器不支持 cookies,或者将浏览器设置为不接受 cooki ...

  9. JWT实现token-based会话管理

    上文<3种web会话管理的方式>介绍了3种会话管理的方式,其中token-based的方式有必要从实现层面了解一下.本文主要介绍这方面的内容.上文提到token-based的实现目前有一个 ...

最新文章

  1. 简单安装与使用composer
  2. SQL Server 2012 OFFSET/FETCH NEXT分页示例
  3. Selenium 2.0的由来及设计架构(三)
  4. LinkedBlockingQueue 注记
  5. 【机器学习】什么是机器学习?(上)
  6. 【深度学习】人脸识别模型的动手实践!
  7. javaScript第六天(1)
  8. hadoop家族的各个成员
  9. opendrive匝道
  10. war 发布后页面不更新_吐槽 | 都发布一万年了,这游戏还不“更新”?
  11. mysql查询结果输出文件_如何将MySQL查询输出保存到文件?
  12. matlab打乱矩阵行,matlab 中,怎么让一个矩阵按某一列排列,并且行也跟着变动?...
  13. 新中大如何修改服务器地址,新中大GE10.0安装配置手册
  14. 利用服务器在家远程登录办公室电脑
  15. 经此一疫,互联网公司格局发生了哪些变化?
  16. FineBI中tomcat服务器部署
  17. TXLINE 这个软件 计算 微带线的宽度
  18. 中国古代经典励志名言100句,百读不厌,陪孩子一起读经典!
  19. 对PHM铣刀磨损数据进行分析
  20. WinSockAPI

热门文章

  1. 怎么在oracle里执行sql语句,在Oracle中执行动态SQL的几种方法
  2. 【转】程序员10大境界【走在路上,潜心修行】
  3. 无尽长廊(Gallery)
  4. 利用朴素贝叶斯分类算法对搜狐新闻进行分类(python)
  5. 恒太照明在北交所上市:募资规模缩水三成,第三季度收入下滑
  6. [经验共享] 影像下载篇——在NASA上下载MODIS免费卫星影像的方法
  7. java 获取上市公司基本信息 代码测试
  8. 适合大学生浏览的网站
  9. R语言绘制QQ图实战(qqplot函数、qqnorm函数、qqline函数)
  10. 聚划算导航栏的反弹效果代码 纯原生js实现