//过滤器类 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的相对路径
//判断路径,如果是登陆的那个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,从而实现当关闭服务的时候,把文件保存在磁盘中。下次从磁盘中读取。
相关推荐
jsp网页计数器,使用session和application刷新不重复计数,数字替换成图片,没有附加图片,图片自己网上下载,代码里有相应的逻辑处理。不要直接抄,很粗劣,给大家做个参考,祝学习顺利!
**JSP网页计数器**是基于Java和JSP技术实现的一种动态网页元素,用于统计访问者在特定网页上的访问次数。它可以帮助网站管理员了解页面的受欢迎程度,从而优化网站内容或调整营销策略。以下是对这个主题的详细阐述:...
总的来说,这个JSP网页计数器示例展示了如何利用Servlet过滤器来实现一个简单的访问统计功能。它可以帮助开发者了解过滤器的工作原理以及如何在实际项目中应用。通过扩展这个示例,可以实现更复杂的统计功能,如按...
这篇博客“jsp实现网页计数器(防刷新计数和防刷新单用户计数)”主要探讨了如何使用JavaServer Pages (JSP) 技术来创建一个能够抵御刷新干扰的计数器,并且考虑到了单个用户的多次访问情况。以下是对这个主题的详细...
为了防止恶意灌水,计数器采用取用户的session id作为计数标准。。在半个小时内,同一个浏览器登陆都不会计数。。
JSP(Java Server Pages)是一种基于Java的技术,用于创建动态网页。通过将HTML代码与Java代码相结合,JSP能够实现动态内容的生成,非常适合构建交互式网站。计数器作为一种常见的网站功能,主要用于统计访问次数,...
网页计数器是一种常见于早期网页设计中的功能,用于记录并显示访问某个页面的独立访客数量。在“counterDemo.zip”这个项目中,我们将会探讨如何使用JSP(Java Server Pages)技术来实现这样的计数器,同时利用JSP...
jsp网页浏览量计数器 jsp网页浏览量计数器是使用Java Servlet和JSP技术实现的网页浏览量计数器。该计数器可以纪录某个网页的浏览量,并且可以实时更新浏览次数。 计数器原理 该计数器的原理是使用文件来存储浏览...
JSP(Java Server Pages)是一种基于Java技术的服务器端脚本语言,允许将动态内容嵌入到静态网页中。JSP页面通常包含了HTML、XML标记以及Java代码片段,这些代码片段可以在服务器上执行,从而生成动态的内容,再将...
**JSP图片计数器**是一种在Web应用中常见的技术,用于实时统计页面访问量或者用户行为次数。基于Eclipse实现的图片计数器利用JavaServer Pages(JSP)技术,能够动态生成带有访问计数的图片。这种计数器不仅能够记录...
"jsp刷新不变计数器"指的是在使用JavaServer Pages (JSP)技术构建的网页中,实现的一种即使页面被刷新,计数也不会增加的计数器机制。这种计数器的设计目的是为了确保每次实际的独立访问被准确地记录,而不会因为...
JSP计数器是一种动态生成的网页元素,它能够随着每个用户请求自增,从而统计页面的访问次数。计数器通常通过存储在服务器端的变量来实现,每次请求时更新这个变量,并将其显示在页面上。 ### JSP计数器的工作原理 ...
JSP是一种服务器端脚本语言,它允许在HTML文档中嵌入Java代码,从而创建动态网页。这种技术结合了HTML标记和Java编程能力,使得开发者能够轻松地生成动态内容,并与后端数据库进行交互。 #### JSP计数器的核心概念 ...
在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它是基于Java平台的。JSP使得开发者能够将静态HTML与动态Java代码结合在一起,以实现更复杂的Web应用程序。下面我们将深入探讨如何利用JSP来制作...
在JavaServer Pages (JSP) 技术中,计数器是一种常见的应用场景,它用于跟踪网页的访问次数或实现其他类似的功能。计数器能够帮助我们了解网站的活跃度,为数据分析提供基础数据。在本篇文章中,我们将探讨四种不同...
网页访问计数器是一种常见的网站功能,用于统计网站或网页被访问的次数。在Web开发中,实现这样一个计数器可以让我们了解网站的活跃度,分析用户行为,从而优化网站内容和服务。本教程将详细介绍如何使用Action访问...
- **HTML展示**:计数器的值需要在网页上展示,这可以通过JSP的表达式(Expression)或者EL(Expression Language)来完成。 4. **JDBC与数据库连接**: 如果使用数据库来存储计数器值,你需要在JSP中配置JDBC...