当前位置: 首页 > 图灵资讯 > 技术篇> 最全的spring session面试题(附答案)

最全的spring session面试题(附答案)

来源:图灵教育
时间:2023-04-02 17:46:07

说起spring,各位java程序员学习并不陌生java的人也必须专注于javaspring的上面。Spring SessionSpring家族中的一个子项目,用于管理用户的session信息,用servlet容器实现的httpsession代替springsession,专注于解决session管理问题。本文将带您一起学习spring sssion面试题的内容。

1、session的工作原理是什么?

答:session 客户端登录完成后,服务器将创建相应的工作原理 session,创建session后,session的id会发送给客户端,然后存储在浏览器中。这样,客户端每次访问服务器时都会携带服务器 sessionid,服务器拿到 sessionid后,在内存中找到相应的session,以便正常工作。

2、Cookie和Session有什么区别?

答:Cookie是web服务器发送给浏览器的信息。浏览器将在本地文件中存储每个web服务器的cookie。当浏览器将来向特定的web服务器发送请求时,它将发送所有存储在服务器中的cookie。

Session是存储在web服务器端的信息。session对象存储特定用户对话所需的属性和配置信息。当用户在应用程序的web页面之间跳转时,存储 Session对象中的变量不会丢失,而是存在于整个用户会话中。

Cookie和session的区别:(1)无论客户端做什么设置,session 能够正常工作。当客户端禁用cookie时,将无法使用cookie。;(2)存储的数据量:session可以存储任何java对象,cookie只能存储string 类型对象。

3、如果cookie在单点登录中被禁用怎么办?

答:单点登录的原理是后端生成session ID,然后设置为cookie,后面所有的请求浏览器都会带上cookie,然后服务器从cookie中获取session ID,再次查询用户信息。因此,保持登录的关键不是cookie,而是通过cookie 保存和传输session ID,其本质是获取用户信息的数据。除cookie外,HTTP请求头通常用于传输。但是这个请求头浏览器不会像cookie那样自动携带,需要手工处理。

4、简述session的生命周期?

答:(1)创建时间:Session在用户第一次访问服务器时自动创建。需要注意的是,只访问JSP、Sesssion只在Servlet和其他程序中访问HTML、IMAGE等静态资源不会创建Session。如果Sessiion尚未生成on,也可以使用requesttttts.getSession(true)强制生成Session。

2)使用过程:Session生成后,只要用户继续访问,服务器就会更新Session的最终访问时间,并维护Session。每次用户访问服务器一次,无论是否读写Session,服务器都认为用户的Session“活跃”了一次。

3)销毁时间:Session超时:超时是指服务器连续一段时间未收到Session对应客户端的请求,超过服务器设置的Session超时的最大时间;程序调用HTTPSession.invalidate();关闭或停止服务器。

5、列举几个session知道的注意事项?

答:有注意事项(1)每个用户都会有一个独立的Session。如果Session的内容过于复杂,当大量客户访问服务器时,可能会导致内存溢出。因此,Session中的信息应尽可能简化;(2)除子窗外,新开的浏览器窗口将生成新的Session。父窗的Session将在窗口共用;(3)如果客户端浏览器意外关闭,服务器保存的session数据不会立即释放,只要我们知道session_id,此session信息可以通过请求继续获取;(4)session的创建和使用都在服务端,浏览器从未获得过session对象。但是浏览器可以要求servlet(jsp也是servlet)获取session信息。客户端浏览器真正得到的是session ID,对于浏览器操作的人来说,这是看不见的。

6、session是如何实现的?

答:一般分为4步(1)Session生成服务器端 ID;(2)Sessionn存储在服务器端和客户端 ID;(3)HTTP 在Header中提取Session ID(COOOKIC值发送);(4)根据Session ID从服务器端的Hash中获取请求者身份信息。

7、什么是session? 比cookie更安全?

答:真正的cookie存在于客户端硬盘上的文本文件。如果两者相同,只要cookie,客户端就可以分担服务器的负担,对用户来说是透明的。但事实并非如此。

session的sesionID放在cookie中。如果你想打破session,分为两个步骤:第一步是获得sesionID。打破cookie后,您需要获得sesionID。sesionID需要有人登录,或者启动sesion_start。你不知道什么时候会有人登录。

第二取有效sessionID。sessionID是加密的。第二次session_start的时候,前一次sessionID没用,session过期的时候sessionID也会失效。我想在短时间内加密。 sessionID很难。session是针对某个通信的,session会在会话结束时消失。

8、有哪些方法可以使session失效?

答:关闭tomcat;重启web应用;session时间到了;无效的session。

9、什么是Session超时,如何修改缺失的时限?

答:web服务器将删除空闲时间过长的session对象,以节省服务器内存空间资源。超时限制一般为30分钟。

修改Session缺乏时间限制有两种方式:一种是修改tomcat中的tomcat conf/web.xml 文件设置;二是通过编程修改,通过调用session对象的setmaxinactiveinterval修改。

10、如何获取服务器和客户端的sessionID?sessionID在此期间是如何传输的?

答:当服务器第一次收到请求时,它打开了一块Session空间(创建Session对象)同时生成Session id,Sett通过响应头-Cookie:“JSESSIONID=XXXXXXX”命令,将要求设置cookie的响应发送给客户端; 客户端收到响应后,本机客户端设置了JSESSIONID=XXXXX的cookie信息,过期时间为浏览器会话结束;接下来,每次客户端向同一网站发送请求时,请求头都会带来cookie信息(包括session) id); 然后,服务器在请求头中读取Cookie信息,获取名称为JSESSIONID的值,并获得此请求的Session id。

当客户端第一次要求响应时,服务器只会在响应头上添加Set-Cookie:“JSESSIONID=XXXXXXX”接下来,在同一次会话的第二次和第三次响应头中,Set不会被添加- Cookie:“JSESSIONID=XXXXXXX”信息的; 客户端将JSESSIONID信息带到每个请求头的cookie中。

客户端要求服务端,服务端(Tomcat)这个请求将为Session对象开辟一个内存空间, ConcurrentHashmap的存储结构。

以上是今天整理的spring sssion面试题,共有10个问题都是互联网企业面试中出现的问题,并附有参考答案。我希望你能认真学习。

Session可以弥补HTTP没有状态特性,服务器可以在同一会话期间使用session存储客户端的一些操作记录,所以session是必须掌握的内容,平时可以学习“跨域Session共享解决方案”本课程将解决Session在集群/分布式/跨域环境中的共享问题,并将该技术解决方案应用于公司实际项目,解决项目问题,提高其技术能力和价值。