showcount.jsp
上传用户:jhtang88
上传日期:2014-01-27
资源大小:28528k
文件大小:18k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. <%@ page contentType="text/html;charset=gb2312"%>
  2. <%@ page import="java.util.Calendar" %>
  3. <%@ page import="cn.js.fan.db.*" %>
  4. <%@ page import="cn.js.fan.web.*" %>
  5. <%@ page import="cn.js.fan.util.*" %>
  6. <%@ page import="java.sql.*" %>
  7. <jsp:useBean id="fchar" scope="page" class="cn.js.fan.util.StrUtil"/>
  8. <jsp:useBean id="privilege" scope="page" class="com.redmoon.oa.pvg.Privilege"/>
  9. <%
  10. if (!privilege.isUserPrivValid(request, "forum.bak"))
  11. {
  12. out.println(cn.js.fan.web.SkinUtil.makeErrMsg(request, cn.js.fan.web.SkinUtil.LoadString(request, "pvg_invalid")));
  13. return;
  14. }
  15. %>
  16. <%!
  17. String connname = Global.defaultDB;
  18. int CountSize = 6;    //计数不足在前面加零
  19. boolean CountView = true;  //计数是否显示在页面上,False/True
  20. boolean CountType = true;  //统计是记时间还是不记.True记,False不记
  21. boolean CountMode = true; //在页面上显示不计时的计数结果,还是显示计时的结果,默认为不计时(计时为:20分钟内不加数)
  22. int Avera,DayMax,AllCount;
  23.  //计算两个日期之间相隔的天数
  24.  public int DateDiff(java.util.Date lowerLimitDate,java.util.Date upperLimitDate){
  25.    long upperTime,lowerTime;
  26.    upperTime=upperLimitDate.getTime();
  27.    lowerTime=lowerLimitDate.getTime();
  28.    if(upperTime<lowerTime)
  29. return -1;
  30.    Long result=new Long((upperTime-lowerTime)/(1000*60*60*24));
  31.    return result.intValue();   
  32.  }
  33.  
  34.  public String Right(String str ,int n)
  35.  {
  36.   return str.substring(str.length()-2);
  37.  }
  38. %>
  39. <%
  40. Conn conn = new Conn(connname);
  41. Calendar cal = Calendar.getInstance();
  42. String today = cal.get(cal.YEAR)+"-"+(cal.get(cal.MONTH)+1)+"-"+cal.get(cal.DATE);
  43. //===========================================================================
  44. String NewYear,NewMonth,NewDay;
  45. NewYear = Integer.toString(cal.get(cal.YEAR));
  46. NewMonth = Integer.toString(cal.get(cal.MONTH)+1);
  47. NewDay = Integer.toString(cal.get(cal.DATE));
  48. if (NewYear.length()<=2) NewYear="20" + NewYear;
  49. if (NewMonth.length()<=1) NewMonth="0" + NewMonth;
  50. if (Integer.parseInt(NewDay)<=9) NewDay="0" + NewDay;
  51. //===========================================================================  基本统计数据
  52. int DayTotal = 0;
  53. ResultSet rs = conn.executeQuery("Select count(*) from DayCount");
  54. if (rs!=null && rs.next())
  55. DayTotal = rs.getInt(1);                              //获得统计总天数
  56. else
  57. DayTotal = 0;
  58. if (rs!=null) rs.close();
  59. rs = conn.executeQuery("Select * from Count");
  60. java.util.Date StartDate,LogDate=null;
  61. int ToDay=0,TotalDays=0;
  62. if (rs!=null && rs.next())
  63. {
  64. StartDate = rs.getDate("StartDate");                                 //开始统计日期
  65. DayMax    = rs.getInt("DayMax");                                     //最高一天流量
  66. AllCount  = rs.getInt("AllCount");                                   //统计访问总数(使用的天数)
  67. ToDay     = rs.getInt("ToDayCount");                                 //今天访问流量
  68. LogDate   = rs.getDate("LogDate");                                   //统计截止日期
  69. TotalDays = DateDiff(StartDate,new java.util.Date())+1;          //统计访问日期数(不管有没有使用,从开始统计算起.)
  70. Avera     = rs.getInt("AllCount") % TotalDays;                   //日均访问流量
  71. }
  72. if (rs!=null) rs.close();
  73. if (DateDiff(LogDate,new java.util.Date())>=1) ToDay = 0;
  74. //===========================================================================  预计一天访问量
  75. int intending=(ToDay/(cal.get(cal.HOUR)+1)*(24-cal.get(cal.HOUR)-1)+ToDay);
  76. //===================================================================
  77. String DayID,MonID,YearID;
  78. boolean MyDay;
  79. DayID = request.getParameter("day");
  80. MonID = request.getParameter("mon");
  81. if (DayID==null || !fchar.isNumeric(DayID))
  82. {
  83.      DayID  = NewDay;
  84.      MyDay  = false;
  85. }
  86. else
  87. {
  88.      DayID = DayID.trim();
  89.  MyDay  = true;
  90. }
  91. if (MonID==null || !fchar.isNumeric(MonID))
  92. {
  93. MonID = NewYear + NewMonth;
  94. }
  95. else
  96. MonID = MonID.trim();
  97. YearID = MonID.substring(0,4);
  98. String Mon = MonID.substring(MonID.length()-2);
  99. String dToday = YearID + "-" + Mon;
  100. if (DayID.length()<=1)
  101. DayID = "0" + DayID;
  102. if (MonID.length()<=1)
  103. MonID = "0" + MonID;
  104. %>
  105. <%
  106. //===========================================================================
  107. %>
  108. <html>
  109. <head>
  110. <title>蓝风统计系统</title>
  111. <%@ include file="../../inc/nocache.jsp"%>
  112. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  113. <link rel="stylesheet" href="../../common.css" type="text/css">
  114. <style type="text/css">
  115. <!--
  116. BODY {font-size:9pt;font-family:Tahoma,Verdana,MS Sans Serif,Courier New;}
  117. A:link,A:visited{text-decoration:none;}
  118. A:hover {text-decoration:underline;}
  119. A:hover {text-decoration:overline;color:#FFFF00}
  120. TR,TD,P{font-size:9pt}
  121. B{color:#E1005D;}
  122. INPUT.text,INPUT.file,SELECT,TEXTAREA{color:#000000;background-color:#FFFFFF;border:1 solid #220430}
  123. #TITLE{height:20;Filter: shadow(color=#00AAFF,direction=135);}
  124. .notice{position:relative;height:50;overflow:visible;border:0;z-index:2}
  125. FONT.table{color:#000000}
  126. FONT.strong{color:#FFFFEE;font-weight:bold}
  127. .footer{color:#FFFFEE;font-size:8pt}
  128. .info,.title{background-color:#002F90}
  129. .outter{background-color:#350682}
  130. .cell{background-color:#9B9D9A}
  131. FONT.search{color:#FFFFFF}
  132. FONT.notice{color:#FFFFFF}
  133. .retable{background-color:#FFFFFF}
  134. .rcontent{background-color:#F0F0F0}
  135. FONT.small{font-size:7pt}
  136. .style1 {color: #0000FF}
  137. -->
  138. </style>
  139. </head>
  140. <body bgcolor="#FFFFFF" text="#000000">
  141. <%
  142. //==========================================================================
  143. String CountLink = request.getContextPath()+"/cms/counter/ViewInfo.asp"; //查看统计结果的连接。
  144. String ImageLink = request.getContextPath()+"/cms/counter";              //图片地址
  145. %>
  146. <table width="576" border="0" cellpadding="0" cellspacing="0" align="center" height="48">
  147.   <tr> 
  148.     <td align="center"><font color="#000000">今日: <%=today%><img src="<%=ImageLink%>/theme/default/vstatb.gif"> 
  149.       全部: <%=AllCount%><img src="<%=ImageLink%>/theme/default/hstatt.gif"> 最高: 
  150.       <%=DayMax%><img src="<%=ImageLink%>/theme/default/vstatg.gif"> 日均: <%=Avera%>
  151.       <%
  152. //===========================================================================
  153. String ScriptName = request.getRequestURL().toString();
  154. //===========================================================================
  155. String path = "bc";
  156. try {
  157. ResultSet MyCount = conn.executeQuery("Select * From bc");
  158. if ( conn.getRows()>0)
  159. {
  160.    %>
  161.       <a href="showlast.jsp">最后20位访问</a></font></td>
  162.   </tr>
  163. </table>
  164. <table class=p9 width="576" align="center" border="0" cellpadding="0" cellspacing="0">
  165.   <tr class=info>
  166.     <td align=right colspan=2><font class=strong>访问者 浏览器 统计</font></td>
  167.   </tr>
  168.   <%
  169.    int counttotal = 0;
  170.    int todaystotal = 0;
  171.    int countwidth = 0;
  172.    int todayswidth = 0;
  173.    while (MyCount.next())
  174.    {
  175.   counttotal = MyCount.getInt("count") + counttotal;
  176.   todaystotal = MyCount.getInt("todays") + todaystotal;
  177.   if (countwidth < MyCount.getInt("count")) 
  178.    countwidth = MyCount.getInt("count");
  179.   if (todayswidth < MyCount.getInt("todays")) 
  180.    todayswidth = MyCount.getInt("todays");
  181.    }
  182.    MyCount.beforeFirst();
  183.    int dpct = 0;
  184.    int tpct = 0;
  185.    int widthd = 0;
  186.    int widtht = 0;
  187.    while (MyCount.next())
  188.    {
  189.   dpct = (int)Math.round((double)MyCount.getInt("todays")/todaystotal*100);
  190.   tpct = (int)Math.round((double)MyCount.getInt("count")/counttotal*100);
  191.   widthd = dpct*3;
  192.   widtht = tpct*3;
  193.   %>
  194.   <tr class=rcontent> 
  195.     <td height="39"><nobr><%=MyCount.getString(path)%></nobr></td>
  196.     <td height="39"><nobr><img src="<%=ImageLink%>/theme/default/vstatb.gif" width="<%=widthd%>" height=10><%=Percent(MyCount.getInt("todays"),todaystotal)%> 
  197.       (<%=MyCount.getInt("todays")%>)<nobr><br>
  198.       <nobr><img src="<%=ImageLink%>/theme/default/hstatt.gif" width="<%=widtht%>" height=10><%=Percent(MyCount.getInt("count"),counttotal)%> 
  199.       (<%=MyCount.getInt("count")%>)</nobr></td>
  200.   </tr>
  201.   <%
  202.    }%>
  203. </table>
  204. <%
  205.  }
  206.  MyCount.close();
  207.  }
  208.  catch (java.sql.SQLException e)
  209.  {}
  210.  catch (java.io.IOException e)
  211.  {}
  212. path = "os";
  213. try {
  214. ResultSet MyCount = conn.executeQuery("Select * From os");
  215. if ( conn.getRows()>0)
  216. {
  217.    %>
  218. <table class=p9 width="576" align="center" border="0" cellspacing="0" cellpadding="0">
  219.   <tr class=info>
  220.     <td align=right colspan=2><font class=strong>访问者 操作系统 统计</font></td>
  221.   </tr>
  222.   <%
  223.    int counttotal = 0;
  224.    int todaystotal = 0;
  225.    int countwidth = 0;
  226.    int todayswidth = 0;
  227.    while (MyCount.next())
  228.    {
  229.   counttotal = MyCount.getInt("count") + counttotal;
  230.   todaystotal = MyCount.getInt("todays") + todaystotal;
  231.   if (countwidth < MyCount.getInt("count")) 
  232.    countwidth = MyCount.getInt("count");
  233.   if (todayswidth < MyCount.getInt("todays")) 
  234.    todayswidth = MyCount.getInt("todays");
  235.    }
  236.    MyCount.beforeFirst();
  237.    int dpct = 0;
  238.    int tpct = 0;
  239.    int widthd = 0;
  240.    int widtht = 0;
  241.    while (MyCount.next())
  242.    {
  243.   dpct = (int)Math.round((double)MyCount.getInt("todays")/todaystotal*100);
  244.   tpct = (int)Math.round((double)MyCount.getInt("count")/counttotal*100);
  245.   widthd = dpct*3;
  246.   widtht = tpct*3;
  247.   %>
  248.   <tr class=rcontent>
  249.     <td><nobr><%=MyCount.getString(path)%></nobr></td>
  250.     <td><nobr><img src="<%=ImageLink%>/theme/default/vstatb.gif" width="<%=widthd%>" height=10><%=Percent(MyCount.getInt("todays"),todaystotal)%> 
  251.       (<%=MyCount.getInt("todays")%>)<nobr><br>
  252.       <nobr><img src="<%=ImageLink%>/theme/default/hstatt.gif" width="<%=widtht%>" height=10><%=Percent(MyCount.getInt("count"),counttotal)%> 
  253.       (<%=MyCount.getInt("count")%>)</nobr></td>
  254.   </tr>
  255.   <%
  256.    }%>
  257. </table>
  258. <%
  259.  }
  260.  MyCount.close();
  261.  }
  262.  catch (java.sql.SQLException e)
  263.  {}
  264.  catch (java.io.IOException e)
  265.  {}
  266. %>
  267. <br>
  268. <table width="576" border="0" class="p9" align="center" cellpadding="0" cellspacing="0">
  269.   <tr class=info>
  270.     <td align="right"><font class=strong><%=YearID%> 年 <%=Mon%> 月 日统计</font> </td>
  271.   </tr>
  272. </table>
  273. <table cellspacing='0' cellpadding='0' width='576' border='0' class="p9" align="center">
  274.   <tr align=center valign=bottom> 
  275.     <%//===========================================================================
  276. String mondays = ",31,28,31,30,31,30,31,31,30,31,30,31";
  277. String[] lastday = mondays.split(",");
  278.         if (((Integer.parseInt(YearID) % 4 == 0) && (Integer.parseInt(YearID) % 100 != 0)) || (Integer.parseInt(YearID) % 400 == 0)) lastday[2] = "29";
  279.         String StrSQL="Select * From MonthCount Where ID = " + MonID;
  280.         ResultSet MyCount = conn.executeQuery(StrSQL);
  281.         if (!MyCount.next())
  282.              out.println( "<TD align=center>没有统计数据</TD>");
  283.         else
  284. {
  285.              String weekstr = "Sun,Mon,Tue,Wed,Thu,Fri,Sat";
  286.  String[] Wday = weekstr.split(",");
  287.  int Dmax = 0;
  288.  Calendar ca =  Calendar.getInstance();
  289.              for (int n = 1; n<=Integer.parseInt(lastday[Integer.parseInt(Mon)]); n++)
  290.  {
  291.                     if (Dmax<MyCount.getInt(n+1))  Dmax = MyCount.getInt(n+1);
  292. ca.set(Integer.parseInt(YearID),Integer.parseInt(Mon)-1,n);
  293. int intSday = ca.get(Calendar.DAY_OF_WEEK)-1;
  294. String Sday = "";
  295.                     if (intSday == 0 || intSday == 6)
  296.                           Sday = "<font color=red>" + Wday[intSday] + "</font>";
  297.                     else
  298.                           Sday = ""+Wday[intSday];
  299.                    %>
  300.     <td width="563" class="rcontent"><nobr><font class=small><%=Sday%></font></td>
  301.     <%
  302.              }
  303.              %>
  304.   </tr>
  305.   <tr align=center valign=bottom> 
  306.     <%
  307.  String Images = "";
  308.              for (int n = 1;n<=Integer.parseInt(lastday[Integer.parseInt(Mon)]);n++)
  309.  {
  310.                     int iDay = MyCount.getInt(n+1);
  311.                     %>
  312.     <td width="563" class="rcontent"><font class=small><nobr> 
  313.       <%
  314.                     if( iDay>0 )
  315. out.println(iDay);
  316.                     %>
  317.       </nobr></font><br>
  318.       <%
  319.                     if (iDay == Dmax)
  320.                           Images = "vstath.gif" ;
  321.                     else if (n == Integer.parseInt(NewDay))
  322.                           Images = "vstatd.gif";
  323.                     else if (n == Integer.parseInt(DayID))
  324.                           Images = "vstatp.gif";
  325.                     else
  326.                           Images = "vstatt.gif";
  327.                     int height = (int)iDay*300/Dmax;
  328.                     %>
  329.       <IMG Src="<%=ImageLink%>/theme/default/<%=Images%>" height="<%=height%>" width='10'></TD>
  330.     <%
  331.               }
  332.               %>
  333.   </TR>
  334.   <TR align=center> 
  335.     <%
  336.               String strn = "";
  337.               for (int n = 1; n<=Integer.parseInt(lastday[Integer.parseInt(Mon)]); n++)
  338.   {
  339.  strn = ""+n;
  340.  if (n<=9) strn = "" + n;
  341.                      %>
  342.     <TD width="563" class="rcontent"><a href="<%=ScriptName%>?mon=<%=MonID%>&day=<%=strn%>"><%=strn%></a></TD>
  343.     <%
  344.               }
  345.         }
  346.         MyCount.close();
  347.        %>
  348.   </TR>
  349. </table>
  350. <table class="p9" width="576" align="center" border="0" cellpadding="0" cellspacing="0">
  351.   <tr><td colspan=2 align=center>点击日期可查看当日时间访问统计.如果没有选择日期.将显示一个月内的所有时间统计</td></tr>
  352.         <tr class=info>
  353.     <td colspan=2 align=right><font class=strong><%=YearID%> 年 
  354.       <%=Mon%> 月 
  355.       <%if (MyDay) out.println(DayID + "日");%>
  356.       时间统计</font></td>
  357.   </tr>
  358.  <%
  359.         StrSQL="Select * From DayCount Where";
  360.         if (MyDay)
  361.               StrSQL = StrSQL + " ID = " + MonID + DayID;
  362.         else
  363.               StrSQL = StrSQL + " Left(ID,6) = " + MonID;
  364.         MyCount = conn.executeQuery(StrSQL);
  365.         // System.out.println(StrSQL);
  366.         if (conn.getRows()==0)
  367.             out.println("<tr class=rcontent><td colspan=2 align=center>没有统计数据</TD></TR>");
  368.         else
  369. {
  370.             int d[] = new int[25];
  371. int dtotal = 0;
  372. int Tmax = 0;
  373. int TWidth = 0;
  374. String Images = "";
  375.             while (MyCount.next())
  376. {
  377.                 for (int i = 1; i<=24; i++)
  378.                     d[i] = MyCount.getInt(i+1) + d[i];
  379.             }
  380.             for (int x = 1; x<=24; x++)
  381. {
  382.                  dtotal = d[x] + dtotal;
  383.                  if (Tmax < d[x])  Tmax=d[x];
  384.             }
  385. Calendar ca = Calendar.getInstance();
  386.             for (int n = 1; n<=24; n++)
  387. {
  388.         //ca.set(Integer.parseInt(YearID),Integer.parseInt(MonID),Integer.parseInt(DayID));
  389.                   if (n-1 == ca.get(Calendar.HOUR_OF_DAY))
  390.                         Images = "vstatb.gif" ;
  391.                   else if (d[n] == Tmax)
  392.                         Images = "vstatg.gif" ;
  393.                   else
  394.                         Images = "hstatt.gif";
  395.                   TWidth = (int)350 * d[n]/Tmax;
  396.   %>
  397.                   <tr class=rcontent>
  398.     <td align=center> <%=Right("0" + (n-1),2)%>:00 ~ <%=Right("0" + n,2)%></TD>
  399.     <TD>
  400.                   <IMG src="<%=ImageLink%>/theme/default/<%=Images%>" height='10' width="<%=TWidth%>">
  401.                   <%if (d[n]>0) out.println(d[n]);
  402.                   out.println("(" + Percent(d[n],dtotal) + ")");%>
  403.   </TD></TR>
  404.   <%
  405.             }
  406.         }
  407.         MyCount.close();
  408. %>
  409.         <tr class=info>
  410.     <td colspan=2 align=right><font class="strong" color="#FFFFFF"><%=YearID%> 
  411.       年 月统计</font></td>
  412.   </tr>
  413. <%
  414.         StrSQL="Select * from YearCount Where ID = " + YearID;
  415.         MyCount = conn.executeQuery(StrSQL);
  416. int Mmax = 0;
  417. int iMon = 0;
  418.         if ( !MyCount.next())
  419.              out.println("<tr class=rcontent><TD colspan=2 align=center>没有统计数据</TD></TR>");
  420.         else
  421. {
  422.              int mtotal = 0;
  423.  String Images = "";
  424.  for (int i=1; i<=12; i++)
  425.  {
  426.                  mtotal += MyCount.getInt(i+1);
  427.                  if (Mmax < MyCount.getInt(i+1))  Mmax=MyCount.getInt(i+1);
  428.              }
  429.              for (int n = 1; n<=12; n++)
  430.  {
  431.  iMon = MyCount.getInt(n+1);
  432.                  if (iMon>0)
  433.  {
  434.                       if (n == Integer.parseInt(NewMonth))
  435.                              Images = "vstatb.gif";
  436.                       else if (n == Integer.parseInt(Mon))
  437.                              Images = "vstatk.gif";
  438.                       else if (iMon == Mmax)
  439.                              Images = "vstatg.gif";
  440.                       else
  441.                              Images = "hstatt.gif";
  442.                       int MWidth = (int)350*iMon/Mmax;
  443.   %>
  444.                       <tr class=rcontent><td align=center>
  445.                       <%if (iMon!=0)
  446.                            out.println("<a href='" + ScriptName + "?mon=" + YearID + Right("0" + n,2) + "'>");
  447.                       out.println(YearID + "-" + Right("0" + n,2) +" ~ " +  lastday[n] + "</a>");%>
  448.   </TD><TD>
  449.                       <IMG src="<%=ImageLink%>/theme/default/<%=Images%>" height='10' width="<%=MWidth%>">
  450.                       <%if (iMon > 0)  out.println(iMon);%>
  451.                       (<%=Percent(iMon,mtotal)%>)</TD></TR>
  452.   <%
  453.                  }
  454. }
  455.         }
  456. if (MyCount!=null) {
  457. MyCount.close();
  458. MyCount = null;
  459. }
  460.         conn.close();
  461. %>
  462. </table>
  463. <table width="576" border="0" class="p9" cellpadding="0" align="center">
  464.   <tr>
  465.     <td align="center" height="42"> 
  466.       <%!
  467. public String Percent(int St,int Sz)
  468. {
  469.        double Str = (double)St / Sz * 100;
  470.        return cn.js.fan.util.StrUtil.FormatPrice(Str)+"%";
  471. }
  472. %>
  473.       截止日期: <%=LogDate%>, 统计天数: <%=DayTotal%>/<%=TotalDays%> 天, 预计本日访问量: <%=intending%> 
  474.       人 </td>
  475.   </tr>
  476. </table>
  477.      
  478. <table cellspacing='0' cellpadding='3' width='576' border='0' align="center">
  479.   <tr><td align=center><font class=footer>风之城<br><img src='theme/default/hr_black.gif' height=2 width='60%'><br>
  480.       Copyright &copy2000-2001 <A href='mailto:bestfeng@163.com'>蓝风统计系统</A>,All 
  481.       Rights Reserved</font></td>
  482.   </tr>
  483.      <tr><td>
  484.      </td></tr></table>
  485. </body>
  486. </html>