jsp -1、session对象概述

电脑杂谈  发布时间:2018-01-17 17:08:33  来源:网络整理

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

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...