在同一个JSP页面中,每次访问session id都在变化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在同一个JSP页面中,每次访问session id都在变化相关的知识,希望对你有一定的参考价值。

具体如下:在guessNumber.jsp页面输入一个数字,提交后在guess.java里比较输入数字与session中保存的数字的大小,不同则返回到guessNumber.jsp页面。期望每次在guessNumber.jsp页面输入数字并提交,sessionid都应该不变,但实际每次都在变化,如下:HttpSession session = request.getSession();System.out.println(session.getId());搞了两周都找不到原因,求高手指点。谢谢。附源代码如下图:

参考技术A jsp上增加
<%@ page session="false"%>
才会让你自己 getSession(true)或 getSession()时创建session

1、request.getSession() 等价于 request.getSession(true)
这两个方法的作用是相同的,查找请求中是否有关联的jsessionid,如果有则返回这个号码所对应的session对象,如果没有则生成一个新的session对象。所以说,通过此方法是一定可以获得一个session对象。
2、request.getSession(false) 查找请求中是否有关联的jsessionid号,如果有则返回这个号码所对应的session对象,如果没有则返回一个null。
3、在JSP页面中有一个session的隐士对象,这个隐士对象是怎么产生的呢?我们大家都知道JSP页面最终要被转换成一个Java源文件,实际上这个隐士对象就是通过request.getSession(true)这个方法获得的,所以总是可以获得session对象的。如果设置了<%@ page session=false%>指令,容器不会调用以上方法,而并不是说以上方法不会返回session对象。

获取每次访问的平均时间

【中文标题】获取每次访问的平均时间【英文标题】:Get average time per a visit 【发布时间】:2015-06-03 00:32:20 【问题描述】:

我想要做的是获得平均 page_visit_duration 但对于某些行具有相同的 session_id 任何具有重复会话 id 的行只是意味着访问者访问了具有相同 session_id 的那些行的多个页面我需要添加在获得网站上花费的平均时间之前,他们访问的所有页面的总 page_visit_duration 我该怎么做我搜索了,但我找不到任何东西。

这是我尝试过的查询:

select avg(page_visit_duration) as avgtime from page_views 

select avg(page_visit_duration) as avgtime from page_views group by `session_id`

请注意第二个查询返回许多结果,我需要它返回 1 个平均值

我要做的是获取每位访问者在我们网站上花费的平均时间。

【问题讨论】:

【参考方案1】:

您需要先对结果进行分组,然后取其平均值。

SELECT avg(total_duration) as avgtime FROM 
   (SELECT sum(page_visit_duration) as total_duration, session_id FROM page_views group by session_id) sq

【讨论】:

嗨,Scott,谢谢,此查询是否计算所有访问持续时间的时间,包括只有一个 session_id 的访问持续时间或仅具有重复会话 ID 的访问? 所有会话——不只是重复。内部查询首先按会话 ID 对持续时间求和 - 外部查询对这些进行平均。 非常感谢斯科特。我非常感谢您的帮助(:【参考方案2】:

另一种方法是计算总时间并除以会话数:

select sum(page_visit_duration) / count(distinct session_id) as avgtime
from page_views
group by `session_id`;

【讨论】:

以上是关于在同一个JSP页面中,每次访问session id都在变化的主要内容,如果未能解决你的问题,请参考以下文章

如何jsp使用filter防止页面不登陆就访问

JSP_session会话跟踪

jsp页面像action中传值问题,需要传递一个map

关于jsp页面用js获取session的粗浅笔记

jsp:通过Session控制登陆时间和内部页面的访问

JAVA中servlet页面怎样刷新session,使JSP页面得到即使更新????