监听器(测试在线人数的)第一种 HttpSessionBindingListener

index.jsp:

<%--
  Created by IntelliJ IDEA.
  User: admin
  Date: 2019/10/15
  Time: 11:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>HttpSessionBindingListener登录界面</title>
</head>
<body>

<form action="doLogin.jsp"method="post">
    <table align="center">
        <tr><td>
            账号姓名: <input type="text"name="userName"placeholder="请输入账号名">
            <input type="submit"value="登录">

        </td></tr>
    </table>

</form>
</body>
</html>

doLogin.jsp:

<%@ page import="pojo.User" %><%--
  Created by IntelliJ IDEA.
  User: admin
  Date: 2019/10/15
  Time: 11:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>HttpSessionBindingListener验证</title>
</head>
<body>

<%

    String userName = request.getParameter("userName");
    if(userName==null||userName.equals("")){
        response.sendRedirect("index.jsp");
    }else{
        //登录成功!
        User user = new User();
        user.setUserName(userName);
        session.setAttribute("user",user);
        response.sendRedirect("onLine.jsp");
    }
%>

</body>
</html>

onLine.jsp:

<%@ page import="pojo.User" %>
<%@ page import="constants.Constants" %><%--
  Created by IntelliJ IDEA.
  User: admin
  Date: 2019/10/15
  Time: 11:57
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>在线人数</title>
</head>
<body>

<%
    User user = null;
    if(session.getAttribute("user")==null){
        response.sendRedirect("index.jsp");
    }else{
        user = (User)session.getAttribute("user");

%>

欢迎您: <%=user.getUserName()%>
当前在线人数: <%=Constants.USER_COUNT%>
<a href="loginOut.jsp">注销</a>
<%
    }

%>
</body>
</html>

loginOut.jsp:

<%--
  Created by IntelliJ IDEA.
  User: admin
  Date: 2019/10/15
  Time: 12:00
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注销</title>
</head>
<body>

<%

session.invalidate();
response.sendRedirect("index.jsp");
%>

</body>
</html>

javaBean:

Constants类:
package constants;

public class Constants {
    public static int USER_COUNT = 0;
}

User类:

package pojo;

import constants.Constants;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

public class User implements HttpSessionBindingListener {
    private String userName;
    private String password;
    public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {

        Constants.USER_COUNT++;
    }

    public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {

        Constants.USER_COUNT--;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

原文地址:https://www.cnblogs.com/bichen-01/p/11676910.html

时间: 2024-10-13 00:41:59

监听器(测试在线人数的)第一种 HttpSessionBindingListener的相关文章

Unity 人物跟谁手指的移动(第一种方式)

长夜漫漫无心睡眠,敲敲代码,越敲越来劲! 我发现好多小朋友都在玩熊出没之xxxx这个游戏,居然打了一下午都没玩通第2关,我把测试也叫来陪我一起玩! 结果他也打不通,我再去叫策划,他也没打过,我去叫主管,他还是没打过,我再回去叫测试使用游戏修改大师,修改宝石买完全部的装备!结果他还是没打过! (这款游戏,让我人生都变得没有了意义!) 人物跟随手指的移动而移动: 第一种方式: 手指移动了多少,主角就移动多少!(我使用的这种方式,存在问题,手指过快滑动,主角会慢慢跟手指有了距离!) 第二种方式: 手指

Android测试流量的几种方法

1. tcpdump + wireshark 1.1 tcpdump抓包 注意:Android设备使用tcpdump需要root权限 tcpdump是一个在Unix-like系统中通用的网络抓包工具,当然,这个工具在Android系统中也是可以使用的. 先去下载Android系统使用的tcpdump工具 下载地址:http://www.androidtcpdump.com/ 下载后,push到手机设备上,如: abd push tcpdump /data/local/tmp/tcpdump tc

在Java Web程序中使用监听器可以通过以下两种方法

之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响应,从本质上来说这些都是观察者模式的具体实现,在web程序中的监听器也不例外.在Java Web程序中使用监听器可以通过以下两种方法:通过注解@WebListener来标识一个自定义的监听器:[java] view plain copy@WebListener public class Custom

Struts1.X与Spring集成——第一种方案

spring+struts(第一种方案) 集成原理:在Action中取得BeanFactory,通过BeanFactory取得业务逻辑对象,调用业务逻辑方法. 一,新建一个项目Spring_Struts_01 二,步骤 1.spring和Struts的依赖包配置 *Struts (1)拷贝Struts和jstl的依赖包 (2)在web.xml文件中配置ActionServlet <span style="font-family:KaiTi_GB2312;font-size:18px;&qu

UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现

UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现 测试数据 java代码 1 package com.hzf.spark.study; 2 3 import java.util.Map; 4 import java.util.Set; 5 6 import org.apache.spark.SparkConf; 7 import org.apache.spark.api.java.JavaPairRDD; 8 import org.apache.s

LoadRunner测试WebService的3种方式

LR在WebService虚拟用户协议中支持两种方式测试WebService,一种是通过“Add Service Call”的方式,一种是Import SOAP的方式. Import SOAP的方式需要导入定义好的XML请求文件. 取到WebService返回的XML数据后,可以使用XPath的方式验证数据,LR提供了几个处理XML的函数: lr_xml_get_values()  //Retrieves values of XML elements found by a query lr_xm

tableView &nbsp; cell 复用 第一种

第一种方法    static NSString * iden = @"dd";    TableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:iden];    if (!cell) {        cell = [[TableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:iden];     } ret

探索式测试中的几种误区

探索式测试(Exploratory Testing)是敏捷测试中的重要组成部分,其价值与一般性测试如用户故事测试或者自动化测试不同,它所关注的是“意料之外”的软件缺陷,探索式测试作 为一个研究性.启发性和严肃性并存的测试方法,是一般性测试的重要补充.随着敏捷测试的推广,探索式测试逐渐受到大家的关注和重视.本文主要探讨了测试工 程师在探索式测试方面的一些误区,并尝试纠正这些问题. 误区1:探索式测试是一种测试技术. 探索式测试本身不是一种测试技术,相反,它是一种可以应用于广泛测试技术的方式或态度.

iOS 清理缓存功能实现第一种方法

1 添加一个提示框效果导入第三方MBProgressHUD #import "MBProgressHUD+MJ.h" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <br><br>/**  *  清理缓存第一种方法  */ -(void)clearCache { dispatch_async(                dispatch_get_global_queue(DISP