在同一个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都在变化的主要内容,如果未能解决你的问题,请参考以下文章