首页 > 试题

fal是什么意思

更新时间:2022-12-07 00:00:13 阅读: 评论:0

济南山大路天材教育不好-春秋三传有哪三传


2022年12月7日发(作者:电脑开机速度慢怎么办)

Session的底层实现原理

Session实现原理

客户对向服务器端发送请求后,Session创建在服务器端,返回Sessionid给客户端浏览器保存在本地,

当下次发送请求的时候,在请求头中传递ssionId获取对应的从服务器上获取对应的Sesison

Session常见问题

Session保证在那⾥?

答案:存放在服务器上

关闭浏览器Session会失效吗

答案:不会消失

我们开始分析SESSION的⼀个原理,这是要重点的去给⼤家讲的,SESSION的原理,我们在讲SESSION原理的时候要快⼀点,

localhost:8080/createSession?nameValue=zhangsan

localhost:8080/getSession

SESSION常见的问题,浏览器关闭了SESSION,SESSION会失效吗,这个是为空的,既然是为空的,在这⾥我们做⼀件事,

localhost:8080/createSession?nameValue=leon644,这个时候我们是不是可以把值存放进去了,这个时候我们再查⼀下,

localhost:8080/getSession,8080-leon644,是不是查得到,这个是属于⼀个⾮常基础的知识,浏览器关闭ssion

会失效吗,这是第⼀个问题,第⼆个问题是SESSION存放在哪⾥,有没有⼈能告诉我答案的,SESSION肯定是存放在服务器端上的,

浏览器关闭SESSION,SESSION会失效吗,肯定不会失效的,为什么呢,这是我要重点去讲的,在这个地⽅我去给⼤家画⼀个图,

画⼀个什么图呢,在这个地⽅我们写⼀下,叫做客户端,我们举⼀反三,然后把它去copy⼀遍,是不是叫做服务器端的,这个地⽅我们

叫做服务器端,你们要记住,我们发起http请求的话,客户端和服务器端要进⾏通信的时候,在这个时候⼤家⼀定要思考⼀下,

⾛的是请求,英⽂叫做request,那么举⼀反三,如果服务器端响应给客户端的时候,这个时候我们叫做respon,这个你们肯定都知道,

respon的英⽂怎么说,我们叫做响应,响应的过程我们叫做respon,那么这个地⽅你们肯定就知道了,本⾝来说⼀个HTTP通信的话,

http通讯本⾝就是基于请求和响应的过程,既然他基于请求和响应的话,这个时候客户端我们可以理解为浏览器,这个地⽅⼤家去看,

你们看代码

Cookie:JSESSIONID=66115D0AA6ACFCF82AA61999799F571A

存⼊Sessionssionid:信息66115D0AA6ACFCF82AA61999799F571A,nameValue:zhangsan,rverPort:8080

这个时候本地是会把SESSIONID保存起来,这表⽰什么意思呢,localhost:8080/createSession?nameValue=zhangsan

这是第⼀次请求,也就是什么意思,也就是客户端向服务器端发起createSession请求的时候,创建ssion,返回ssionId

打开开发者⼯具⾥⾯,当你再去查询的时候,客户端是不是会读取到本地的ssionId,存放到请求头⾥⾯去,是不是能够查到

这个值,在请求头⾥⾯是不是有ssionId,客户端它会读取到本地的ssionId,然后存放到请求头⾥⾯去,他这边是不是就查

对应的结果,你们有没有发现⼀个问题,为什么响应头⾥⾯没有显⽰全,createSession的时候响应头⾥⾯为什么没有ssionId,

但是请求头⾥⾯有ssionId,这是什么原因,你们不觉得不对劲吗,客户端发起⼀个createSession请求的时候,通过响应头

把ssionId响应给客户端,响应头⾥⾯没有返回ssionId给客户端,但是请求头⾥⾯有,这是什么原因,是因为你第⼀次

创建完了之后,

Set-Cookie:JSESSIONID=A8E197E167C7750BB9D19D1B8F420B5B;Path=/;HttpOnly

Cookie:JSESSIONID=66115D0AA6ACFCF82AA61999799F571A

读取缓存中的,在这边你们把缓存全部清掉看,因为它已经有了,清除缓存,他是不是会把本地的ssionId全部给清除掉,

这个之后,是不是返回来ssionId看到没有,

Set-Cookie:JSESSIONID=A8E197E167C7750BB9D19D1B8F420B5B;Path=/;HttpOnly

是不是就是这个ssionId,⾸先客户端向服务端发起请求的时候,它会返回⼀个ssionId给客户端,通过响应头返回给客户端的,

那么浏览器捕获到响应头,获取到对应的ssionId的时候,保存在本地的,保存在本地之后,当你在这边getSession的时候,

他是不是直接读取本地的ssionId,存放在请求头⾥⾯,是不是这样的,是不是可以查到⾥⾯的信息了,是不是这样的,

当我第⼆次重新加载的时候,他是不是没有返回ssionId,因为本地cookie已经缓存了ssionId了,我可以复⽤的,

这就是ssion的整个原理过程,⽐较简单,那么这边我要总结⼀下,你们知道ssion肯定是存在服务器端的,是存放在

客户端的,只是ssionId是存放在客户端进⾏保存的

privateStringrverPort;

@RequestMapping("/")

publicStringindex(){

returnrverPort;

}

//创建ssion会话

