在线抓取网页(什么是SessionSession对应的中文翻译是会话。。 )
优采云 发布时间: 2021-11-29 23:06在线抓取网页(什么是SessionSession对应的中文翻译是会话。。
)
什么是会话
Session对应的中文翻译是conversation。
会话是指用户打开浏览器访问一个网站的时间,无论这个网站访问了多少个页面,点击了多少个链接,都属于同一个对话。在用户关闭浏览器之前,它们属于同一个会话。
HTTP 协议是短链接,因此无法根据服务器端建立的连接数来统计当前在线人数。但是,在线用户的数量可以通过计算会话数来估计。
一旦用户访问服务器,就会创建一个会话。如果用户继续访问,则会话将继续有效。
如果用户在 30 分钟后没有进行任何操作,则表示用户“离线”,相应的会话将被销毁。
因此您可以通过计算保留的会话数来估计当前在线人数。
PeopleLisened.java
package com.chenchangjie.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class PeopleListener implements HttpSessionListener {
/**
* *敏*感*词*session创建
* @param se
*/
@Override
public void sessionCreated(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer num = (Integer) context.getAttribute("online_num");
if(num == null)
num = 0;
++num;
context.setAttribute("online_num",num);
System.out.println("新增一位用户...");
}
/**
* *敏*感*词*session销毁
* @param se
*/
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer num = (Integer) context.getAttribute("online_num");
if(num == null)
num = 0;
else
--num;
context.setAttribute("online_num",num);
System.out.println("减少一位用户...");
}
}
web.xml 添加配置
com.chenchangjie.listener.PeopleListener
test.jsp
运行结果:
输出被替换是因为我监控了Context,每次增加session都会更新Context
打开浏览器会增加