我对session还是不太理解!假设执行了一个1.jsp,系统会生成一个session,那么再执行同一个目录下的2.jsp,还会再生成一个吗 如果不再生成一个session,那么Tomcat到底是怎么判断该不该生成一个新的session的?是根据IP还是路径? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 session是指客户端和服务器的一次会话,一般情况下都是在浏览器关闭的时候作为一次会话的结束,这个时候为这个用户创建的session会销毁,而不是像你说的访问一个文件就生成一个session。关于session你可以在csdn的文档查一下,有几篇说的还是比较详细的。 imA(阿梁) ( ) 信誉:5 2006-03-23 09:26:00 得分: 0 session是指客户端和服务器的一次会话,一般情况下都是在浏览器关闭的时候作为一次会话的结束,这个时候为这个用户创建的session会销毁,而不是像你说的访问一个文件就生成一个session。关于session你可以在csdn的文档查一下,有几篇说的还是比较详细的。=====================================================================1、我关闭浏览器,服务器那边能知道吗?2、回答我的问题: 我在客户端访问2.jsp,系统会不会生成一个新的session? 1、我关闭浏览器,服务器那边能知道吗? 知道2、回答我的问题: 我在客户端访问2.jsp,系统会不会生成一个新的session? 不会 session是指客户端和服务器的一次会话,但并不表示浏览器关闭session就会失效。通常session都有一个有效时间,比如你说的例子,访问1.jsp时生成的session,如果在访问2.jsp时没有失效,则系统不新生成session;反之,则生成新的session.WEB服务器会在新生成session时,用一个sessionID来表示该session。通过cookie或者url重写等方式在客户端和服务器间传递该sessionID,据此来判断是不是该生成新的session 希望楼上的不要误导LZ!关闭浏览器,服务器是不可能知道的。因为本来HTTP就是无状态的!“一般情况下都是在浏览器关闭的时候作为一次会话的结束”也不无道理,因为保存sessionID的cookie的生命周期在浏览器内,浏览器关闭时改cookie也就消失了。但是服务器端的session依然会存在一段时间,直到其失效! 既然打开2.jsp不会再生成一个新的session,那么tomcat是如何做到的呢?他总得根据点什么来决定,不再生成一个新的session吧?就是这一点,我始终不明白! ........无言了,LZ可知道cookie是什么东西?再不明白我也解释不了了,自己去找篇session的文章看看吧! minisun2000(红色枫叶) ( ) 信誉:100 2006-03-23 10:08:00 得分: 0 ........无言了,LZ可知道cookie是什么东西?再不明白我也解释不了了,自己去找篇session的文章看看吧!=============================================================== 我认为cookie和session是两码事,因为有的客户端是拒绝cookie的。 谁来告诉我,tomcat是根据什么来决定,不再生成一个新的session的?特别是在客户端拒绝cookie的情况下。具体的步骤是什么? http://community.csdn.net/Expert/topic/4633/4633580.xml?temp=.3762018看看这片文章了,太多了,不想打了... minisun2000(红色枫叶) ( ) 信誉:100 2006-03-23 10:23:00 得分: 0 url重写===========================================================谁能说说url重写是怎么回事吗?具体的过程是什么? url重写就是将session附加到url中。还有客户端是拒绝cookie并不等于没有cookie。应该拒绝的只是存储在硬盘上的cookie(个人观点) minisun2000(红色枫叶) ( ) 信誉:100 2006-03-23 11:42:00 得分: 0 url重写就是将session附加到url中。还有客户端是拒绝cookie并不等于没有cookie。应该拒绝的只是存储在硬盘上的cookie(个人观点)------------------------------------------------------------1、将session附加到url中,只有在服务器返回的时候才可以这么做。但是我新打开一个2.jsp,他又怎么能做到呢。2、既然cookie不可以存储在硬盘上,那么当我关掉ie的时候,它就不存在了。那么我再打开2.jsp的时候,他怎么可能还存在? 可能我理解的有问题如果你说的先访问1.jsp再访问2.jsp是打开两个IE的话,那肯定是2个session!即使你访问相同的页面,打开两个IE也是2个不同的session! minisun2000(红色枫叶) ( ) 信誉:100 2006-03-23 12:28:00 得分: 0 可能我理解的有问题如果你说的先访问1.jsp再访问2.jsp是打开两个IE的话,那肯定是2个session!即使你访问相同的页面,打开两个IE也是2个不同的session!================================================================不是吧? minisun2000(红色枫叶) ( ) 信誉:100 2006-03-23 13:12:00 得分: 0 你认为不是就不是吧=================================================这个问题要弄明白!谁来再说说? minisun2000(红色枫叶):我试验过了,果然如你所说。但是这样的话,session就没有什么用处了啊,在一个web应用中不能用它啊!因为用户可能又从新的ie来打开程序呢,你们怎么用session啊 minisun2000(红色枫叶) ( ) 信誉:100 2006-03-23 13:53:00 得分: 0 不知道你用session来干什么?=================================================================我以前是想,用这个session来存储一个web应用的全局变量呢! 比如说,用户登陆了,就给他一个session.setAttribute('username','用户名'),我以为这下就可以到处用了。现在看来这是不行的啊!你们怎么用呢? 你的想法完全可以啊但是你要判断session里是不是有username这个对象,如果没用说明用户没用登录。有的话就可以进行以后的操作了!同样,打开2个IE就要登录2次,这也符合逻辑。难道用户不可以用不同的用户名登录吗? minisun2000(红色枫叶) ( ) 信誉:100 2006-03-23 14:34:00 得分: 0 你的想法完全可以啊但是你要判断session里是不是有username这个对象,如果没用说明用户没用登录。有的话就可以进行以后的操作了!同样,打开2个IE就要登录2次,这也符合逻辑。难道用户不可以用不同的用户名登录吗?-------------------------------------------------------------------------不对啊,如果我登陆了,这个username一定有内容了。但是如果那个用户新打开了一个IE,并且访问了一个jsp(不是登陆用的),那么这个session不就没有了吗?如果想避免这种情况,除非用户只能见到一个JSP,就是login.jsp,也就是说,程序只能有一个唯一的入口。 楼主,如果还有什么疑问,可以看看下面的文章。相信能让你明白一些东西。http://dev.csdn.net/article/82/82815.shtm session有两种方式cookie和url重写不过不管怎么样客户端传给服务器的都是session的ID号通过session的ID号码服务器在服务端找对应的session如果找到就不会重新创建否则就会创建一个新的sessionHttpSession session = request.getSession(true);一定要是这么一句哦,否则会出问题的.............. <font color=red>session有两种方式cookie和url重写不过不管怎么样客户端传给服务器的都是session的ID号通过session的ID号码服务器在服务端找对应的session如果找到就不会重新创建否则就会创建一个新的sessionHttpSession session = request.getSession(true);一定要是这么一句哦,否则会出问题的..............</font> 不对啊,如果我登陆了,这个username一定有内容了。但是如果那个用户新打开了一个IE,并且访问了一个jsp(不是登陆用的),那么这个session不就没有了吗?如果想避免这种情况,除非用户只能见到一个JSP,就是login.jsp,也就是说,程序只能有一个唯一的入口。===================================================================================还是没理解~~你登录时,你的session里有了username。如果另一个用户新打开了一个IE,并且访问了一个jsp(不是登陆用的),但是他的session里没有username!还有,服务器维护的不是一个session,而是一些session的mapping。 minisun2000(红色枫叶) ( ) 信誉:100 2006-03-23 16:31:00 得分: 0 还是没理解~~你登录时,你的session里有了username。如果另一个用户新打开了一个IE,并且访问了一个jsp(不是登陆用的),但是他的session里没有username!还有,服务器维护的不是一个session,而是一些session的mapping。==================================================================我说的不是另一个新用户,而是就是本用户。 如果本用户用新IE打开一个不是登陆的JSP,就会把原来那个session 干掉,是不是呢。那么只有不让用户直接打开别的JSP了? 如果本用户用新IE打开一个不是登陆的JSP,服务器会为该次会话创建新的sessin,和上一次的没关系!!!!!!!服务器根本不知道是那个用户,只知道是哪个session!你问了这么多问题,其实连session是什么都不知道,最好找找其他的东西看看! 1、我关闭浏览器,服务器那边能知道吗? 知道2、回答我的问题: 我在客户端访问2.jsp,系统会不会生成一个新的session? 不会这个……也太误导人了吧建议楼主先看看Cookie 和Session 的机制 个人观点:服务端是靠sessionid 来判断是哪个session 所谓 的cookie和url重写都是要在浏览器第二次发送请求是把sessionid 带上。如果打开一个新的窗口要分两种情况:1.两个ie是不同进程:这时新ie并没有已打开窗口的资源(也就是sessionid)当然是不同的session2.新开窗口与上个窗口是同一个进程,即不同线程(在ie上“文件”下新建窗口就是这种情况)这样新窗口可以共享已有资源(sessionid)这样的两个窗口是同一个session minisun2000(红色枫叶) ( ) 信誉:100 2006-03-23 17:23:00 得分: 0 如果本用户用新IE打开一个不是登陆的JSP,服务器会为该次会话创建新的sessin,和上一次的没关系!!!!!!!服务器根本不知道是那个用户,只知道是哪个session!你问了这么多问题,其实连session是什么都不知道,最好找找其他的东西看看!==================================================================== 谢谢你这样耐心的教导,现在我明白了。但是,我说的问题依然存在:打开一个新的jsp,确实服务器会为该次会话创建新的session,而没有破坏原来的session。但是你要知道,在这个新JSP中也要访问session,他还会按照原来的session去取“username”,但是由于是新的,这里是没有username的,这样就会造成错误。所以,一个应用程序,要么只能有一个入口,要么就不能用session,我说的对吗? session是会话的意思,是以IE的实例化单位为单位的也就是你没有关闭这个IE那么这个IE相关的页面里的session是一致的。如果你重新打开一个新的IE(不是CTRL+N打开),那么这就是一个新的session了。为什么服务器端会知道在什么情况下是新的session,因为session是会话,如果这个request是新的,那么当然会知道。你就这样理解吧,request.getsessions().get... 如果已经有了,那么在会话过程中是会保存的,否则反之。 minisun2000(红色枫叶) ( ) 信誉:100 2006-03-23 17:23:00 得分: 0 如果本用户用新IE打开一个不是登陆的JSP,服务器会为该次会话创建新的sessin,和上一次的没关系!!!!!!!服务器根本不知道是那个用户,只知道是哪个session!你问了这么多问题,其实连session是什么都不知道,最好找找其他的东西看看!==================================================================== 谢谢你这样耐心的教导,现在我明白了。但是,我说的问题依然存在:打开一个新的jsp,确实服务器会为该次会话创建新的session,而没有破坏原来的session。但是你要知道,在这个新JSP中也要访问session,他还会按照原来的session去取“username”,但是由于是新的,这里是没有username的,这样就会造成错误。所以,一个应用程序,要么只能有一个入口,要么就不能用session,我说的对吗?====================================================================================升级成5个三角了,高兴,再来回答你!你前面说的没错,重新打开一个IE,访问新的JSP时,由于该次session和上次的不同,因此会像你说的一样,造成错误,这是正常的!因为你新打开的IE没有进行用户登录!通常这种情况都会转向错误页面,通知用户登录!至于你后面说的,“一个应用程序,要么只能有一个入口,要么就不能用session”,我就不太明白了?一般来说一个应用都是只有一个入口的(当然也有特殊的),不过这和用不用session有什么关系?还有,你是不是想叫用户登录一次以后访问其他的JSP时就不用再登录了?那样的话你只能用cookie,其他的方法我就不知道了,看楼下的吧^_^ session变量通常保存在服务器端这是和COOKIE变量的不同这处但是:WEB程序是无状态的所以要识别不同的SESSIONID这个实现方法有三种:1、COOKIE保存ID2、URL保存ID3、隐藏域保存ID再通过ID来查询在服务器端保存的变量以上是学习PHP时的认识,供参考 一、服务端是靠sessionid 来判断是哪个session 所谓 的cookie和url重写都是要在浏览器第二次发送请求是把sessionid 带上。如果打开一个新的窗口要分两种情况:1.两个ie是不同进程:这时新ie并没有已打开窗口的资源(也就是sessionid)当然是不同的session2.新开窗口与上个窗口是同一个进程,即不同线程(在ie上“文件”下新建窗口就是这种情况)这样新窗口可以共享已有资源(sessionid)这样的两个窗口是同一个session二、要识别不同的SESSIONID有三种方法:1、COOKIE保存ID2、URL保存ID3、隐藏域保存ID 其实楼主要想实现的东西,是不是要用application域而不是session域来实现? http://dev.csdn.net/article/82/82815.shtmimA给的地址,很牛的文章啊,看看就明白了,呵呵!~谢谢啊 用Maven创建的web项目,是否可以打包成war包,然后让在tomcat里跑呢? 三个表的左连接问题 相当笨,但是相当经典````` 雪地里裸体跪求 DBRichTool 工具的注册码? 菜鸟请教。。。如何修改以下程序错误 iReport-0.4.0-src 启动不了 如何配置tomcat5.0 jsp中如何获得当前页面的链接呀?? 如何使session的时间再长一些 超链接点击响应JS文件中的方法怎么弄? 提取数据再转存问题,再线等啊....谢谢 大家都是用什么做工作流的啊?
session是指客户端和服务器的一次会话,一般情况下都是在浏览器关闭的时候作为一次会话的结束,这个时候为这个用户创建的session会销毁,而不是像你说的访问一个文件就生成一个session。关于session你可以在csdn的文档查一下,有几篇说的还是比较详细的。
=====================================================================1、我关闭浏览器,服务器那边能知道吗?
2、回答我的问题: 我在客户端访问2.jsp,系统会不会生成一个新的session?
2、回答我的问题: 我在客户端访问2.jsp,系统会不会生成一个新的session? 不会
通常session都有一个有效时间,比如你说的例子,访问1.jsp时生成的session,如果在访问2.jsp时没有失效,则系统不新生成session;反之,则生成新的session.
WEB服务器会在新生成session时,用一个sessionID来表示该session。通过cookie或者url重写等方式在客户端和服务器间传递该sessionID,据此来判断是不是该生成新的session
关闭浏览器,服务器是不可能知道的。因为本来HTTP就是无状态的!
“一般情况下都是在浏览器关闭的时候作为一次会话的结束”也不无道理,因为保存sessionID的cookie的生命周期在浏览器内,浏览器关闭时改cookie也就消失了。但是服务器端的session依然会存在一段时间,直到其失效!
无言了,LZ可知道cookie是什么东西?
再不明白我也解释不了了,自己去找篇session的文章看看吧!
........
无言了,LZ可知道cookie是什么东西?
再不明白我也解释不了了,自己去找篇session的文章看看吧!
===============================================================
我认为cookie和session是两码事,因为有的客户端是拒绝cookie的。
看看这片文章了,太多了,不想打了...
url重写
===========================================================谁能说说url重写是怎么回事吗?具体的过程是什么?
还有客户端是拒绝cookie并不等于没有cookie。
应该拒绝的只是存储在硬盘上的cookie(个人观点)
url重写就是将session附加到url中。
还有客户端是拒绝cookie并不等于没有cookie。
应该拒绝的只是存储在硬盘上的cookie(个人观点)
------------------------------------------------------------1、将session附加到url中,只有在服务器返回的时候才可以这么做。但是我新打开一个2.jsp,他又怎么能做到呢。2、既然cookie不可以存储在硬盘上,那么当我关掉ie的时候,它就不存在了。那么我再打开2.jsp的时候,他怎么可能还存在?
如果你说的先访问1.jsp再访问2.jsp是打开两个IE的话,那肯定是2个session!
即使你访问相同的页面,打开两个IE也是2个不同的session!
可能我理解的有问题
如果你说的先访问1.jsp再访问2.jsp是打开两个IE的话,那肯定是2个session!
即使你访问相同的页面,打开两个IE也是2个不同的session!
================================================================不是吧?
你认为不是就不是吧
=================================================这个问题要弄明白!谁来再说说?
不知道你用session来干什么?
=================================================================我以前是想,用这个session来存储一个web应用的全局变量呢! 比如说,用户登陆了,就给他一个session.setAttribute('username','用户名'),我以为这下就可以到处用了。现在看来这是不行的啊!你们怎么用呢?
但是你要判断session里是不是有username这个对象,如果没用说明用户没用登录。有的话就可以进行以后的操作了!
同样,打开2个IE就要登录2次,这也符合逻辑。难道用户不可以用不同的用户名登录吗?
你的想法完全可以啊
但是你要判断session里是不是有username这个对象,如果没用说明用户没用登录。有的话就可以进行以后的操作了!
同样,打开2个IE就要登录2次,这也符合逻辑。难道用户不可以用不同的用户名登录吗?
-------------------------------------------------------------------------不对啊,如果我登陆了,这个username一定有内容了。但是如果那个用户新打开了一个IE,并且访问了一个jsp(不是登陆用的),那么这个session不就没有了吗?如果想避免这种情况,除非用户只能见到一个JSP,就是login.jsp,也就是说,程序只能有一个唯一的入口。
http://dev.csdn.net/article/82/82815.shtm
不过不管怎么样客户端传给服务器的都是session的ID号
通过session的ID号码服务器在服务端找对应的session如果找到就不会重新创建否则就会创建一个新的session
HttpSession session = request.getSession(true);
一定要是这么一句哦,否则会出问题的..............
不过不管怎么样客户端传给服务器的都是session的ID号
通过session的ID号码服务器在服务端找对应的session如果找到就不会重新创建否则就会创建一个新的session
HttpSession session = request.getSession(true);
一定要是这么一句哦,否则会出问题的..............
</font>
===================================================================================还是没理解~~
你登录时,你的session里有了username。如果另一个用户新打开了一个IE,并且访问了一个jsp(不是登陆用的),但是他的session里没有username!
还有,服务器维护的不是一个session,而是一些session的mapping。
你登录时,你的session里有了username。如果另一个用户新打开了一个IE,并且访问了一个jsp(不是登陆用的),但是他的session里没有username!
还有,服务器维护的不是一个session,而是一些session的mapping。
==================================================================我说的不是另一个新用户,而是就是本用户。 如果本用户用新IE打开一个不是登陆的JSP,就会把原来那个session 干掉,是不是呢。那么只有不让用户直接打开别的JSP了?
服务器根本不知道是那个用户,只知道是哪个session!
你问了这么多问题,其实连session是什么都不知道,最好找找其他的东西看看!
2、回答我的问题: 我在客户端访问2.jsp,系统会不会生成一个新的session? 不会这个……也太误导人了吧
建议楼主先看看Cookie 和Session 的机制
如果打开一个新的窗口要分两种情况:1.两个ie是不同进程:这时新ie并没有已打开窗口的资源(也就是sessionid)当然是不同的session
2.新开窗口与上个窗口是同一个进程,即不同线程(在ie上“文件”下新建窗口就是这种情况)
这样新窗口可以共享已有资源(sessionid)这样的两个窗口是同一个session
如果本用户用新IE打开一个不是登陆的JSP,服务器会为该次会话创建新的sessin,和上一次的没关系!!!!!!!
服务器根本不知道是那个用户,只知道是哪个session!
你问了这么多问题,其实连session是什么都不知道,最好找找其他的东西看看!
====================================================================
谢谢你这样耐心的教导,现在我明白了。但是,我说的问题依然存在:打开一个新的jsp,确实服务器会为该次会话创建新的session,而没有破坏原来的session。但是你要知道,在这个新JSP中也要访问session,他还会按照原来的session去取“username”,但是由于是新的,这里是没有username的,这样就会造成错误。所以,一个应用程序,要么只能有一个入口,要么就不能用session,我说的对吗?
也就是你没有关闭这个IE那么这个IE相关的页面里的session是一致的。
如果你重新打开一个新的IE(不是CTRL+N打开),那么这就是一个新的session了。为什么服务器端会知道在什么情况下是新的session,因为session是会话,如果这个request是新的,那么当然会知道。你就这样理解吧,request.getsessions().get... 如果已经有了,那么在会话过程中是会保存的,否则反之。
如果本用户用新IE打开一个不是登陆的JSP,服务器会为该次会话创建新的sessin,和上一次的没关系!!!!!!!
服务器根本不知道是那个用户,只知道是哪个session!
你问了这么多问题,其实连session是什么都不知道,最好找找其他的东西看看!
====================================================================
谢谢你这样耐心的教导,现在我明白了。但是,我说的问题依然存在:打开一个新的jsp,确实服务器会为该次会话创建新的session,而没有破坏原来的session。但是你要知道,在这个新JSP中也要访问session,他还会按照原来的session去取“username”,但是由于是新的,这里是没有username的,这样就会造成错误。所以,一个应用程序,要么只能有一个入口,要么就不能用session,我说的对吗?
====================================================================================
升级成5个三角了,高兴,再来回答你!
你前面说的没错,重新打开一个IE,访问新的JSP时,由于该次session和上次的不同,因此会像你说的一样,造成错误,这是正常的!因为你新打开的IE没有进行用户登录!通常这种情况都会转向错误页面,通知用户登录!
至于你后面说的,“一个应用程序,要么只能有一个入口,要么就不能用session”,我就不太明白了?一般来说一个应用都是只有一个入口的(当然也有特殊的),不过这和用不用session有什么关系?
还有,你是不是想叫用户登录一次以后访问其他的JSP时就不用再登录了?那样的话你只能用cookie,其他的方法我就不知道了,看楼下的吧^_^
这是和COOKIE变量的不同这处
但是:WEB程序是无状态的
所以要识别不同的SESSIONID
这个实现方法有三种:
1、COOKIE保存ID
2、URL保存ID
3、隐藏域保存ID
再通过ID来查询在服务器端保存的变量
以上是学习PHP时的认识,供参考
如果打开一个新的窗口要分两种情况:1.两个ie是不同进程:这时新ie并没有已打开窗口的资源(也就是sessionid)当然是不同的session
2.新开窗口与上个窗口是同一个进程,即不同线程(在ie上“文件”下新建窗口就是这种情况)
这样新窗口可以共享已有资源(sessionid)这样的两个窗口是同一个session
二、要识别不同的SESSIONID有三种方法:
1、COOKIE保存ID
2、URL保存ID
3、隐藏域保存ID
imA给的地址,很牛的文章啊,看看就明白了,呵呵!~谢谢啊