用session统计某个网页的访问人数(因为我还不会js,所以就做了个简易版本的)

1、创建Session监听器,每创建了一个Session对象就执行监听类中·的sessionCreated方法。

package com.ykh.session;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SeesionLister implements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent event) {
// System.out.println("创建了");
HttpSession session = event.getSession();// 获得Session对象
// 通过Session获得servletcontext对象
ServletContext servletContext = session.getServletContext();
/**
* 1.获取num值
* 2.加1
* 3.存入servletcontext
*/
Object object = servletContext.getAttribute("num");
if (object == null) {
servletContext.setAttribute("num", 1);
} else {
Object num = servletContext.getAttribute("num");
int num1 = (int) num;
servletContext.setAttribute("num", num1 + 1);
}
} @Override
public void sessionDestroyed(HttpSessionEvent event) {
// System.out.println("销毁了");
HttpSession session = event.getSession();// 获得Session对象
// 通过Session获得servletcontext对象
ServletContext servletContext = session.getServletContext();
/**
* 1.获取num值
* 2.减1
* 3.存入servletcontext
*/
servletContext.setAttribute("num", (long) servletContext.getAttribute("num") - 1);
}
}

  2、具体实现的servlet:

package com.ykh.session;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; /**
* Servlet implementation class SeesionTest
*/
@WebServlet("/Test")
public class SeesionTest extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public SeesionTest() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
doPost(req,resp);
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//doGet(request, response);
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
HttpSession session = req.getSession();// 创建Session
// session.setMaxInactiveInterval(10);//设置失效时间10秒 不是销毁
PrintWriter writer = resp.getWriter();
ServletContext servletContext = getServletContext();
Object num = servletContext.getAttribute("num");
writer.write("在线人数:" + num);
} }

  3、效果:

链接:https://pan.baidu.com/s/1F4R-jdC2bhKO7iTmzaOyWA
提取码:whkm
复制这段内容后打开百度网盘手机App,操作更方便哦

Session使用(14)的更多相关文章

  1. JSP(3)—Cookie和Session

    HTTP是一个无状态的协议,web服务器无法分辨出那些请求是同一个浏览器发出的,浏览器每一次请求都是孤立的 即使HTTP1.1支持持续链接,但当用户有一段时间没有请求时,连接也会关闭. 如何实现网上的 ...

  2. 基于dubbo构建分布式项目与服务模块

      关于分布式服务架构的背景和需求可查阅http://dubbo.io/.不同于传统的单工程项目,本文主要学习如何通过maven和dubbo将构建分布项目以及服务模块,下面直接开始. 创建项目以及模块 ...

  3. Oracle Tuning 基础概述01 - Oracle 常见等待事件

    对Oracle数据库整体性能的优化,首先要关注的是在有性能问题时数据库排名前几位等待事件是哪些.Oracle等待事件众多,随着版本的升级,数量还在不断增加,可以通过v$event_name查到当前数据 ...

  4. java代码优化

    优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率. 1.尽量指定类的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final的例子,例如java ...

  5. LSMW批处理工具操作手册

          目录     1. 创建PROJECT 1 2.第一步:初始界面后点击执行出现如下对话框 3 3.第二步:维护源结构 8 4.第三步:Maintain Source Fields 9 4. ...

  6. Asp.net 事件管道

    1.BeginRequest 2.AuthenticateRequest  验证请求,开始检查用户的身份,一般是获取请求的用户信息 3.PostAuthenticateRequest  用户身份检查完 ...

  7. 国内第一篇详细讲解hadoop2的automatic HA+Federation+Yarn配置的教程

    前言 hadoop是分布式系统,运行在linux之上,配置起来相对复杂.对于hadoop1,很多同学就因为不能搭建正确的运行环境,导致学习兴趣锐减.不过,我有免费的学习视频下载,请点击这里. hado ...

  8. hadoop2的automatic HA+Federation+Yarn配置的教程

    前言 hadoop是分布式系统,运行在linux之上,配置起来相对复杂.对于hadoop1,很多同学就因为不能搭建正确的运行环境,导致学习兴趣锐减.不过,我有免费的学习视频下载,请点击这里. hado ...

  9. HBase-java api 基本操作

    使用的是完全分布式,详细信息为: 操作的Java 代码(抄的别人的) package org.admln.hbase; import java.util.ArrayList; import java. ...

  10. HBase-分布式安装

    HBase的安装很简单,也是分为单机伪分布式和分布式 先保证hadoop环境JDK环境,我的是2.2.0和1.6_45 1.确定hadoop正常 2.上传HBase并解压,我用的是和hadoop2.2 ...

随机推荐

  1. docker swarm 集群及可视化界面的安装及配置

    docker swarm 集群及可视化界面的安装及配置 2016-12-14 16:08:46 标签:swarm consul registrator 原创作品,允许转载,转载时请务必以超链接形式标明 ...

  2. hadoop启动报错:localhost: ssh: Could not resolve hostname localhost

    hadoop启动journalnode时报错:localhost: ssh: Could not resolve hostname localhost: Temporary failure in na ...

  3. 导弹拦截问题(DP+贪心)

    1. 拦截导弹(Noip1999) 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度. ...

  4. 9. maps

    C++有vertor,java有HashMap,C语言想使用则需要自行封装,不同的类型还需要再封装,特别麻烦. 看看Go语言的map的使用方法:var member map[string]int,创建 ...

  5. freeswitch 使用info显示的通道变量

    2019-01-20 11:57:30.167311 [INFO] mod_dptools.c:1743 CHANNEL_DATA:Channel-State: [CS_EXECUTE]Channel ...

  6. excel 上传读写到数据库

    <HTML> <div class="input-group"> <form id="abc" action="http ...

  7. XML Linq 学习笔记

    XML如下: <?xml version="1.0" encoding="utf-8"?> <Dishes> <Dish> ...

  8. redis哨兵集群

    Sentinel 哨兵 修改src下的sentinel.conf文件 , 配置端口  :port:随便   daemonize yes 配置主服务器的ip 和端口 我们把监听的端口修改成7000,并且 ...

  9. 7.Redis主线程阻塞原因

    7.Redis主线程阻塞原因7.1 发现阻塞7.2 内在原因7.2.1 API或数据结构使用不合理7.2.2 CPU饱和7.2.3 持久化阻塞7.3 外在原因7.3.1 CPU竞争7.3.2 内存交换 ...

  10. asp.net上传图片到服务器

    ASP.NET的FileUpload控件可用于上传文件到服务器.HoverTreeTop新增了一个“阅图”功能,图片就是用FileUpload上传的.阅图功能查看:http://hovertree.c ...