Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 468|回复: 0

[jsp学习]简单的计数统计器

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 00:52:19 | 显示全部楼层 |阅读模式
    最近在学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.*" %>
    <HTML>
    <HEAD>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <META NAME="GENERATOR" CONTENT="Oracle JDeveloper">
    <TITLE>
    计数器演示程序
    </TITLE>
    </HEAD>
    <BODY>
    <!--创建并调用bean(counter)-->
    <jsp:useBean id="counter" class="yg.CounterBean" scope="request">
    </jsp:useBean>
    <%
       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));
    %>
    您是第<font color="red"><%=session.getValue("count")%></font>位访问者
    <p>
    您的IP地址为:<%=request.getRemoteAddr()%>
    <p>
    目前共有<%=session.getValue("ipnum")%>个不同的IP访问过此站点
    <p>
    </BODY>
    </HTML>
    好了,完了,就这些拉。偶是个菜鸟,一个JAVA的初学者,还望各位大虾指点指点。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-10 19:21 , Processed in 0.417275 second(s), 50 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表