站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题简单的计数统计器

简单的计数统计器

摘要: 简单的计数统计器

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="738" border="0"> <tr> <td width="732"> </td> </tr> </table>
最近在学JSP。看了一下书,在网上看了别人写的一些简单计数器后,自己就开始动手写了一个,现在共享下。感觉还可以,对于初学者来说,应该是一个不错的学习例子,其中设计到了JAVABEAN,连接数据库和SESSION的一些简单问题,不过对于初学者来说可以加深对这些概念的理解。
我做的简单统计器,主要实现了防刷新,记录来访IP,统计IP数目这些简单功能 首先先设计个数据库。我用了个简单的ACCESS(主要是方便好用),首先在ACCESS中设计两个表:1、counter表(包含两列:编号,counter)---这个表是用来记录访问数目的。
2、iptables表(包含两列:编号,IP)----这个表是用来记录来访者的IP地址。好了,数据库设计好了,下面 只要在你的机子上注册下ODBC就可以拉,我这里注册的ODBC数据源是counter
好了,下面我把程序的代码贴出来:
//CounterBean.java
package yg;
import java.io.*;
import java.sql.*;

public class CounterBean extends Object {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:count";
private Connection conn = null;
private Statement stmt = null;
ResultSet rs = null;
//注册数据库驱动程序
public CounterBean() {
try {
Class.forName(sDBDriver);
}
catch (java.lang.ClassNotFoundException e) {
System.err.println("CounterBean():" + e.getMessage());
}
}

//建立数据库连接及定义数据查询
public ResultSet executeQuery(String sql) {
rs = null;
try {
conn = DriverManager.getConnection(sConnStr);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch (SQLException e) {
System.err.println("executeQuery:" + e.getMessage());
}
return rs;
}

//定义数据操作
public void executeUpdate(String sql) {
stmt = null;
rs = null;
try {
conn = DriverManager.getConnection(sConnStr);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
}
catch (SQLException ex) {
System.err.println("executeUpdate:" + ex.getMessage());
}
}

//关闭数据库
public void closeStmt() {
try {
stmt.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}

public void closeConn() {
try {
conn.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
//同步更新计数器
public synchronized int getcount(){
int count=0;
rs=null;
try{
executeUpdate("update counter set counter=counter+1");
rs=executeQuery("select counter from counter");
rs.next();
count=rs.getInt("counter");
stmt.close();
conn.close();
}catch (SQLException e) { }
return count;
}
}


//counter.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="yg.CounterBean" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>

<head>


<BR> 计数器演示程序 <BR>
</head>
<body>


<%
String cont=new String();
String ips=new String();
int ipnum=0;
ResultSet rs;
rs=null;
if (session.isNew()){
cont =String.valueOf(counter.getcount());//取访问量
session.putValue("count",cont);
ips =request.getRemoteAddr();//来客的IP
rs =counter.executeQuery("select ip from iptables where ip='"+ips+"'");
if (!rs.next())//如果数据库没有记录这个IP
counter.executeUpdate("insert into iptables (ip) values('"+ips+"')");//插入一条IP记录
}
rs =counter.executeQuery("select ip from iptables");
while (rs.next()){//统计IP量
ipnum=ipnum+1;
}
counter.closeStmt();
counter.closeConn();
session.putValue("ipnum",String.valueOf(ipnum));
%>
您是第<%=session.getValue("count")%>位访问者


您的IP地址为:<%=request.getRemoteAddr()%>


目前共有<%=session.getValue("ipnum")%>个不同的IP访问过此站点


</body>

好了,完了,就这些拉。偶是个菜鸟,一个JAVA的初学者,还望各位大虾指点指点。

</td> </tr> <tr>


↑返回目录
前一篇: 用jsp实现直接下载文件的功能
后一篇: 在JSP中创建目录