网站统计访问次数的方法
我采用的是jsp网页,但是不管采用什么语言,原理是一样的。最近在完善暑假做的一个简单年级网站,遇到很多问题。我想很多新手都会遇到这些问题,就把自己的心得体会分享给大家。因为我找到的解决方法,也是很多网友分享的。
第一种,单页面统计。就是说,只要点击这个页面就会统计一次。
<%@ page contentType="text/html;charset=GB2312" %> <html><head><title>java计数器程序片 </title></head><body><%!//在这种标记中定义的变量为全局变量int count=0;synchronized void count(){count++;}%><%count();out.println("这是第"+count+"个访问者!");%></body> </html> 第二中,是利用jsp的内置对象application进行统计。这个程序结果运行分析,也是访问一次页面统计一次。感觉还是不够好。真正满意的是浏览器打开网页,到关闭网页算一次,这样统计比较实际。 <%@ page contentType="text/html;charset=GB2312" %> <html><head><title>java计数器程序</title></head><body><%if(application.getAttribute("count")==null){application.setAttribute("count",new Integer(0));}Integer count=(Integer)application.getAttribute("count");application.setAttribute("count",new Integer(count.intValue()+1));count=(Integer)application.getAttribute("count");%><center>这是第<%=count.intValue()%>个访问者!</center></body> </html>第三中,利用jsp的application和session进行统计。它的原理是,访问者打开浏览器到关闭浏览器算一次访问。每次打开首页,创建一个session,这个session直到浏览器关闭才失效。但总体来说,比前两种要好。 但是有一个一个缺陷,那就是当jsp服务器重启时,累计的统计数就清零了。<% int n=0; String count=(String)application.getAttribute("counter"); if(counter!=null) n=Integer.parseInt(counter); if(session.isNew()) ++n; out.print("你是第"+n+"位访客"); counter=String.valueOf(n); application.setAttribute("counter",counter); %> 第四种方案,就是保存到txt文本中,那样重启服务器也不会丢失了。写一个severlet
package com.benb.servlet;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class counter {
public static void writeFile(String filename, long count) {
try {
PrintWriter out = new PrintWriter(new FileWriter(filename));
out.println(count);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static long readFile(String filename) {
File f = new File(filename);
long count = 0;
if (!f.exists()) {
writeFile(filename, 0);
}
try {
BufferedReader in = new BufferedReader(new FileReader(f));
try {
count = Long.parseLong(in.readLine());
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return count;
}
}
<%@ page import="com.benb.servlet.counter"%>
<%
counter CountFileHandler=new counter(); //创建对象
long count=CountFileHandler.readFile(request.getRealPath("/")+"
count.txt");
//读取文件获取数据赋给count
count=count+1;//修改记录,数据加1
out.println(count);//显示记录数
CountFileHandler.writeFile(request.getRealPath("/")+"count.txt",
count);//更新文件记录
%>
import java.io.IOException;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class Counter extends HttpServlet {
private static final long serialVersionUID = 1L;
public Counter() {
super();
}
public static void writeFile(String filename,int count){
try{
PrintWriter out=new PrintWriter(new FileWriter(filename));
out.println(count);
out.close();
}catch(IOException e){
e.printStackTrace();
}
}
public static int readFile(String filename) {
File f = new File(filename);
int count = 0;
if(!f.exists()){
writeFile(filename, 0);
}
try{
BufferedReader in = new BufferedReader(new FileReader(f));
try{
count = Integer.parseInt(in.readLine());
}catch(NumberFormatException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
return count;
}
public void init() throws ServletException {
// Put your code here
}
}
页面编码如下
<%@ page import="com.tozhan.cn.GetDataDB" %>
<%@ page import="com.tozhan.cn.news.New" %>
<%@ page import="com.tozhan.cn.Counter" %>
<%
Counter CountFileHandler=new Counter();//创建对象
int count=0;
if(application.getAttribute("count")==null){
count=CountFileHandler.readFile(request.getRealPath("/")+"count.txt");//读取文件获取数据赋给count
application.setAttribute("count",new Integer(count));
}
count=(Integer)application.getAttribute("count");
if(session.isNew()) ++count;
application.setAttribute("count",count);
CountFileHandler.writeFile(request.getRealPath("/")+"count.txt",
count);//更新文件记录
%>
网站统计访问次数的方法相关推荐
- web核心 4-response响应对象 servletContext对象 响应行响应体 请求转发 重新定向 从服务器下载与上传资源 切换验证码 网站统计访问次数
内容介绍 1 ServletContext对象2 response响应对象 ServletContext对象 概述 ServletContext:servlet的上下文对象(全局管理者) 一个项目有且 ...
- 编写一个Servlet,实现统计网站被访问次数的功能
编写一个Servlet,实现统计网站被访问次数的功能 1弄清楚如何储存你访问的记录的次数这题就很好解决了 (a)getAttribute(java.lang.String name) 返回具有给动名字 ...
- 用Servlet实现统计网站被访问次数的功能
思路: 1.新建一个Servlet类继承HttpServlet,重写doGet()和doPost()方法: 2.在doPost方法中调用doGet()方法,在doGet()方法中实现统计网站被访问次数 ...
- JavaWeb程序设计任务教程(黑马程序员 传智播客)测一测 编写一个Servlet,实现统计网站被访问次数的功能
详细解释已在注释中给出 package 统计网站被访问次数;import java.io.*;import javax.servlet.*; import javax.servlet.http.*;p ...
- Python修改私有变量、统计访问次数、华摄氏度转换
Python笔记Day7 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中, 实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问, ...
- Java-根据IP统计访问次数
JSP根据IP统计访问次数 本文简要介绍如何实现一个IP访问计数器. 为了简单, 使用 JSP 来实现, 但读者需要明白, Java代码可以在到处运行. 示例Demo页面: http://www.cn ...
- 上下文监听,网站得访问次数,修改项目路径后数据库更新数据
1.修改Path: 一般创建完项目后,可能会对项目名进行更改,步骤:双击tomcat→modules→path→Edit→修改Path即可. 2.创建上下文监听: 上下文监听实现ServletCon ...
- php移动签批源码_PHP让网站移动访问更加友好方法
PHP都是在服务器上处理的,所以当代码到达用户时,它只是HTML. 基本上,用户从你的服务器请求你网站的一个页面,然后你的服务器运行所有的PHP并向用户发送PHP的结果. 设备实际上从未看到或必须使用 ...
- html%3c arial%3e,【博客园】样式美化+网站统计访问+添加网易云背景音乐
该样式对应的皮肤:SimpleMemory,请记得更换. 还有目录生成代码默认是生成h2,h3的,需结合自己的需要替换为h1,h2的. 我参考别人的教程,对博客园样式做了修改.后来忽然被原创发消息:说 ...
最新文章
- mysql jdbc 协议_JDBC-MySql
- 递归求n的阶层算法实现
- 【软件质量】软件设计要考虑性能
- linux安装selenium+chrome+phantomjs
- 和docket的第一次亲密接触
- Java性能优化之String字符串优化,BAT 面试官 如何面试
- mysql到底可不可以使用join_《Mysql 到底可不可以使用 Join ?》
- python接口自动化4-绕过验证码登录(cookie) (转载)
- linux查看及修改文件权限以及相关
- 使用js制作完整轮播图 (解决最后一张切换到前面一张的动画问题)
- 使用fmt:formatNumber 标签接收后端数据并格式化
- X站全称是什么_工作中学习-没有校惯导之前为什么PFD不显示飞机姿态,而IFSD却能显示...
- 【我的第一个目标检测课题】2、薅一把Google的羊毛!使用Colaboratory链接谷歌云盘在线进行网络训练
- 服务器多开安卓系统,云服务器安卓多开
- 卡尔曼滤波 预测与测量我们更应该相信谁?
- TPAMI 2021 | 深度学习行人重识别综述与展望
- 《吴军阅读与写作讲义》笔记
- 开启win7 Aero效果
- 中兴智能视觉大数据报道:人脸识别改变未来生活
- python文件换行符_python3 读写文件换行符的方法
热门文章
- java语言的Dao层设计(一)—— Dao层基本结构设计
- 考研 计算机组成原理大纲,2020计算机组成原理考研大纲解析
- 牛刀小试基本语法,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本语法和变量的使用EP02
- outlook邮件开发开发HTML,CSS标签及样式失效总结
- 联通的无限流量套餐,比移动好很多
- 解决kubernetes宿主机top cpu wa io过高引起的cpu资源耗尽问题
- 初学python选择哪个软件_初学 Python 需要安装哪些软件?
- python中docx模块的使用_Python-使用.docx模块
- pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
- Git安装与使用教程