复制代码 代码如下:

//过滤器类
public class EcondingFilter implements Filter {
private String charset = null;
private ServletContext context = null;
private String path = "";
/**
* 在销毁前将数据存入本地文件中
*/
public void destroy() {
//获取servleContext中的属性的那个值
String nums = (String) context.getAttribute("nums");
//创建写入流
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter(path);
bw = new BufferedWriter(fw);
bw.write(nums);
} catch (Exception e) {
e.printStackTrace();
} finally {

try {
if (bw != null) {
bw.close();
}
if (fw != null) {
fw.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
System.out.println("filter销毁");
}

复制代码 代码如下:

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
System.out.println("doFilter前");
String path = ((HttpServletRequest)request).getServletPath();//获取每次访问的action的相对路径
<img alt="" src="https://img-blog.csdn.net/20130728233435953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2tyZ3diag==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"><img alt="" src="https://img-blog.csdn.net/20130728233445625?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2tyZ3diag==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"> //判断路径,如果是登陆的那个action,就让保存的context里面的那个属性加1
if(path.endsWith("/login.action")){
context.setAttribute("nums",Integer.parseInt(context.getAttribute("nums").toString())+1+"");
}
request.setCharacterEncoding(charset);
response.setCharacterEncoding(charset);
chain.doFilter(request, response);
System.out.println("doFilter后");

}

复制代码 代码如下:

public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
System.out.println("filter初始化");
//获取编码格式
charset = filterConfig.getInitParameter("encoding");
//获取servletContext
context = filterConfig.getServletContext();
System.out.println(charset);

path = context.getRealPath("");
File file = new File("D:\\text.txt");
if (!file.exists()) {//判断文件是否存在
// 如果文件不存在,就创建一个文件,保存在D盘中
file = new File("d:\\text.txt");
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter(file);
bw = new BufferedWriter(fw);
bw.write(0 + "");// 写入初始化数据0
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bw != null) {
bw.close();
}
if (fw != null) {
fw.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
}
}
//当每次tomcat启动服务时,进行读取创建的那个文件
path = "d:\\text.txt";
// 从本地读取访问的人数的文件
FileReader fr = null;
BufferedReader bf = null;
String nums = "";
try {
fr = new FileReader(path);
bf = new BufferedReader(fr);
nums = bf.readLine();
System.out.println(nums);
} catch (Exception e) {
e.printStackTrace();
} finally {

try {
if (bf != null) {
bf.close();
}
if (fr != null) {
fr.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//将获得到的数据保存在servletContext中
context.setAttribute("nums", nums);
}

}

用过滤器方便的一点,不需要我们每次手动去调用,当web服务启动时候,自动会引用。首先说下,我写到init方法的依据是,每次web服务启动会调用一次init方法,当关闭服务的时候会调用一次destory方法,将计数的那个数据文件,这个方法写到init方法和destory方法,这样可以减少每次的不断的读取服务器和读取写入文件的次数,当我们每登陆一次,就让servletContext中的那个attr加1,从而实现当关闭服务的时候,把文件保存在磁盘中。下次从磁盘中读取。

Java免费学习   Java自学网 http://www.javalearns.com

关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java

jsp网页计数器实现示例相关推荐

  1. jsp网页浏览简单计数器

    用jsp实现简单的网页计数器 首先要建立一个记录访问次数的文本文档,记住路径. 然后见一个文件夹存0~9的图片(可以自己设置样式美观度), 接下来用Java的IO流打开存储 public String ...

  2. JSP内置对象application对象实战——实现网页计数器

    前面和大家说过application对象有点类似于java里面的全局变量,因此可以将当前访问网站的数量保存在application对象当中,在每次访问网页时,实现将保存在application对象中的 ...

  3. [JSP] 利用application来写一个网页计数器

    利用application写一个网页计数器 实现这一应用, 要用到application下面的两个方法: application.setAttribute() 和 application.getAtt ...

  4. JSP网页开发安装2019-03 eclipse,详细并且简单教程这里有。

    耗时一个下午,终于完成啦. 波折太多啦. 有版本不匹配,网速慢(15K/S..),下载的文件有病毒,配置服务版本过低! 都是泪呀~~~ 全程双击就可以啦.环境变量需要自己配置. 关于所需要的软件以及j ...

  5. application实现一个简单的网页计数器

    该篇文章首发于我的个人博客:http://cherryblog.site/ 使用github+coding+hexo搭建的静态博客,更多文章请移步至我的个人博客 application(应用对象):存 ...

  6. 网页计数器_更好的网页阅读时间计数器,第1部分

    网页计数器 A reading time estimator has been at the top of every article on this site for several years. ...

  7. 网页计数器 JavaBean 的设计与使用

    网页计数器 JavaBean 的设计与使用 [描述]设计一个 JavaBean 记载网页的访问数量,在动态页面中访问该 JavaBean,实现网页的计数.假设要统计两个网页总共访问量. [分析]该问题 ...

  8. 网页计数器 javabean session application 多种方法实现

    运用session,javabean,servlet实现网页计数器  目录 一.运行结果 二.原理 1.session 2.Javabean 但是有个小问题 3.application 三.代码分享 ...

  9. php带数据库的网页计数,php网页计数器的例子(文本与数据库)

    先来看一个简易的php计数器,代码如下: 复制代码 代码示例: //php简易计数器 function displayCounter() { $counterFile = "include/ ...

最新文章

  1. 模型预测控制c语言程序_搭建第一个程序控制电路LED灯,体会C语言的魅力
  2. vuejs 指令封装 button 加载效果_这些Vue自定义指令,让你的项目开发爽到爆
  3. VS2015快捷键使用与常见问题
  4. 银隆新能源:涉嫌诈骗财政资金过亿 孙国华等人被刑拘
  5. mysql定时器 教程_mysql定时任务
  6. DDD(Domain-Driven Design)领域驱动设计-(三)命令风暴寻找聚合
  7. [家里蹲大学数学杂志]第410期定积分难题
  8. TypeScript笔记(4)—— TypeScript中的类型注解
  9. CENTOS6.6上搭建单实例ORACLE12C
  10. kafka消息会不会丢失?为什么?看了这个你就清楚了
  11. 直播盒子的源代码怎么找
  12. 软件测试期末考试复习题
  13. 整数规划之分支定界法
  14. telnet远程登录服务器端口,Telnet服务器远程登录过程
  15. 搜狗状告腾讯拼音输入法不正当竞争索赔2051万
  16. 说话就是生产力-孙路弘讲课笔记
  17. html 图片自动滚动播放,CSS3如何实现图片滚动播放效果(附代码)_WEB前端开发...
  18. 百度电子地图自定义marker图标
  19. 海格里斯大型双层冷库建设 蔬菜水果农产品multi-storey cold store
  20. Win10下Keil5的C51和ARM共存的开发环境配置

热门文章

  1. Android的三种动画
  2. excel爬虫相关学习2:vba 爬虫相关xmlhttp
  3. 接受一个整数输入,显示所有小于或等于该数的素数
  4. 适合计算机专业学的素描,学素描的最佳年龄是多大 学素描有什么好处
  5. 微服务跨数据库联合查询_微服务架构下,解决数据库跨库查询的一些思路
  6. Java第三方工具库/包汇总
  7. Rive在Flutter开发中的基本用法
  8. 启明智显分享| 2.8寸手持中控屏应用方案
  9. mac 和华为手机互传文件
  10. 大数据解决的核心问题