首页 > 其他分享 > 肖sir___第二个月Cookie&Session__07

肖sir___第二个月Cookie&Session__07

时间:2022-10-01 15:56:57浏览次数:51  
标签:__ sir getSession 浏览器 07 session Session Cookie 服务器

1.1 web应用会话技术 什么叫会话技术? 简而言之,保存在一次网络交互过程中临时产生的数据 为什么要诞生会话技术? 因为Web应用程序是使用HTTP协议传输数据的,而HTTP协议是一个无状态协议。 什么叫无状态协议? 就是一次web请求数据交换完毕,客户端与服务器端的连接就会关闭,再次请求需要建立新的连接。这就意味着服务器无法知道本次连接和上一次连接是否为同一用户会话技术之会话跟踪 会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份   2.1 Cookie机制 什么是Cookie Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。 目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等 都支持Cookie。 cookies是在浏览器访问web服务器的某个资源时, 由web服务器在HTTP响应消息头中附带传给浏览器的一些数据。其具体过程图:

 

 

2.2 Cookie机制 Cookie的工作原理 给客户端颁发一个通行证,每次访问,无论谁都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。 Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录状态, 就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起 来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。 服务器检查该Cookie,以此来辨认状态。服务器还可以根据需要修改Cookie的内容 一个cookies只能标识一种信息,它至少含有一个标识该信息的名称name和值value, 一个web站点可以给一个web浏览器发送多个cookies,这样就能在web浏览器和服务器之间使用多个cookies来传递信息。   2.3 Cookie机制 Cookie具有不可跨域名性 根据Cookie规范,浏览器访问某个域名只会携带该域名的Cookie,而不会携带其他域名的Cookie。从而保证用户的隐私安全。浏览器判断一个网站是否能操作另一个网站Cookie的依据是域名。 浏览器对Cookie功能的支持 如果浏览器不支持Cookie或者把Cookie禁用了,Cookie功能就会失效。而且不同浏览器有不同保存cookies的方式   Java中的Cookie Java中把Cookie封装成了javax.servlet.http.Cookie类。每个Cookie都是该Cookie类的对象。服务器通过操作Cookie类对象对客户端Cookie进行操作。 通过request.getCookie()获取客户端提交的所有Cookie(以Cookie[]数组形式返回),通过response.addCookie(Cookie cookie)向客户端设置Cookie。 Cookie对象使用key-value属性对的形式保存用户状态,一个Cookie对象保存一个属性对,一个request或者response同时使用多个Cookie。 Cookie中使用Unicode字符时需要对Unicode字符进行编码,否则会乱码 提示:Cookie中保存中文只能编码。一般使用UTF-8编码即可。不推荐使用GBK等中 文编码,因为浏览器不一定支持,而且JavaScript也不支持GBK编码     3.2 Cookie创建&使用 Cookie的所有属性 String name 该Cookie的名称。Cookie一旦创建,名称便不可更改 Object value 该Cookie的值。如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用 BASE64编码。 int maxAge 该Cookie失效的时间,单位秒。如果为正数,则该Cookie在maxAge秒之后失效。如果为负数, 该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为–1 boolean secure 该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false String path 该Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/” String domain 可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.” String comment 该Cookie的用处说明。浏览器显示Cookie信息的时候显示该说明 int version 该Cookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范   3.3 Cookie创建&使用 cookie的API 创建Cookie对象的方法 Cookie cookie = new Cookie(“名字”,“值”); 将cookie添加到响应头中 response.addCookie(cookie); 服务器 可以解析cookie. Cookie[] cookies = request.getCookies(); 遍历得到每个Cookie. 看名字 cookie.getName() 看值 cookie.getValue()     4.1 Session机制 什么是session Session是一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上(内存或硬盘)。一般Session存储在服务器的内存中 session机制 web应用中,通常使用服务端session来管理用户的会话 服务端session是用户访问web应用时,由服务器端手动创建的,可以用来存放数据。 服务器为每一个session都分配一个唯一的sessionid,以保证每个用户都有一个不同session对象。 服务器在创建完session后,会把sessionid通过cookie返回给浏览器,这样当第二次及以后向服务器发送请求的时候,就会通过cookie把sessionid传回给服务器,以便服务器能够根据sessionid找到与该请求对应的session对象   4.2 Session机制 session的两种实现方式: 第一种通过cookies实现。 第二种通过URL重写来实现 session的超时机制 session通常有失效时间的设定。当失效时间到,服务器会销毁session。但是只要用户在失效时间内,有发送新的请求给服务器,通常服务器都会把他对应的session的失 效时间根据当前的请求时间再延长。 Session的超时时间为maxInactiveInterval属性,可以通过对应的 getMaxInactiveInterval()获取,通过setMaxInactiveInterval(longinterval)修改。 Session的超时时间也可以在web.xml中通过session-config 来设置超时时间(分钟)。 另外,通过调用Session的invalidate()方法可以使Session失效。   5.1 Session创建&使用 获取Session对象 Session对应的类为javax.servlet.http.HttpSession类 Session也是一种key-value的属性对,通过getAttribute(String key)和 setAttribute(String key,Object value)方法读写客户状态信息。 Servlet里通过request.getSession()方法获取该客户的Session 创建session: HttpSession session = ServletActionContext.getRequest().getSession() 获取session: HttpSession session = request.getSession(); request还可以使用getSession(boolean create)来获取Session。 区别是如果该客户的Session不存在,request.getSession()方法会返回null, 而getSession(true)会先创建Session再将Session返回     5.1 Session创建&使用 获取Session对象 Session对应的类为javax.servlet.http.HttpSession类 Session也是一种key-value的属性对,通过getAttribute(String key)和 setAttribute(String key,Object value)方法读写客户状态信息。 Servlet里通过request.getSession()方法获取该客户的Session 创建session: HttpSession session = ServletActionContext.getRequest().getSession() 获取session: HttpSession session = request.getSession(); request还可以使用getSession(boolean create)来获取Session。 区别是如果该客户的Session不存在,request.getSession()方法会返回null, 而getSession(true)会先创建Session再将Session返回      

 

