锁定老帖子 主题:httpsession 详细内容整理
精华帖 (0) :: 良好帖 (6) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-16
有些懂,有些还是不懂
|
|
返回顶楼 | |
发表时间:2011-03-16
有学习了很多
|
|
返回顶楼 | |
发表时间:2011-03-16
引用 解决方法: 当发现通过sessionid从url指定时, 创建一个新的session,将旧session的信息复制到 新sessoin中,然后将新session注销。就能防止上面那种情况了。
然后将新的session注销?! |
|
返回顶楼 | |
发表时间:2011-03-16
accphc 写道 引用 解决方法: 当发现通过sessionid从url指定时, 创建一个新的session,将旧session的信息复制到 新sessoin中,然后将新session注销。就能防止上面那种情况了。
然后将新的session注销?! 笔误 将旧的session注销 |
|
返回顶楼 | |
发表时间:2011-03-16
feiyan35488 写道 qianshuiqs 写道 这个确实不错,但我还有一个问题,这个保存sessionId和username中的map必然是个全局对象,这个全局对象保存到哪里,还有之前说就算浏览器关闭了session也不会消失,那么如何从map中清理无用的session.
这个map可以保存到 servletContext中。清理session的时候,需要注册session的listener,有session销毁的操作时,就可以清除了。当对方关闭浏览器时,只能等session到期自动销毁。这就需要将session的最大请求间隔时间设计的合理一些 这个Map 要不要做成static的? |
|
返回顶楼 | |
发表时间:2011-03-16
Aaron_Zhang 写道 feiyan35488 写道 qianshuiqs 写道 这个确实不错,但我还有一个问题,这个保存sessionId和username中的map必然是个全局对象,这个全局对象保存到哪里,还有之前说就算浏览器关闭了session也不会消失,那么如何从map中清理无用的session.
这个map可以保存到 servletContext中。清理session的时候,需要注册session的listener,有session销毁的操作时,就可以清除了。当对方关闭浏览器时,只能等session到期自动销毁。这就需要将session的最大请求间隔时间设计的合理一些 这个Map 要不要做成static的? 这个不用,放到servletContext中就可以了,用不到设计成static,否则需要用线程安全的map,这样查询和插入很浪费性能的 |
|
返回顶楼 | |
发表时间:2011-03-18
好贴,session and cookie alwasy confused me.
|
|
返回顶楼 | |
发表时间:2011-03-22
引用 1,浏览器禁用cookie 这就没办法保存sessionid了,可以采用url重写,转发,加隐藏字段等方法来将sessionid传给服务器。 如: baidu.com:jsessionid=adfasdfasdfasdfasdfafdadf?asdfasdf baidu.com?jsessionid=asdfasdfasdfadsfad&&adfdf 这根据服务器的不同实现,第一种可以将普通参数区分开。 纠正 baidu.com;jsessionid=adfasdfasdfasdfasdfafdadf 而不是 baidu.com:jsessionid=adfasdfasdfasdfasdfafdadf ";"表示jsessionid作为uri请求的一部分信息 "?"不应该作为请求参数的一部分传递到服务端 |
|
返回顶楼 | |
发表时间:2011-03-22
akunamotata 写道 引用 1,浏览器禁用cookie 这就没办法保存sessionid了,可以采用url重写,转发,加隐藏字段等方法来将sessionid传给服务器。 如: baidu.com:jsessionid=adfasdfasdfasdfasdfafdadf?asdfasdf baidu.com?jsessionid=asdfasdfasdfadsfad&&adfdf 这根据服务器的不同实现,第一种可以将普通参数区分开。 纠正 baidu.com;jsessionid=adfasdfasdfasdfasdfafdadf 而不是 baidu.com:jsessionid=adfasdfasdfasdfasdfafdadf ";"表示jsessionid作为uri请求的一部分信息 "?"不应该作为请求参数的一部分传递到服务端 嗯 对。 |
|
返回顶楼 | |
发表时间:2011-03-23
feiyan35488 写道 Aaron_Zhang 写道 feiyan35488 写道 qianshuiqs 写道 这个确实不错,但我还有一个问题,这个保存sessionId和username中的map必然是个全局对象,这个全局对象保存到哪里,还有之前说就算浏览器关闭了session也不会消失,那么如何从map中清理无用的session.
这个map可以保存到 servletContext中。清理session的时候,需要注册session的listener,有session销毁的操作时,就可以清除了。当对方关闭浏览器时,只能等session到期自动销毁。这就需要将session的最大请求间隔时间设计的合理一些 这个Map 要不要做成static的? 这个不用,放到servletContext中就可以了,用不到设计成static,否则需要用线程安全的map,这样查询和插入很浪费性能的 ServletContext是Servlet的上下文环境类,为什么要放到这里? HttpSessionListener和HttpSessionActivationListener是监听Session对象的创建和销毁。当创建一个Session时,激发HttpSessionListener中的session Created(HttpSessionEvent se)方法;当销毁一个Session时,激发HttpSessionListener中的sessionDestroyed (HttpSessionEvent se)方法。 所以说应该放到HttpSessionListener中。(用子类去实现这个接口,然后通过HttpSessionEvent.getSession().getId()去获得sessionId) |
|
返回顶楼 | |