Session与ServletContext有什么关系?

Conqueror_lee 2008-03-31 07:09:28
ServletContext是一个Web应用对象,也是一个Servlet容器,一个Web应用里的所有Servlet都共享其资源或数据.

那请问Session跟它有什么联系?

Session应该也是容器吧,我查了查JEE的API文档,里面的HttpSession里面也能得到ServletContext对象,这说明什么?Session跟一个Web应用有什么关系或联系呢?

感谢大家肯帮助我,谢谢你们了!!!!
...全文
1040 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangdongqiang8 2011-05-23
  • 打赏
  • 举报
回复
你可以把session当做看电影的门票,当你在电影院门口买票(浏览器请求)是电影院会给你一张票,但是吧其实这里给你的只是一张电影票的编号(sessionID),当你进入影院看电影时,影院可能会中途查票(服务器却是对每次请求都对sessionId进行验证),而这张电影票除了可以让你看电影外,还可以记录你在电影院里的消费情况(有点儿像会员卡了),但是当你离开电影院之后,电影院就会销毁这场电影关于你的票据记录(当然正常情况下是不会的,也就是session失效,就像是电话线断了,但是因为是无状态协议,也就说不是想电话那样一直通话,而是需要的时候,比如发送请求的时候,才会根据sessionid来进行验证,就像账号密码似地,然后服务器可以吧你的一些操作或者权利权限放在session中,以保证你下一次请求的时候,服务器能够认出是你)
说的有点儿乱了
IceJelly 2011-05-23
  • 打赏
  • 举报
回复
结帖率亮了
haitao_zhang 2011-05-23
  • 打赏
  • 举报
回复
你把session 当成 身份证
你把application 当成 派出所
就可以理解了。
小二郎 2011-05-23
  • 打赏
  • 举报
回复
学习。。。。。
facc 2011-05-23
  • 打赏
  • 举报
回复
区别在于session是局部的,servletContext是共享的.
当换了另一个窗口开始访问又从0开始计数,而servletContext则是接下去计数.
facc 2011-05-23
  • 打赏
  • 举报
回复
还是不懂
duancj_1982 2008-06-12
  • 打赏
  • 举报
回复
我觉得session是由servletContext维护的一个线程变量
songfuqiang 2008-04-03
  • 打赏
  • 举报
回复
学习..
临远 2008-03-31
  • 打赏
  • 举报
回复
会话都在服务器啊。

每个用户打开浏览器就服务器就会给它生成一个sessionId,浏览器或者把这个sessionId放到cookie里,或者每次请求都带在url后边(自动的),然后服务器就拿到这个sessionid,在内存里翻啊翻啊,翻出对应的session来,就这么对应上的。

无聊吧。
薛定谔之死猫 2008-03-31
  • 打赏
  • 举报
回复
Session代表浏览器和WEB服务器的会话状态,由于HTTP是无状态的,当浏览器向WEB服务器发送请求,WEB服务器在处理请求并将处理结果返回浏览器后,就会主动断开连接(当然这个在HTTP1.0和HTTP1.1协议之间稍有不同),这样如果你的浏览器再次发送请求时,WEB服务器不知道你之前干过什么,这样对于一些有事务性的业务就没办法满足了,因此Servlet容器就在后台保存一个Session对象,用于记录这些信息,如果你不使用浏览器的Cookie或在服务器端使用URL重定向的话,过缺省的一段时间后,Servlet容器就会销毁这个Session对象,后继的请求就会创建的新的Session来记录相关信息。
ServletContext是针对WEB应用程序来说的,是WEB应用程序运行在它描述的上下文之下,和Session一样,你可以手动在上面放置一些信息,以便后继的操作中提取

你说的内存空间问题其实你不用去关心的,这是JVM解决的问题,并且Java在这一块几乎就是透明,你只要创建,满足条件的时候垃圾回收机制会进行内存的回收

说的粗糙了点,不知道你明白没有
jinweifu 2008-03-31
  • 打赏
  • 举报
回复
会话(从打电话来理解)是维护一系列对话的工具,一个会话由多个对话组成,由于HTTP WEB是无状态的,就是一次对话,下一次可能就不知道以前进行到什么程度了,所以在服务器端维护一个Session对象,每一个客户端都对应有自己跟服务器对话的状态信息集合,那个集合就是SESSION(会话),最好去看看网络通信,这样就能明白会话有多重要
同理,由于Servlet容器也是一个共享的资源,很多servlet需要得到与自己本身相关的信息,包括自己所处的环境(环境是什么呢:就是所有与自己有联系的资源的集合,这个就得根据抽象程度了)
上下文(Context)是维护某个资源状态的东西,根据当前所在的层次对不同CONTEXT访问以取得关心的信息

以上都是本人自己的理解,不知道更正确的理解是怎样的?
jinweifu 2008-03-31
  • 打赏
  • 举报
回复
你如果是美女的话打个电话我告诉你
Conqueror_lee 2008-03-31
  • 打赏
  • 举报
回复
快沉了啊!!!
Conqueror_lee 2008-03-31
  • 打赏
  • 举报
回复
LS,,是在不同的内存空间上吗??

还是这100个都在WEB应用容器里??
benro 2008-03-31
  • 打赏
  • 举报
回复
session是web服务器对每一个客户端产生的,如果有100个客户端同时访问web服务,那么在服务器的内存中就会有100个不同的session。
Conqueror_lee 2008-03-31
  • 打赏
  • 举报
回复
我的意思是,我不知道该怎么去理解Session,太抽象了,而且这个Session对象在服务器里是一个独有的内存空间还是放在Web应用容器中的???

比如说,Web应用容器相当于一个大盒子,是不是这个Session对象的空间也放在这个盒子里的,还是Session对象是放在另一个地方的?

我的理解就是Web应用容器是一个盒子,里面放了Servlet对象和Session对象,但这样觉得理解起来挺困难的,所以才出来问问,怕走如歧途!!!!
Conqueror_lee 2008-03-31
  • 打赏
  • 举报
回复
没看懂!!5555555555555
临远 2008-03-31
  • 打赏
  • 举报
回复
请参考我们教程中对session的介绍:

http://www.family168.com/tutorial/jsp/html/jsp-ch-04.html
pyantking 2008-03-31
  • 打赏
  • 举报
回复
谈谈自己的看法:
HttpSession相当于JSP中的session
ServletContext相当于JSP中的application。
两者的作用域,范围不一样

ServletContext是servlet中定义的接口,当然HttpSession可以调用到ServletContext对象

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