package feng;
import java.sql.*;
import java.io.*;
import java.util.*;
import java.awt.Toolkit;
import java.awt.*;
public class jdbc {
Connection conn = null ;
//设置你的数据库用户名和密码:
String use = "" ;
String pass = "" ;
public java.sql.Connection getConn(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:Count";
conn= DriverManager.getConnection(url,use,pass);
}
catch(Exception e){
e.printStackTrace();
}
return this.conn ;
}
public String ex_chinese(String str){
if(str==null){
str ="" ;
}
else{
try {
str = new String(str.getBytes("iso-8859-1"),"gb2312") ;
}
catch (Exception ex) {
}
}
return str ;
}
public String gettime() {
String datestr = "" ;
try {
java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd HH") ;
datestr = df.format(new java.util.Date()) ;
}
catch (Exception ex) {
}
return datestr ;
}
public String getHour() {
String datestr = "" ;
try {
java.text.DateFormat df = new java.text.SimpleDateFormat("H") ;
datestr = df.format(new java.util.Date()) ;
}
catch (Exception ex) {
}
return datestr ;
}
public String getMonth() {
String datestr = "" ;
try {
java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-M") ;
datestr = df.format(new java.util.Date()) ;
}
catch (Exception ex) {
}
return datestr ;
}
public String getStrMonth() {
String datestr = "" ;
try {
java.text.DateFormat df = new java.text.SimpleDateFormat("M") ;
datestr = df.format(new java.util.Date()) ;
}
catch (Exception ex) {
}
return datestr ;
}
public String getStrDay() {
String datestr = "" ;
try {
java.text.DateFormat df = new java.text.SimpleDateFormat("d") ;
datestr = df.format(new java.util.Date()) ;
}
catch (Exception ex) {
}
return datestr ;
}
public String getDay() {
String datestr = "" ;
try {
java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-M-d") ;
datestr = df.format(new java.util.Date()) ;
}
catch (Exception ex) {
}
return datestr ;
}
public String getWeek() {
String datestr = "" ;
try {
java.text.DateFormat df = new java.text.SimpleDateFormat("E") ;
datestr = df.format(new java.util.Date()) ;
}
catch (Exception ex) {
}
return datestr ;
}
public int getTime1ToTime2(String Time1) {
String StrDate=Time1;
int i=StrDate.indexOf("-");
String ip1=StrDate.substring(0,i);
StrDate=StrDate.substring(i+1,StrDate.length());
i=StrDate.indexOf("-");
String ip2=StrDate.substring(0,i);
StrDate=StrDate.substring(i+1,StrDate.length());
i=StrDate.indexOf(" ");
String ip3=StrDate.substring(0,i);
StrDate=StrDate.substring(i+1,StrDate.length());
java.util.Date StartDate=new java.util.Date(Integer.valueOf(ip1).intValue()-1900,Integer.valueOf(ip2).intValue(),Integer.valueOf(ip3).intValue());
long aa=StartDate.getTime();
java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd HH") ;
StrDate = df.format(new java.util.Date()) ;
i=StrDate.indexOf("-");
ip1=StrDate.substring(0,i);
StrDate=StrDate.substring(i+1,StrDate.length());
i=StrDate.indexOf("-");
ip2=StrDate.substring(0,i);
StrDate=StrDate.substring(i+1,StrDate.length());
i=StrDate.indexOf(" ");
ip3=StrDate.substring(0,i);
StrDate=StrDate.substring(i+1,StrDate.length());
java.util.Date StartDate1=new java.util.Date(Integer.valueOf(ip1).intValue()-1900,Integer.valueOf(ip2).intValue(),Integer.valueOf(ip3).intValue());
long bb=StartDate1.getTime();
return (int)(bb-aa)/(24*60*60*1000);
}
public void AddNum(String Data,String TbName,String CompareField,String AddField,String admin){
try{
Connection con2 = getConn() ;
Statement stmt3=con2.createStatement();
Statement stmt4=con2.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs2 =null;
String sql="Select * From "+TbName+" Where "+CompareField+"='"+Data+"' and admin='"+admin+"'";
rs2=stmt4.executeQuery(sql) ;
rs2.last();
if (rs2.getRow()>0){
sql="update "+TbName+" set "+AddField+"="+AddField+"+1 "+" Where "+CompareField+"='"+Data+"' and admin='"+admin+"'";
stmt3.executeUpdate(sql) ;
} else {
sql="insert into "+TbName+"(admin,"+CompareField+","+AddField+") values('"+admin+"','"+Data+"',1)" ;
stmt3.executeUpdate(sql);
}
rs2.close();
stmt3.close();
stmt4.close();
con2.close();
}
catch (Exception ex) {
}
}
public void ModiMaxNum(String CurData,String OldData,String OldNum,String MaxData,String MaxNum,String admin){
try{
Connection con = getConn() ;
Statement stmt1=con.createStatement();
Statement stmt2=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet Rs =null;
String sql="Select * From InfoList where admin='"+admin+"'";
Rs=stmt2.executeQuery(sql);
Rs.next();
String FStrDate=Rs.getString(OldData);
int count=Rs.getInt(OldNum);
if (FStrDate.equals(CurData)){
count=count+1;
} else {
FStrDate=CurData;
count=1;
}
int FmaxNum=Rs.getInt(MaxNum);
String FMaxData=Rs.getString(MaxData);
if (count>=FmaxNum){
FmaxNum=count;
FMaxData=CurData;
}
sql="update InfoList set "+OldData+"='"+FStrDate+"',"+OldNum+"="+count+","+MaxData+"='"+FMaxData+
"',"+MaxNum+"="+FmaxNum+" Where admin='"+admin+"'";
stmt1.executeUpdate(sql);
Rs.close();
stmt1.close();
stmt2.close();
con.close();
}
catch (Exception ex) {
}
}
}
在IT行业中,对网站流量进行统计是至关重要的,它可以帮助我们了解网站的受欢迎程度、用户行为模式以及优化网站性能。本教程将详细讲解如何使用Java实现这一功能,特别是在标题和描述中提到的“用IP统计网站流量”。 我们要明白统计网站流量的基本概念。网站流量主要包括三个方面:在线人数、总访问量和总的页面访问量。在线人数是指在同一时间内正在访问网站的独立用户数量;总访问量是所有用户访问网站的次数之和;总的页面访问量则是所有用户浏览的网页数量总和。 在Java中,我们可以使用Servlet技术来处理HTTP请求,从而实现流量统计。Servlet是一个Java类,它用于扩展服务器的功能,处理客户端的请求。以下是一个简单的Servlet示例,用于记录每次请求的IP地址: ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException; public class TrafficServlet extends HttpServlet { private int onlineCount = 0; // 当前在线人数 private long totalVisits = 0; // 总访问量 private long totalPageViews = 0; // 总页面访问量 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String ipAddress = req.getRemoteAddr(); // 获取IP地址 onlineCount++; // 每次请求增加在线人数 totalVisits++; // 增加总访问量 totalPageViews += req.getParameter("page").length(); // 根据请求参数计算页面访问量(假设每个页面有一个名为"page"的参数) // 可能会将这些数据存储到数据库或日志文件中,以便后续分析 // ... // 返回响应,例如可以显示当前的流量数据 resp.getWriter().println("当前在线人数:" + onlineCount); resp.getWriter().println("总访问量:" + totalVisits); resp.getWriter().println("总页面访问量:" + totalPageViews); } } ``` 这个Servlet示例中的`doGet`方法会在每次GET请求时被调用,通过`HttpServletRequest`对象获取客户端的IP地址,并更新流量统计数据。注意,实际应用中可能需要考虑代理服务器等情况,因为`getRemoteAddr()`可能返回代理服务器的IP而不是用户的真实IP。 为了持久化这些数据,你可以选择使用数据库,如MySQL,或者简单地将数据写入日志文件。例如,你可以创建一个定时任务定期将流量数据写入数据库,以便进行更复杂的分析。 在实际项目中,可能还需要考虑到并发性和性能问题。使用线程安全的数据结构(如`AtomicInteger`)来处理在线人数、总访问量和总页面访问量的更新,以避免多线程环境下可能出现的问题。 此外,`ipcount`这个文件名可能是用于存放IP地址的统计结果。在实际操作中,可以将其设计为一个文本文件或数据库表,记录每个IP地址的访问次数,以便进行进一步的IP分析,如地理位置、访问频率等。 Java提供了丰富的工具和技术来实现网站流量统计,包括Servlet、数据库操作、并发控制等。理解并掌握这些技术对于构建高效、可靠的网站流量统计系统至关重要。
























- 1

- 粉丝: 63
- 资源: 629
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 前端开发中 ESLint 规则配置详解及规范指南
- Calculator2.zip
- ES6代理与反射技术详解及其在观察者模式中的应用
- ABB机器人编程仿真软件RobotStudio 2025.1-链接baiduyun.txt
- vba支持包2.zip
- Markdown格式llama-box、vox-box 和 vLLM gpustack部署指南+RAG的底座平台+部署DeepSeek模型等.zip
- DeepSeek30个喂饭指令.pdf
- 注册电气工程师公共基础-化学13
- DeepSeek高阶提示词全面解析:助力职场、创作、电商等领域小白秒变专家
- 深度解读DeepSeek最强使用攻略:简明提问与三大对话模板
- DeepSeek小白使用技巧指南:让你轻松驾驭深度思考R1与人性化交互
- 《手把手教你IDEA光速下载安装,开启高效开发》
- 鹰迅批量处理工具箱 (Windows)
- 注册电气工程师公共基础-物理1
- yoloV4-tiny模型,可以直接调用
- 这款简单实用蓝色带微信二维码的 QQ 在线客服源码,绝对是网站增强互动体验的得力助手



- 1
- 2
- 3
- 4
前往页