要是做计数器的话,一段代码加上两个javabean,就可以了!!

解决方案 »

  1.   

    实现计数器:<%@page contentType="text/html;GBK"%>
    <html>
    <body>
    <jsp:useBean id="a" scope="session" class=popeylin.addone"/>
    <jsp:useBean id="b" scope="page" class=popeylin.display"/>
    已经有<%
    //读取文件,并显示在html页面上
    b.counter();
    for(int i=9;i>=0;--i) out.print(b.img[i]);
    %>人访问,欢迎您!
    </body>
    </html>两个javabean的代码如下:
    addone.java 的代码:
    package poperelin;
    import java.io.*;
    public class addone
    {
    private String s1=new String();
    //在构件器中执行写文件操作public addone()
    {
    try
    {
    BufferedReader buff=new BufferedReader(new FileReader("counter.txt"));
    String s=buff.readLine();
    int i=lnteger.parselnt(s);
    i++;
    System.out.println(i);
    buff.close();
    s=Integer.toString(i);
    PrintWriter pw=new PrintWriter(new BufferedWriter(new FileWriter("counter.txt")));
    pw.println(s);
    pw.close();
    }
    catch(IOException e)
    {
    System.out.println(e.toString());
    }
    }
    }
    display.java的代码:
    package popeyelin;
    import java.io.*;
    import java.lang.*;
    public class display
    {
    public String[] img=new String[10];
    //读取文件
    public void counter()
    {
    trY
    {
    BufferedReader buff=new BufferedReader(new FileReader("counter.txt"));
    String s=buff.readLine();
    int i=lnteger.parselnt(s);
    int st=10;
    int j=0;
    while(j<=9)
    {
    img[j]=Integer.toString(i%st);
    img[j]=img[j]+".GIF";
    img[j]="images/"+img[j];
    img[j]="<img src="+img[j]+">";
    img[j]=img[j]+"</img>";
    i/=10;
    j++;
    }
    }
    catch(IOEception e)
    {
    System.out.println(e.toString());
    }
    }
    }
      

  2.   

    如果监听在线人数的话,就用HttpSessionListener,在这个接口的实现方法sessionCreated方法中i++,
    在它的sessionDestroyed方法中i--,这样就可以监听人数了!
      

  3.   

    sessionDestroyed方法写在哪儿啊?页面吗?客户端还是服务器端?用户不正常退出怎么办。比如直接关掉浏览器、或机器。这样应该是在服务器端判断吧!在服务器怎么写啊?写哪儿呢?
      

  4.   

    你写一个类实现HttpSessionListener,在其中实现sessionCreated和sessionDestroyed两个方法就行了!
    然后在web.xml中配置<listerner>元素
      

  5.   

    使用javax.servlet.http.HttpSessionBindingListener接口,它提供了两个方法:
    public void valueBound(HttpSessionBindingEvent event)
    public void valueUnbound(HttpSessionBindingEvent event)
    实作了这两个方法以后,实作HttpSessionBindingListener的对象在加入session时会呼叫valueBound(),而由session中移除时会呼叫valueUnbound()方法搭配JavaBean来作比较灵活, 参考一下下面的程序:登入程序 login.jsp:<HTML><BODY>
    <font size="5" color="#FF0000"><b>登入</b></font><br><br>
    <form method="POST" action="userlist.jsp">
     <p>account: <input type="text" name="account" size="12"></p>
     <p><input type="submit" value="登入"></p>
    </form>
    </BODY></HTML>列出目前在线的使用者 userlist.jsp:<HTML><BODY>
    <%@ java.util.*" %>
    <%! UserCon userlist = UserCon.getInstance(); %>
    <jsp:useBean id="usertrace" class="mybean.UserTrace" scope="session"/>
    <%
     String account = request.getParameter("account");
     usertrace.setUserName(account);
     session.setAttribute("usertrace", usertrace);
     userlist.addUser(usertrace.getUserName());
     session.setMaxInactiveInterval(10);
    %>
    <div align="center">
    <font size="5" color="#FF0000"><b>User List</b></font><br><br>
    <textarea rows="9" cols="15">
    <%
     Enumeration elements = userlist.getList();
     while(elements.hasMoreElements()) {
      String sTemp = (String)elements.nextElement();
      out.println(sTemp);
     }
    %>
    </textarea>
    </div>
    </BODY></HTML>两个JavaBean:---> UserCon.java <---import java.util.*;
    public class UserCon {
     private Vector container;
     private static UserCon instance = new UserCon();
     private UserCon() {
       container = new Vector();
     }
     public static UserCon getInstance() {
      return instance;
     }
     public void addUser(String user) {
      if (user != null) {
       container.addElement(user);
      }
     }
     public Enumeration getList() {
      return container.elements();
     }
     public void removeUser(String user) {
      if (user!=null){
       container.removeElement(user);
      }
     }
    }---> UserTrace.java <---import java.util.*;
    import javax.servlet.http.*;
    import mybean.UserCon;
    public class UserTrace implements javax.servlet.http.HttpSessionBindingListener {
     private String user_name;
     private UserCon container = UserCon.getInstance();
     public String getUserName() {
      return user_name;
     }
     public void setUserName(String name) {
      user_name = name;
     }
     public void valueBound(HttpSessionBindingEvent event) {
     }
     public void valueUnbound(HttpSessionBindingEvent event) {
      container.removeUser(user_name);
     }
    }UserTrace.java这个JavaBean, 在valueBound没有任何码
    所以登入时不作任何事
    valueUnbound中就负责把使用者的名字从列表中移掉
    在线人数则取得elements的个数就可以了
      

  6.   

    主要通过HttpSessionListener或HttpSessionBindingListener来实现,楼主可以看一下Servlet规范,一切就清楚了。