/**

*这段代码表⽰什么意思呢

*表⽰他会去创建⼀个SESSION

*就是通过拿到request对象

*

*⽐如现在客户端发起⼀个createSession请求

*如果他⼀旦发起createSession请求的时候

*那么这个时候你们去看⼀段代码

*看⼀段什么代码呢

*

*

*

*@paramrequest

*@paramnameValue

*@return

*/

@RequestMapping("/createSession")

publicStringcreateSession(HttpServletRequestrequest,StringnameValue){

/**

*看⼀下这段代码

*表⽰什么意思呢

*getSession()他这⾥⾯可以传true或者fal

*不知道你们有没有印象

*你们现在可能不理解true和fal什么意思

*不理解没关系

*待会讲集群的时候你们瞬间就理解了

*默认是true

*这段代码表⽰什么意思呢

*默认创建⼀个ssion

*创建⼀个SESSION的时候

*默认值是true

*⼀旦是为true的情况下的时候

*没有找到对应的SESSION的时候

*⾃动创建SESSION

*他如果去⾃动创建这样的⼀个SESSION的时候

*⼀个SESSION他和什么相似

*ssion分为ssionId和ssionValue

*这个你们知道吧

*这个我相信你们知道

*那么在这⾥我问⼤家⼀个问题

*ssion他和什么⽐较相似

*我不说map集合

*ssion和我们之前学的什么知识⽐较相似

*和TOKEN

*不是cookie

*他和token⾮常相似

*ssion本⾝来说是不是临时的

*是不是⼀个临时的

*他如果是临时的话

*不是永久有效的

*既然是临时的话

*和token是不是很相似

*因为我令牌也是做临时的

*ssionId和token令牌也是⾮常相似的

*保证临时且唯⼀

*这个你们⼀定要记住

*我在后⾯会讲到

*很多公司分布式SESSION⽤什么解决呢

*就⽤token解决

*没有⽤到Spring-Session

*客户端向服务器端肯定会发起⼀个createSession请求

*如果在发起createSession请求的时候

*注意看代码

*服务器端接收到客户端请求之后

*会创建⼀个ssion

*创建完⼀个ssion之后

*通过响应头返回⼀个ssionId

*这个是请求的过程

*这个叫做请求过程

*那么反过来再看

*叫做响应的过程

*注意看⼀下

*请求和响应过程

*第⼆次请求的时候是这样的过程

*这个时候什么意思呢

*客户端向服务器端发起请求的时候

*它会返回⼀个ssionId

*返回⼀个ssionId给客户端

*是不是浏览器

*浏览器它会怎么做呢

*浏览器获取到ssionId以后

*保存在本地

*既然他的ssionId是保存在本地的话

*那么他和什么技术⽐较相似

*想想他和什么技术⽐较相似

*是不是叫做cookie

*是不是⾮常⾮常相似

*那么浏览器这个时候要怎么做呢

*那么在这边我要讲的是什么呢

*第⼆次请求

*客户端读取到本地的ssionId

*存放在请求头中

*服务器端从请求头中获取到对应的ssionId

*使⽤ssionId在本地内存中查询

*你们现在可能还不明⽩什么意思

*在这⾥我们打开我们的开发者⼯具

*当我们发起⼀个createSession请求的时候

*看⼀下它是⼀个什么过程

*我们把⽇志打开

*⼀旦向createSession

*⾸先默认是为true的

*他如果没有ssionId的话

*创建⼀个ssion

*创建⼀个SESSION之后

*返回⼀个ssionId

*对应的是存放的值

*我故意把这个ssion打印出来了

*对应的值是存放在对应的ssionId⾥⾯的

*那你们注意看⼀个效果

*我在这个地⽅去查询的时候

*我们再次发起请求

*找到netWork

*找到响应头

*响应头是不是把ssionId返回给客户端

*也就是⼀个SESSIONID

*客户端拿到ssionId保存在本地了

*

*

*/

HttpSessionssion=sion();

n(

"存⼊Sessionssionid:信息"+()+",nameValue:"+nameValue+",rverPort:"+rverPort);

/**

*在这⾥存放⼀个nameValue这个值

*

*/

*/

ribute("name",nameValue);

return"success-"+rverPort;

}

//获取ssion会话

/**

*这⾥有⼀个获取SESSION

*

*

*@paramrequest

*@return

*/

@RequestMapping("/getSession")

publicObjectgetSession(HttpServletRequestrequest){

//设置为true情况下的时候,客户端使⽤对应的ssionid查询不到对应的sison会直接创建⼀个新的ssion

//设置为fal情况下的时候,客户端使⽤对应的ssionid查询不到对应的sison不会直接创建⼀个新的ssion

/**

*这⾥表⽰获取SESSION

*

*

*/

HttpSessionssion=sion(fal);

if(ssion==null){

returnrverPort+"该服务器上没有存放对应的ssion值";

}

n("获取Sessionssionid:信息"+()+"rverPort:"+rverPort);

/**

*这⾥直接获取getName

*

*

*/

Objectvalue=ribute("name");

returnrverPort+"-"+value;

}

}

;

Application;

BootApplication;

/**

*

*@

*

*/

@SpringBootApplication

publicclassAppSession{

publicstaticvoidmain(String[]args){

/**

*我们直接启动这个项⽬

*

*/

(,args);

}

}

本文发布于:2022-12-07 00:00:13,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/56067.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:牛有几个胃
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图