用数据库如果估计在线人数不是很多的话,用application 比较快!

解决方案 »

  1.   

    实现HttpSessionListener(Servlet2.3)接口的在线用户管理器,可以统计在线人数和控制
      

  2.   

    <%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
    <html>
    <head>
    <%@ page import="java.sql.*"%><title>无标题文档</title>
    </head><body>
    <%
    String englishName = request.getParameter("englishName");
    String chineseName= request.getParameter("chineseName");
    String address= request.getParameter("address");
    String telephone = request.getParameter("telephone");
    String Email= request.getParameter("Email");
     Class.forName("oracle.jdbc.driver.OracleDriver");
     String userName="javateach";
     String password="javateach";
     String dbUrl = "jdbc:oracle:thin:@172.16.35.30:1521:orcl";
     Connection conn = DriverManager.getConnection(dbUrl,userName,password);
     
    String sql="select count(*)as num from user_t_info where englishName='" + englishName+"'";
    Statement st=conn.createStatement();
    ResultSet rs= st.executeQuery(sql);
    rs.next();
    if(rs.getInt("num") > 0)
    {
    %>  
    <script>
    alert("用户已经注册!");
    history.go(-1);
    </script>
    <%
      conn.close();
      return;
     
    }
    String sqlStr="insert into user_t_info (englishName,chineseName,address,telephone,Email) values ('"+ englishName + "','"+ chineseName + "','"+ address + "','"+ telephone+ "','"+ Email +"')";
    rs.next();
    if(st.executeUpdate(sqlStr) == 1)
    {
    out.print("成功了");
    }
    else
    {
    out.print("failed");
    }
    %></body>
    </html>
      

  3.   

    elms.login.listener listener = new elms.login.listener(getServletContext());
    session.setAttribute(name,listener);//监听session是否过期import java.io.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import elms.sql.DBConnection;/*public class listener extends HttpServlet
    {

       public void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException,IOException
    {
    response.setContentType("text/plain");
    HttpSession session = request.getSession();
    session.setAttribute("stuloginname",new CustomBindingListener(getServletContext()));
    session.setAttribute("stuloginname",""+Math.random());
    session.setMaxInactiveInterval(5);
    }
    }*/public class listener implements HttpSessionBindingListener
    {
    private ServletContext context;

    public listener(ServletContext context)
    {
    this.context = context;
    }

    public void valueBound(HttpSessionBindingEvent event)
    {

    }

    //=========================用户权限session过期后取消用户登录状态=============================================
    public void valueUnbound(HttpSessionBindingEvent event)
    {
    try
    {
    elms.sql.DBConnection conn = new elms.sql.DBConnection();
    //System.out.println("ok1");
    String stuloginvalue = (String)event.getName();
    //System.out.println(stuloginvalue);
    //System.out.println("ok2");
    String update_sql = "update student_info set Onlinestatus='0' where studentno='"+stuloginvalue+"'";
    conn.executeQuery(update_sql);
    conn.close();
    //System.out.println("ok3");
    }
    catch(Exception e)
    {
    //System.out.println(e.getMessage());
    }
    }
    }
    这样可以的,但是在用户意外断电的时候必须要等session过期后才可以用的