要是做计数器的话,一段代码加上两个javabean,就可以了!!
解决方案 »
- 如何用JS获取iframe内文件的值?高分求解
- MyEclipse编译的毛病
- 这个错误是怎么回事呢?
- 一个关于能否读取 JS中变量的值给JAVA?(新手)
- java.lang.NullPointerException
- frame中js日历控件添加日期的问题
- 超简单的SQL查询语句,请求大侠赐教~!
- ========一定要解决这个问题,100分 谢谢!=====
- 附件存在数据库中,下载时以二进制流直接向客户端写,会不会特别耗内存
- 关于封装DAO,javabean,jsp的层次结构以及代码的效率!(附代码)————大家pp!!
- 谁可以帮我送100分一个简单的分页问题!在线!!急
- 刚入门java求学习jsp+beans的学习方法,和资料。100分给说的最清楚的人
<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());
}
}
}
在它的sessionDestroyed方法中i--,这样就可以监听人数了!
然后在web.xml中配置<listerner>元素
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的个数就可以了