session对象是由服务器自动创建与用户请求相关的对象。服务器会为每一个用户创建一个session对象用来保存用户信息,跟踪用户操作。jsp -该对象内部使用Map类来保存数据,因此它的数据类型是key-value形式。jsp -对应javax.servlet.http.HttpSession.class对象。
服务器为不同的浏览器在内存中创建用于保存数据的对象叫seesion。并将这个对象的唯一身份认证SessionId(存放在cookie中)返回给浏览器,浏览器将这个SessionId保存,当浏览器向服务器再次发送请求的时候,连同这个cookie一起发送过去,由此找到对应的session。
通过request对象可以获得:
HttpSession s = request.getSession(boolean flag);
HttpSession s = request.getSession( );
当flag为true时,会在在浏览器发送过来的请求中查看是否有SID,有,则返回与SID对应的session对象,没有,创建一个新的。当flag为false,没有就返回null。第二种方法相当于true。
Session作为服务器端为各客户端保存交互数据的一种方式,采用key-value对的形式来区分每一组数据。
向session添加数据
void session.setAttribute(String name,Object obj);
获取绑定数据
void session.getAttribute(String name);
移除绑定数据
void session.removeAttribute(String name);
删除session对象
void invalidate()
Session对象可以保存更复杂的对象类型数据了,不像Cookie只能保存字符串。
Session会以对象的形式占用服务器端的内存,过多的以及长期的消耗内存会降低服务器端的运行效率,所以Session对象存在于内存中时会有默认的时间限制,一旦Session对象存在的时间超过了这个缺省的时间限制则认为是Session超时,Session会失效,不能再继续访问。(默认30min)
//返回客户端最后一次与会话有关的请求时间
public abstract long getLastAccessedTime();
//以秒为单位返回一个会话内两个请求时间间隔
public abstract int getMaxInactiveInterval();
//以秒为单位设置session有效时间
public abstract void setMaxInactiveInterval(int i);
Session对象的查找依赖SID,当cookie禁用的时候,为了使session仍然可用,就要使用URL重写。
URL重写:浏览器在访问服务器的某个地址时,会使用一个改写过的地址,即在原有地址后追加SessionID,这种重新定义URL内容的方式叫做URL重写。如:原有地址的写法为:
:8080/test/some
重写后的地址写法为:
:8080/test/some;jsessionid=4E113CB3
session保存在服务器,由浏览器发送一个sessionID(保存在cookie中,cookie封装在request对象中)来获得这个session对象,当cookie禁用,我们得不到这个sessionID,所以需要通过URL传参的方式来传递这个ID。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-60817-1.html
MV拍得很美~歌好听~
甚至一天半的
派几十艘渔船跟着漫天撒网搞死他
过的别太仔细了