精华内容
下载资源
问答
  • <div><p>描述问题</strong></p> <pre><code> ...<p><strong>环境信息 - centos7 x64 - php7.4.5 - freenom续期脚本版本 v0.2.2</p><p>该提问来源于开源项目:luolongfei/freenom</p></div>
  • 使用Listener统计在线账户信息

    千次阅读 2011-10-30 17:43:05
    统计在线账户信息的开发过程大致分为以下几步: 一、开发RequestListener类,并实现ServletRequestListener接口,用于监听每个用户的请求信息。 二、开发OnlineListener类,并实现ServletRequestContext接口,用于...

     统计在线账户信息的开发过程大致分为以下几步:

    一、开发RequestListener类,并实现ServletRequestListener接口,用于监听每个用户的请求信息。

    二、开发OnlineListener类,并实现ServletRequestContext接口,用于定期检查在线记录,并删除长期没有请求的记录。该类是一个后台线程,随着程序的启动而启动

    三、DAO层

    四、web.xml文件的配置

    五、开发JSP,显示在线用户信息

     

    下面开始程序的开发:

    一、开发RequestListener类,并实现ServletRequestListener接口,当用户请求到达时,会调用ServletRequestListener接口的requestInitialized方法,当用户断开请求时,会调用ServletRequestListener接口的requestDestroyed方法。RequestListener类主要用于记录访问用户的sessionId,用户状态,用户IP,访问的时间及请求的页面,代码如下:

    public class RequestListener implements ServletRequestListener {
     // 当用户请求到达,被初始化时触发该方法
     public void requestInitialized(ServletRequestEvent sre) {
      HttpServletRequest request = (HttpServletRequest) sre.getServletRequest();
      HttpSession session = request.getSession();
      // 获得sessionId
      String sessionId = session.getId();
      // 访问的页面
      String page = request.getRequestURI();
      // 获得用户的IP
      String ip = request.getRemoteAddr();
      String user = (String) session.getAttribute("user");
      user = (user == null) ? "游客" : user;
      DbDao db = new DbDao("oracle.jdbc.OracleDriver", "jdbc:oracle:thin:@127.0.0.1:1521:ORCAL", "scott", "sa");
      try {
       // 这里的SQL语句写成select *,把要查询的字段列出来才可以,不然会出现"对只读结果集的无效操作updateString"的错误信息
       ResultSet rs = db.query("select session_id,username,user_ip,access_res,last_access from online_info where session_id=? ", true, sessionId);
       // 如果有记录,则更新,否则插入数据库
       if (rs.next()) {
        rs.updateString(4, page);
        rs.updateLong(5, System.currentTimeMillis());
        rs.updateRow();
        rs.close();
       } else {
        db.insert("insert into online_info values(?,?,?,?,?)", sessionId, user, ip, page, System.currentTimeMillis());
       }
      } catch (Exception e) {
       e.printStackTrace();
      }
     }

     // 当用户退出被销毁时触发该方法
     public void requestDestroyed(ServletRequestEvent sre) {

     }

    }

    二、开发OnlineListener对象,实现ServletRequestContext接口,当应用程序开启时,会调用ServletRequestContext接口的contextInitialized方法,当应用程序关闭时,会调用ServletRequestContext接口的contextDestroyed方法。OnlineListener对象用于定期检查在线记录,并删除长期没有请求的记录。该类是一个后台线程,随着程序的启动而启动,代码如下:

    public class OnlineListener implements ServletContextListener {
     public static final int MAX_MILLIS=1*60*1000;
     //程序起动时触发该方法
     public void contextInitialized(ServletContextEvent arg0) {
      new Timer(1000*5, new ActionListener(){
       public void actionPerformed(ActionEvent e) {
        try {
         DbDao dd=new DbDao("oracle.jdbc.OracleDriver","jdbc:oracle:thin:@127.0.0.1:1521:ORCAL","scott","sa");
         ResultSet rs=dd.query("select * from online_info", false);
         StringBuilder beRemove=new StringBuilder("(");
         while(rs.next()){
          //如果当前距离上次访问时间超过了指定时间
          if((System.currentTimeMillis()-rs.getLong(5))>MAX_MILLIS){
           //将要被删除的SessionID添加进来
           beRemove.append("'");
           beRemove.append(rs.getString(1));
           beRemove.append("' , ");
          }
         }
         //如果有要删除的记录
         if(beRemove.length()>3){
                beRemove.setLength(beRemove.length()-3);
                beRemove.append(")");
                dd.modify("delete from online_info where session_id in "+beRemove.toString());
         }
         
         
        } catch (Exception e1) {
         // TODO Auto-generated catch block
         e1.printStackTrace();
        }
       }
       
      }).start();
     }
     //程序关闭时触发该方法
     public void contextDestroyed(ServletContextEvent arg0) {

     }

    }

     

    三、DAO层代码如下:

    public class DbDao {
     private String driver;
     private String uri;
     private String userName;
     private String password;

    //这里省略getter和setter方法

     private Connection con = null;
     private PreparedStatement pstmt = null;
     private ResultSet rs = null;

     public DbDao() {

     }

     public DbDao(String driver, String uri, String userName, String password) {
      this.driver = driver;
      this.uri = uri;
      this.userName = userName;
      this.password = password;
     }

     /**
      * @param sql
      *            sql语句
      * @param updatable
      *            是否可更新
      * @param args
      *            可变参数
      * @return ResultSet
      * @throws Exception
      */
     public ResultSet query(String sql, boolean updatable, Object... args) throws Exception {
      PreparedStatement pstmt = null;
      if (updatable) {
       // 创建可更新的prepareStatement
       // TYPE_SCROLL_SENSITIVE:生成的ResultSet对象可以定位信息,可向前向后访问,如果用户执行完后删除一条记录,那么也从ResultSet中删除
       // CONCUR_UPDATABLE:指定可以更新ResultSet
       pstmt = getCon().prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
      } else {
       pstmt = getCon().prepareStatement(sql);
      }
      for (int i = 0; i < args.length; i++) {
          pstmt.setObject(i + 1, args[i]);
      }
      rs = pstmt.executeQuery();
      return rs;
     }

     /**
      *
      * @param sql
      *            sql语句
      * @param args
      *            可变参数
      * @return boolean
      * @throws Exception
      */
     public boolean insert(String sql, Object... args) throws Exception {
      pstmt = getCon().prepareStatement(sql);
      for (int i = 0; i < args.length; i++) {
       pstmt.setObject(i + 1, args[i]);
      }
      if (pstmt.executeUpdate() != 1) {
       return false;
      }
      return true;
     }

     public Connection getCon() throws Exception {
      if (con == null) {
       Class.forName(driver);
       con = DriverManager.getConnection(uri, userName, password);
      }
      return con;
     }

     public void modify(String sql, Object... args) throws SQLException, Exception {
      pstmt = getCon().prepareStatement(sql);
      pstmt.executeUpdate();
     }

    }

     

    四、在web.xml文件中配置listener

    <listener>
       <listener-class>listener.RequestListener</listener-class>
      </listener>
      <listener>
       <listener-class>listener.OnlineListener</listener-class>
      </listener>

     

    五、JSP的开发,为了简单,这里直接在jsp中写Java代码了,代码如下:

    <%@page contentType="text/html;charset=utf-8" errorPage="" %>
    <%@page import="java.sql.*,listener.*" %>
    <html>
     
     <head>
      <title>统计在线用户信息</title>
     </head>
     <body>
      <h2>当前在线用户信息</h2>
      <table style="border:solid 1px black; width:700px;">
       <tr><td>sessionId</td><td>用户类型</td><td>用户IP地址</td><td>请求页面</td></tr>
       <% DbDao dd=new DbDao("oracle.jdbc.OracleDriver","jdbc:oracle:thin:@127.0.0.1:1521:ORCAL","scott","sa");
       ResultSet rs=dd.query("select * from online_info",false);
       while(rs.next()){%>
        <tr style="border:solid 1px black;">
         <td><%=rs.getString(1) %></td>
         <td><%=rs.getString(2) %></td>
         <td><%=rs.getString(3) %></td>
         <td><%=rs.getString(4) %></td>
        </tr>
       <% }%>
      </table>
     </body>
    </html>

    到此,统计在线用户信息的代码就已经开发完了,只需在地址栏中直接访问JSP,就可以查看到在线用户的信息

    注:此文章部分代码功能摘至《轻量级JavaEE企业应用实践》李刚 著

    展开全文
  • web3js文档 web3浏览器检查 if (typeof window....获取账户信息 // 引入 //<script src="./node_modules/web3/dist/web3.min.js"></script> async function get(){ // 实例化web3 window.web3 =

    web3js文档

    web3浏览器检查

    if (typeof window.ethereum !== 'undefined') {
    	console.log('MetaMask is installed!');
    }

    获取账户信息

    // 引入
    //<script src="./node_modules/web3/dist/web3.min.js"></script>
    async function get(){
        // 实例化web3
        window.web3 = new Web3(ethereum);
        var web3 = window.web3;
        // 请求用户授权 解决web3js无法直接唤起Meta Mask获取用户身份
        const enable = await ethereum.enable();
        console.log(enable,11)
        // 授权获取账户
        var accounts = await web3.eth.getAccounts();
        // web3.eth.getAccounts().then((e)=>{console.log(e)})
        // 取第一个账户
        var myAccount = accounts[0];
        console.log(myAccount, 1);
        // 返回指定地址账户的余额
        var balance = await web3.eth.getBalance(myAccount);
        console.log(balance, 2)
    }

    展开全文
  • 每次关闭App后都需要输入账号密码,觉得很不方便,于是准备在用户第一次登陆成功时利用sqlite在客户端保存用户的账户信息,第二次打开App时检查是否有保存的记录,如果有,直接读取后发送登陆请求给服务器。...

         每次关闭App后都需要输入账号密码,觉得很不方便,于是准备在用户第一次登陆成功时利用sqlite在客户端保存用户的账户信息,第二次打开App时检查是否有保存的记录,如果有,直接读取后发送登陆请求给服务器。(在密码过期或者重置后会删除本地记录)

    这是写好的方法,之前因为写错 SQL语句导致查出来的列与表实际的列不一样。折腾了半天发现是 把*(全部列) 写成 了Count*(只有1列) 

    package com.example.panda.easyexpress10;
    
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    
    /**
     * Created by SmallBear on 2015/10/17.
     */
    public final class DatabaseHelper {
    
        public static boolean IsSaved(Context context){
            SQLiteDatabase db= new SQLiteDB(context).getWritableDatabase();
            Cursor cursor = db.rawQuery("select * from User", null);
            System.out.println("------------------------------数据库一共" + (cursor.getCount()) +"行"+cursor.getColumnCount()+"列");
            System.out.println("------------------------------第1列列名是" + (cursor.getColumnName(0))+"第2列列名是" + (cursor.getColumnName(1)) );
            System.out.println("------------------------------名为uid的索引是" + (cursor.getColumnIndex("uid")) +"  ");
            System.out.println("------------------------------名为psw的索引是" + (cursor.getColumnIndex("psw")) +"  ");
           // System.out.println("------------------------------第一行第1列的数据是" + (cursor.getInt(0)) +"  ");
          //  System.out.println("------------------------------第一行第1列的数据是" + (cursor.getInt(1)) +"  ");
            if (cursor.getCount()>0) {
                cursor.moveToFirst();
                Varbs.uid=cursor.getInt(cursor.getColumnIndex("uid"));
                Varbs.name=cursor.getString(cursor.getColumnIndex("name"));
                Varbs.psw=cursor.getString(cursor.getColumnIndex("psw"));
                System.out.println("------------------------------用户名是" + (cursor.getInt(cursor.getColumnIndex("name"))) +"  ");
                System.out.println("------------------------------密码是" + (cursor.getString(cursor.getColumnIndex("psw"))) +"  ");
    
                db.close();
                return true;
            }
           else {
                db.close();
                return false;
            }
    
        }
    
        public static void Add(Context context,int uid,String name,String psw){
            SQLiteDatabase db= new SQLiteDB(context).getWritableDatabase();
            db.execSQL("insert into User(uid,name,psw) values(?,?,?)", new Object[]{uid,name, psw});
            db.close();
        }
    
        public static void delete(Context context){
            System.out.println("------------------------------正在删除保存的用户信息" );
            SQLiteDatabase db= new SQLiteDB(context).getWritableDatabase();
            db.execSQL("DELETE FROM User");
            db.close();
        }
    
    }
    


    这个是表结构

    package com.example.panda.easyexpress10;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    /**
     * Created by SmallBear on 2015/10/17.
     */
    public class SQLiteDB extends SQLiteOpenHelper {
        //类没有实例化,是不能用作父类构造器的参数,必须声明为静态
        private static final String name = "AcountDB"; //数据库名称
        private static final int version = 5; //数据库版本
        public SQLiteDB(Context context) {
            //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类
            super(context, name, null, version);
        }
    
        @Override
        public void onCreate(android.database.sqlite.SQLiteDatabase db) {
            System.out.println("------------------------------正在创建表" + ("") +" ");
            db.execSQL("CREATE TABLE User ( uid integer  ,name varchar(20), psw varchar(20))");
        }
    
        @Override
        public void onUpgrade(android.database.sqlite.SQLiteDatabase db, int oldVersion, int newVersion) {
            System.out.println("------------------------------正在更新表" + ("") +" ");
            db.execSQL(" DROP TABLE IF EXISTS User  ");
            db.execSQL("CREATE TABLE User ( uid integer  ,name varchar(20), psw varchar(20))");
        }
    }
    


    

    展开全文
  • #rippleBalanceClient 一个简单的用户界面,用于与服务器进行交互并检查多个帐户中的余额。 服务器在NodeJS上运行,并使用ripple-lib连接并从波纹服务器上请求帐户信息
  • 1、检查抖音店铺信息是否完整,如营业执照、身份证照片和其他信息等; 2、进入抖店店铺后台,点支付方式设置 ,选择聚合账户, 【确认】支付方式升级。 商家范围:存量商家,开通过支付宝支付的商家。 ...

        抖音聚合账户是支付宝、钱包支付(余额和银行卡支付)等的综合账户。用于帮助商家完成货款的接收和提现。抖音聚合账户优势在于一次开通多个账户,商家支持用户通过支付宝、钱包支付(余额和银行卡支付)等方式支付商品订单,货款将统一结算到聚合账户中。

        抖音聚合账户开通操作:

        1、检查抖音店铺信息是否完整,如营业执照、身份证照片和其他信息等;

        2、进入抖店店铺后台,点支付方式设置 ,选择聚合账户, 【确认】支付方式升级。

        商家范围:存量商家,开通过支付宝支付的商家。

        3、同意支付方式升级,并保证信息正确,即完成聚合账户成功开通。

        若是抖音新增商家,未开通过支付宝支付的商家,需要先开通支付宝账户,再提交聚合账户开户。抖音商家成功开通支付宝支付后,再按照以上步骤操作抖音聚合账户开通。

        抖音聚合账户的相关问题解答:

        1、抖音新增商家,开通开通支付宝账户同时会开通聚合账户,需要签订书面协议?

        支付宝服务协议、合众服务协议、信用付协议,共计三个协议。

        2、抖音聚合账户升级失败如何操作?

        升级失败:需要商家重新修改银行卡相关信息。确定对私对公是否选择错误,开户名称和卡片开户名称一致,开户行和支行选择正确。

        3、抖音聚合账户,历史的支付宝和微信等账户的货款怎么办?

        可以继续操作提现,若提现账户需要修改,可以在账户中心——支付宝/微信账户——修改【绑卡信息】。

        4、抖音聚合账户的货款怎么结算?

        按照小店技术服务费标准执行,会T+7之后进入聚合账户,商家可以在账户中心中操作提现。

        5、抖音聚合账户升级同意协议之后,报错:尚未开通追光账户,请开通追光后重试?

        追光账户即:聚合账户。商家需要检查自己的【资质中心】信息,更新【资质中心】且通过审核后,再手动填写信息后,提交聚合账户开户。(一般是缺少身份证有效期限)。

    展开全文
  • 账户注册需求

    2019-07-07 18:34:04
    主要场景: ...系统生成验证码图片 ...用户输入验证码 ...系统保存未激活的账户信息 系统生成激活链接,并发送至用户邮箱 10.用户打开邮箱,访问激活链接 11.系统解析激活链接。激活相关账户 12.用户使用I...
  • git 多账户配置

    2018-09-10 17:40:36
    环境 MacOS 检查是否已有全局账户设置: $ git config --global user.name ...如果都没有返回值,就说明没有已配置的 git 账户,否则请删除账户信息: $ git config --global --unset user.name "your...
  • 第7章 账户管理模块的设计与实现(选作) 账户管理模块主要负责管理登陆系统的管理员账户信息主要包含的功能有...检查新输入的账户名是否唯一 2修改密码 ChangePassword) 修改密码 3删除账户 DeleteAccount) 删除账户信息
  • 新注册APP ID在下载APP时会提示检查账户,提示“如需帮助,请联系xxx”
  • 账户体系是支付系统的基础,它的设计直接影响整个系统的特性。这里探讨如何针对电子商务系统的支付账户体系设计。...在支付系统中,账户的设置,主要是从如下几个方面来考虑:交易的需求,比如检查账户是否被
  • windows8 账户图片设置

    2019-09-21 23:14:34
    帐户图片的名字例子这个示例演示了不同的方法得到的用户的名字,当前登录。...Windows.System检查。 UserProfile为信息类和方法应用于该样品。partialclassMainPage:Page{#regionPropertiesprivateFrame_scenariosFra...
  • 网站有几个路径,各个路径下只允许不同的账户来登录。出现了一个问题,比如有两个账户a,b.他们属于不同的角色,只能访问... 此问题的原因是Form授权有个安全的检查,会发现发送的cookie里已经带有一个和FormCooki...
  • 1. 账户类(满分50 分) 版本1:满分10 分 设计 Account1 类,包含: ■ 一个名为id 的int 类型的私有数据域(默认值为0),长度为6 位。...要求界面应模拟小键盘,并且账户信息读、写于文件accounts.dat。
  • 0531-HUAXIA

    2021-05-31 17:53:31
    0531 本行出金 se:本行出金service ...se.checkbusiness():检查账户信息,获取子账户所绑定的结算账户 se.writeTransInfo():记录流水信息 发送前置,处理前置返回结果及扣账 更新流水 调用公共方法校验商户交易流
  • AD域账户删除记录追查

    千次阅读 2017-05-16 16:02:53
    通过repadmin来检查已经被删除用户的信息:1. 用域管理员登录DC2. 开始-运行ldp.exe3. Connection-connect4. Bind-OK5. View-OK6. Options-controls,在Load选项中选择Return deleted object-OK7. 展开左边...
  • 登录账户名的保存

    2012-12-25 15:22:41
    问题: 公司同一域名下的登录名能保存,跨服务器发布的...请检查下面的特定错误详细信息并适当地修改配置文件。 分析器错误消息: 在应用程序配置中未找到连接名“LocalSqlServer”或者连接字符串为空。 源错误:
  • 主机上普通用户执行crontab –e 时,会报错,信息如下: You (用户名) are not allowed to access to (crontab) because of pam configuration.问题排查思路:一、检查crond权限。1、cat /etc/co...
  • DB2 UDB安全模型主要包括两部分:身份验证和授权。身份验证就是使用安全机制验证所提供用户ID和口令的过程。用户和组身份验证由DB2 UDB...每当提交一个命令时,DB2 UDB执行授权检查以保证您有执行该动作的正确特权。
  • Linux 用户组账号管理

    2019-10-04 11:15:04
    用户账号管理: [root@localhost ~]# id vdshen 查看账户 id: vdshen: no such user 没有这个账户 ...[root@localhost ~]# useradd nvshen ...检查账户信息 uid=1001(nvshen) gid=1001(nvshen) 组=1001...
  • 检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件...
  • 检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息:System.Data.SqlException:用户'wrdb_f'登陆失败。原因:该账户的密码已过期。 故障分析: 账号登陆失败无非是两个...
  • 这虽然是个坏消息,但好消息是,经进一步检查Gmail账户密码泄露事件的规模似乎并不大。TNW就这个问题联系上了谷歌,谷歌公司不认为此次泄露是任何安全漏洞导致的问题。谷歌一名发言人告诉TNW称:“谷歌用户的信息...
  • 因为前几天有一些离职人员,所以就把他们的账号给禁用掉了,可禁用掉以后发现,exchange日志里出现了大量的警告信息,如下图 ... 解决方法如下, 1.首先打开AD用户和计算机的...3.在列出的所以账户里面先检查是否...
  • VS一直未登录使用,30天的试用期过后,需要登陆微软账户才能继续使用,登录VS2017/2019时报错:“出现了错误,我们不再能够检索您的帐户信息。请重新输入您的凭据。”。点击检查更新的许可证报错:“我们无法下载...
  • 近日美国国土安全部提交了一份新的提案,要求旅客在进入美国的边境核查单上填写自己的Twitter、...据悉,这项规定针对的是所有非美国公民,信息将连同指纹、面谈等数据被收集进入数据库检查。 据悉这项规定有利于美...
  • 最近一段时间,我发现自己的手机无法与我的google账户同步了。我还是比较喜欢google产品的,邮件、日历、联系人,保存在google账户里,只要能够上网...检查了下设置里面的google账户的同步时间,发现原来google...
  • 一开始检查的教程中的注册表信息是否修改完全,发现没问题; 然后查看电脑环境变量的路径是否有问题,也发现没问题; 后来百度到有个人出现类似问题,但是切换到管理员账户就不会出现问题,测试确实在管理员账户下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 469
精华内容 187
关键字:

检查账户信息