HttpSession对象是客户端首次访问web应用程序时创建的么?
如果是这样,这么说来是系统自动分配的?
还是需要手动分配啊?

解决方案 »

  1.   

    你打开浏览器登陆应用程序时,服务器就自动给你分配一个sessionID,除非你关了浏览器,或者session时间到了,或者在程序操作中session被clear了,否则的话session会一直存在
      

  2.   

    从表面上基本上是楼上各位朋友看到的那些现象,但实际的内部表现却并非如此Session是在server端调用HttpServletRequest.getSession(true)方法时才创建,如果在jsp中没有显式使用<%@page session="false"%>,那么jsp编译时会加上HttpSession session = HttpServletRequest.getSession(true),这就是为什么打开一个jsp页面就建立了一个session,如果请求的是一个servlet就不同了吧那session又是在什么时候被删除了,很多人认为在浏览器关闭之后session不失效了,其实不然,如果你在关闭浏览器之前把jseesionid复制下来,重新打开一个页面,用a.jsp;jsessionid=1243333324abcd23233的方式访问页面,使用的又是刚刚那个Session,session是在调HttpSession.invalidate()或是session超时或服务进和停止后才消毁。所以当你把浏览器关闭,也要等到那个session超时后才消毁掉。如果这些细节对你们编程无影响的话还是可以如上面那么理解,但是作为程序员还是应该清楚这些细节的。
      

  3.   

    Thx to:kypfos(不在寻梦) 
    我也是困惑在JSP和servlet的HttpSession机制之间
    "如果在jsp中没有显式使用<%@page session="false"%>,那么jsp编译时会加上HttpSession session = HttpServletRequest.getSession(true),这就是为什么打开一个jsp页面就建立了一个session,如果请求的是一个servlet就不同了吧"对我很有帮助,谢谢!以后做jsp多看看自动生成的准代码.