标签:__,sir,getSession,浏览器,07,session,Session,Cookie,服务器
From: https://www.cnblogs.com/xiaolehong/p/16747292.html

相关文章

  • python框架中自定义封装logging,一文解决
     为什么需要Logger刚开始写代码可能使用print打印输出就够用了,但是print重定向输出内容非常麻烦,而且无法区分打印日志等级。而logging可以设置打印等级,也可以重定向输......
  • 灰度发布概念了解
    转自:https://zhuanlan.zhihu.com/p/1249121641.灰度测试灰度测试,就是在某项产品或应用正式发布前,选择特定人群试用,逐步扩大其试用者数量,以便及时发现和纠正其中的问题。......
  • 【python】Error:'int' object is not callable
    1、问题rpc接口在调用的时候报错   2、原因这个报错的意思就是int转换时,转换的对象不能调用本次错误,主要是因为int(obj.a)写成了int(obj.a()),导致属性获取失败......
  • 带你领略下iOS中OC的“alloc”源代码,让你在工作中不在迷惑
    前言前面我们使用官方开源的objc源码进行了编译调试objc4-818.2源码编译调试笔记前言为什么会想要调试源码?苹果开源了部分源码,但相似内容太多,基本找不到代码见的......
  • Java 集合框架之Collection,一文解决
     JDK提供了一些特殊的类,这些类可以存储任意类型的对象,并且长度可变,在Java中这些被称为集合。按照存储结构可以分为两大类,单列集合Collection和双列集合常用集合类如下......
  • “以独占方式锁定此配置文件失败”解决方法
    1、按键盘【win】+【r】,输入msconfig2、点击服务,再点击界面左下角的隐藏所有windows服务,点击全部禁用,再点击应用,确定重启(重启的前提是任务管理器没有运行VMware的进程,如......
  • 如何查看家客的恶意软件 Lab1-2 恶意代码分析
    Lab1-2分析Lab1.2.exe文件目录Lab1-22.是否有这个文件被加壳或混淆的任何迹象?3.有没有任何导入函数能够暗示出这个程序的功能?4.哪些基于主机或基于网络的迹象可以......
  • 动手动脑课后实验2
    一般初始化:1.没有继承静态变量、静态初始化块-->变量、变量初始化块–>构造方法2.有继承的情况父类静态变量、父类静态初始化块–>子类静态变量、子类静态初始化块–>......
  • Git的使用
    GIT配置git--version查看git版本配置提交人姓名:gitconfig--globaluser.name提交人姓名配置提交人姓名:gitconfig--globaluser.email提交人邮箱查看gi......
  • Locally Managed Tablespaces本地管理的表空间
    本地管理的表空间使用位图跟踪表空间本身中的所有扩展信息。本地管理的表空间提供以下好处:快速、并发的空间操作。空间分配和释放修改本地管理的资源(存储在头文件中的......