java判断用户是否在线demo

论坛 期权论坛 脚本     
匿名网站用户   2020-12-20 20:05   31   0
下面为我的测试例子,首先建个web工程,例子中程序包括:OnLineUser.java ,login.jsp ,logout.jsp,onLineUser.jsp四个文件

OnLineUser.java清单:

Java代码 收藏代码
  1. /**//*
  2. *onLineUser类实现HttpSessionBindingListener接口
  3. *onLineUser类将具有HttpSessionBindingListener接口的特有属性
  4. *那么HttpSessionBindingListener接口的特有属性是什么呢?
  5. *HttpSessionBindingListener接口具有的两个空函数
  6. *publicvoidvalueBound(HttpSessionBindingEvente)
  7. *publicvoidvalueUnBound(HttpSessionBindingEvente)
  8. *
  9. *onLineUser实现一些方法:获取在线用户数
  10. *
  11. */
  12. importjavax.servlet.http.*;
  13. importjava.util.*;
  14. publicclassOnLineUserimplementsHttpSessionBindingListener{
  15. publicOnLineUser(){
  16. }
  17. privateVectorusers=newVector();
  18. publicintgetCount(){
  19. users.trimToSize();//调整Vectorusers的容量为Vectorusers的大小
  20. returnusers.capacity();//返回users的容量
  21. }
  22. publicbooleanexistUser(StringuserName){
  23. users.trimToSize();
  24. booleanexistUser=false;
  25. for(inti=0;i<users.capacity();i++)
  26. {
  27. if(userName.equals((String)users.get(i)))
  28. {
  29. existUser=true;
  30. break;
  31. }
  32. }
  33. returnexistUser;
  34. }
  35. publicbooleandeleteUser(StringuserName){
  36. users.trimToSize();
  37. if(existUser(userName)){
  38. intcurrUserIndex=-1;
  39. for(inti=0;i<users.capacity();i++){
  40. if(userName.equals((String)users.get(i))){
  41. currUserIndex=i;
  42. break;
  43. }
  44. }
  45. if(currUserIndex!=-1){
  46. users.remove(currUserIndex);
  47. users.trimToSize();
  48. returntrue;
  49. }
  50. }
  51. returnfalse;
  52. }
  53. publicVectorgetOnLineUser()
  54. {
  55. returnusers;
  56. }
  57. publicvoidvalueBound(HttpSessionBindingEvente)...{
  58. users.trimToSize();
  59. System.out.println("请求:::::::::::"+e.getName());
  60. if(!existUser(e.getName())){
  61. users.add(e.getName());
  62. System.out.print(e.getName()+"登入到系统"+(newDate()));
  63. System.out.println("在线用户数为:"+getCount());
  64. }else{
  65. System.out.println(e.getName()+"已经存在");
  66. }
  67. }
  68. publicvoidvalueUnbound(HttpSessionBindingEvente)...{
  69. users.trimToSize();
  70. StringuserName=e.getName();
  71. deleteUser(userName);
  72. System.out.print(userName+"退出系统"+(newDate()));
  73. System.out.println("在线用户数为:"+getCount());
  74. }
  75. }


login.jsp 清单:

Java代码 收藏代码
  1. <%@pagecontentType="text/html;charset=gb2312"%>
  2. <html>
  3. <head>
  4. <title>测试HttpSessionBindingListener接口</title>
  5. </head>
  6. <body>
  7. <formname="login"method="post"action="onLineUser.jsp">
  8. <inputtype=textname="username">
  9. <inputtype=submitname="submit"value="登陆">
  10. </form>
  11. </body>
  12. </html>


logout.jsp清单:

Java代码 收藏代码
  1. <%@pagecontentType="text/html;charset=gb2312"%>
  2. <%@pageimport="pub.OnLineUser,java.util.*"%>
  3. <jsp:useBeanid="onlineuser"class="pub.OnLineUser"scope="application"/>
  4. <html>
  5. <head>
  6. <title>搞定JSP在线人数</title>
  7. </head>
  8. <body>
  9. <center>
  10. <h1>登陆成功,欢迎您访问!</h1>
  11. </center>
  12. <%
  13. Stringusername=request.getParameter("username");
  14. if(username!=null&&onlineuser.deleteUser(username)){
  15. out.println(username+"已经退出系统!");
  16. session.removeAttribute(username);
  17. out.println("<script>window.location="login.jsp";</script>");
  18. }else{
  19. out.println(username+"已经退出系统!");
  20. out.println("<script>window.location="login.jsp";</script>");
  21. }
  22. %>
  23. <center>
  24. <p>elapsed制作</p>
  25. <p></p>
  26. <p><ahref="logout.jsp">退出系统</a></p>
  27. </center>
  28. </body>
  29. </html>


onLineUser.jsp清单
Java代码 收藏代码
  1. <%@pagecontentType="text/html;charset=gb2312"%>
  2. <%@pageimport="java.util.*,pub.*"%>
  3. <jsp:useBeanid="onlineuser"class="pub.OnLineUser"scope="application"/>
  4. <html>
  5. <head>
  6. <title>搞定JSP在线人数</title>
  7. </head>
  8. <body>
  9. <center>
  10. <h1>登陆成功,欢迎您访问!</h1>
  11. </center>
  12. <%session=request.getSession(false);%>
  13. <%
  14. Stringusername=request.getParameter("username");
  15. if(onlineuser.existUser(username)){
  16. out.println("用户<fontcolor=red>"+username+"</font>已经登陆!");
  17. }else{
  18. session.setMaxInactiveInterval(600);//Sesion有效时长,以秒为单位
  19. session.setAttribute(username,onlineuser);
  20. out.println("欢迎新用户:<fontcolor=red>"+username+"</font>登陆到系统!");
  21. }
  22. out.println("<br>当前在线用户人数:<fontcolor=red>"+onlineuser.getCount()+"</font><br>");
  23. Vectorvt=onlineuser.getOnLineUser();
  24. Enumeratione=vt.elements();
  25. out.println("在线用户列表");
  26. out.println("<tableborder=1>");
  27. out.println("<tr><td>用户名</td></tr>");
  28. /*while(e.hasMoreElements()){
  29. out.println("<tr><td>");
  30. out.println((String)e.nextElement()+"<br>");
  31. out.println("</td></tr>");
  32. }
  33. 下面的方法也是可以的,这两种方法都是可行的,其实Iterator是Enumeration的子类
  34. */
  35. for(Iteratorit=vt.iterator();it.hasNext();){
  36. out.println("<tr><td>");
  37. out.println((String)it.next()+"<br>");
  38. out.println("</td></tr>");
  39. }
  40. out.println("</table>");
  41. %>
  42. <center>
  43. <p>elapsed制作</p>
  44. <p></p>
  45. <%
  46. out.println("<p><ahref=''logout.jsp?username="+username+"''>退出系统</a></p>");
  47. %>
  48. </center>
  49. </body>
  50. </html>
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP