失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java记录访问次数_Java 利用监听器来实现记录用户访问网站次数(示例代码)

java记录访问次数_Java 利用监听器来实现记录用户访问网站次数(示例代码)

时间:2022-10-06 09:04:46

相关推荐

java记录访问次数_Java 利用监听器来实现记录用户访问网站次数(示例代码)

假如有这么一个需求,要记录所有用户访问某一页面的次数。

最先想到的可能是在该Controller定义一个静态成员,然后在相应Action里自增。但这样有一个问题,就是Tomcat或者其他服务器重启的话,这个值是没办法保存的。

当然在数据库中直接保存也是可以的,但因此便要去单独建张表,日后用户访问相应页面都要去访问数据库维护该表有点不值得。

利用自定义ServletContextListener可以很方便做到这一点。思路如下:

1、在Web应用启动时从文件中读取计数器的数值,并把表示计数器的Counter对象存放到Web应用范围内。存放计数器的文件的路径为helloapp/count/count.txt。

2、在Web应用终止时把Web应用范围内的计数器的数值保存到count.txt文件中。

public class MyServletContextListener implementsServletContextListener{public voidcontextInitialized(ServletContextEvent sce){

System.out.println("helloapp application is Initialized.");//获取 ServletContext 对象

ServletContext context=sce.getServletContext();try{//从文件中读取计数器的数值

BufferedReader reader=newBufferedReader(newInputStreamReader(context.

getResourceAsStream("/count/count.txt")));int count=Integer.parseInt(reader.readLine());

reader.close();//把计数器对象保存到 Web 应用范围

context.setAttribute("count",count);

}catch(IOException e) {

e.printStackTrace();

}

}public voidcontextDestroyed(ServletContextEvent sce){

System.out.println("helloapp application is Destroyed.");//获取 ServletContext 对象

ServletContext context=sce.getServletContext();//从 Web 应用范围获得计数器

int count=(int)context.getAttribute("count");if(count!=0){try{//把计数器的数值写到 count.txt 文件中

String filepath=context.getRealPath("/count");

filepath=filepath+"/count.txt";

PrintWriter pw=newPrintWriter(filepath);

pw.println(count);

pw.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

同时在web.xml文件中要配置

ServletContextTest.MyServletContextListener

通过ServletContext对象便能获取到保存的count值。

如果觉得《java记录访问次数_Java 利用监听器来实现记录用户访问网站次数(示例代码)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。