随笔 - 20  文章 - 2  trackbacks - 0
<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(1)

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

引用

邵波的空间如何防止同一个账户被多个人同时登陆?

1.用session超时,session为null就表示下线了      
     
  2.也可以采用数据库中设置     临时表     来处理      
  一个用户登陆时向表中插进一条记录,用户离开时候删除该记录      
  如想统计在线人数,简单地执行      
  select     count(*)     from     table...     即可      
     
  3.application对象中可以记住现在的人数,application的生命周期和服务器的生命周期一样长。      
     
  4.还有一种方法要用到一个文件global.jsa     ,方法是(在JSP中)是sessionDestroy(),其中它是以session对象为参数的。还有要把global.jsa文件必须房子和JSP程序相同的文件目录内才行。      
     
  5.网页自动刷新的代码是:      
  在文件头部加上      
  <meta     http-equiv="refresh"     content="15">      
  刷新间隔时间是15秒      
     
     
  6.在session中加入监听类,类的示例代码如下:      

onLineUser.java-------------------------------------------------------------------------------------------

package com.shaobo.struts.action;

import javax.servlet.http.*;
import javax.servlet.*;
import java.util.*;

public class onLineUser implements HttpSessionBindingListener {
 public onLineUser() {
 }

 private Vector users = new Vector();

 public int getCount() {
  users.trimToSize();
  return users.capacity();
 }

 public boolean existUser(String userName) {
  users.trimToSize();
  boolean existUser = false;
  for (int i = 0; i < users.capacity(); i++) {
   if (userName.equals((String) users.get(i))) {
    existUser = true;
    break;
   }
  }
  return existUser;
 }

 public boolean deleteUser(String userName) {
  users.trimToSize();
  if (existUser(userName)) {
   int currUserIndex = -1;
   for (int i = 0; i < users.capacity(); i++) {
    if (userName.equals((String) users.get(i))) {
     currUserIndex = i;
     break;
    }
   }
   if (currUserIndex != -1) {
    users.remove(currUserIndex);
    users.trimToSize();
    return true;
   }
  }
  return false;
 }

 public Vector getOnLineUser() {
  return users;
 }

 public void valueBound(HttpSessionBindingEvent e) {
  users.trimToSize();
  if (!existUser(e.getName())) {
   users.add(e.getName());
   System.out.print(e.getName() + "\t登入到系统\t"
     + (new Date()));
   System.out.println("在线用户数为:" + getCount());
  } else
   System.out.println(e.getName() + "已经存在");
 }

 public void valueUnbound(HttpSessionBindingEvent e) {
  users.trimToSize();
  String userName = e.getName();
  deleteUser(userName);
  System.out.print(userName + "\t退出系统\t" + (new Date()));
  System.out.println("在线用户数为:" + getCount());
 }
}

login.jsp--------------------------------------------------------------------------------------------

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<jsp:useBean id="onlineuser" class="com.shaobo.struts.action.onLineUser"
 scope="application" />
<html>
 <head>
 </head>
 <body onUnload="postMessage()">
  <center>
   <p>
   <h1>
    登陆成功,欢迎访问
   </h1>
   </p>
  </center>
  <%
  session = request.getSession(false);
  %>
  <%
   String username = request.getParameter("username");
   if (onlineuser.existUser(username)) {
    out.println("用户<font color=red>" + username
    + "</font>已经登陆!");
   } else {
    session.setMaxInactiveInterval(50); //Sesion有效时长,以秒为单位      
    session.setAttribute(username, onlineuser);
    out.println("欢迎新用户:<font color=red>" + username
    + "</font>登陆到系统!");
   }
   out.println("<br>当前在线用户人数:<font color=red>"
     + onlineuser.getCount() + "</font><br>");
   String ip = request.getRemoteAddr();
   out.println("<br>IP:<font color=red>" + ip + "</font><br>");
   Vector vt = onlineuser.getOnLineUser();
   Enumeration e = vt.elements();
   out.println("在线用户列表");
   out.println("<table border=1>");
   out.println("<tr><td>用户名</td></tr>");
   while (e.hasMoreElements()) {
    out.println("<tr><td>");
    out.println((String) e.nextElement() + "<br>");
    out.println("</td></tr>");
   }
   out.println("</table>");
  %>
  <center>
   <p>
   </p>
   [
   <a href="javascript:window.close()">关闭窗口</a>]
   <%
    out.println("<p><a href='index.jsp'>退出系统</a></p>");
   %>
  </center>
  <Script>      
              function postMessage(){                                                                  
                 <%onlineuser.deleteUser(request.getParameter("username"));%>      
            }      
  </Script>
 </body>
</html>

欢迎光临邵波的空间` http://blog.sina.com.cn/shaobolive

QQ:343269876


文章来源:http://wxq594808632.blog.163.com/blog/static/10907975520092191192874
posted on 2009-03-19 13:19 武志强 阅读(797) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: