A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【001】什么是Session?
答:
Session来自javax.servlet.http.HttpSession类,其中HttpSession技术依靠Cookie技术
Session是服务端技术,服务器在运行时可以为每一个用户浏览器创建一个独享的HttpSession对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务

【002】Session的运行原理?
答:
HttpSession是一个域对象,其实际上是使用了Cookie技术,由服务器向客户端写了一个特殊的Cookie,名字为“JSESSIONID”,值为session对象的id(唯一),path是当前应用

【003】如何获取session对象?
答:
调用request.getSession()方法可以获取一个session对象。
调用时如果携带含有JSESSIONID的Cookie,则按照id到服务器内存中找对应的HttpSession,
若没找到或浏览器没有携带该Cookie,则创建一个新的HttpSession对象,同时赋予新的JSESSIONID,写给客户端
若找到含有该ID的session,则返回该HttpSession对象,继续为用户服务

【004】Session的常用API有哪些?
答:
void setAttribute(String name, Object obj)        :设置属性
void removeAttribute(String name)                        :移除属性
Object getAttribute(String name)                        :获取属性
void setMaxInactiveInterval(int interval)                :设置最大非活动时间间隔(负值表永久)[秒]
invalidate()                                                        :手动销毁session
isNew()                                                                :判断session是否创建
getId()                                                                :获取session的id

【005】Session在什么情况下会被删除?
答:
①  程序调用HttpSession.invalidate()
②  距离上次收到客户端发送的sessionid时间间隔超过了session的最大有效时间
③  服务器进程被停止
注意:
关闭浏览器只会使存储在客户端浏览器内存中sessionid的cookie失效,并不会使服务器端的session对象消失

【006】Session是否在访问客户端时创建?
答:
不是,是在程序调用HttpServletRequest.getSession()这样的语句时才会被创建

【007】getSession() / getSession(true)、getSession(false)的区别?
答:
getSession() / getSession(true)        :当session存在时返回,否则新建一个session并返回
getSession(false)                                :当session存在时返回,否则返回null、不会创建session

【008】Session的生命周期?
答:
①  客户端向服务器第一次发送请求的时候,request中并无sessionid
②  服务端会创建一个session对象,并分配一个sessionid,session对象保存在服务端
③  当服务端程序处理完毕后,将sessionid以Cookie的形式传到客户端保存
④  客户端再次发送请求,将sessionid同request参数一起发送,传递给服务端
⑤  服务端根据传递过来的sessionid将这次请求(request)与保存在服务端的session对象联系
⑥  循环 ③ ~ ⑤,直到session对象超时或被销毁

1 个回复

倒序浏览
顶我大黑马!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马