我们知道一个Web应用程序只有一个ServletContext对象,而且该对象可以被Web应用程序中的所有Servlet所访问,因此使用ServletContext对象来保存一些需要在Web应用程序中共享的信息是再合适不过了。
要在ServletContext对象中保存共享信息,可以调用该对象的setAttribute()方法,要获取共享信息,可以调用该对象的getAttribute()方法。针对本例,我们可以调用setAttribute()方法将访问计数保存到上下文对象中,新增一次访问时,调用getAttribute()方法从上下文对象中取出访问计数加1,然后再调用setAttribute()方法保存回上下文对象中。
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CounterServlet extends HttpServlet
{
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
ServletContext context = getServletContext();
Integer count = null;
synchronized(context)
{
count = (Integer) context.getAttribute("counter");
if (null == count)
{
count = new Integer(1);
}
else
{
count = new Integer(count.intValue() + 1);
}
context.setAttribute("counter", count);
}
resp.setContentType("text/html;charset=gb2312");
PrintWriter out = resp.getWriter();
out.println("<html><head>");
out.println("<title>页面访问统计</title>");
out.println("</head><body>");
out.println("该页面已被访问了" + "<b>" + count + "</b>" + "次");
out.println("</body></html>");
out.close();
}
}
另外还需要注意的是,访问次数在重启Tomcat服务器后,将重新从1开始,为了永久保存
访问次数,可以将这个值保存到文件或数据库中。
分享到:
相关推荐
页面访问量统计实例通过利用`ServletContext`的`setAttribute()`和`getAttribute()`方法来实现对页面访问次数的记录与更新。当页面被首次访问时,会在`ServletContext`中设置一个名为"counter"的属性,其初始值为1;...
从文件列表来看,`index.jsp`很可能是用来展示访问统计结果的页面,可能包含HTML和JSP语法,用于渲染访问量。`WEB-INF`目录下通常存放Servlet配置文件`web.xml`,在这里可以定义Servlet的映射和初始化参数。而`META-...
5. 考虑到性能和内存占用,可能需要定期清理过期的Session,以及在适当的时候清零或保存访问统计数据。 通过这个作业,学生可以学习到如何在实际开发中使用Session和Application,理解它们的区别和应用场景,同时也...
2. **在线人数统计页面`Online.jsp`**: ```jsp ;charset=gb2312" %> *" %> 用户名: 登陆"> 注销 (request.getParameter("name") != null) { session.setAttribute("uname", request.getParameter(...
3. **历史访问量**:虽然示例代码中没有直接涉及历史访问量的统计,但通常我们可以将每次用户访问的记录保存到数据库或日志文件中,例如每当用户触发一个页面请求,就在数据库中增加一条记录。然后可以通过查询这些...
在本文中,我们将深入探讨Java EE(J2EE)中的Servlet监听器以及它们在Web应用程序中的作用,特别是在访问人数统计和引入MVC模式方面。首先,让我们了解什么是Servlet监听器。 Servlet监听器是Java Servlet规范的一...
综上所述,“用户统计JavaWeb”涉及到了多个方面的技术和方法,包括使用Filter和Listener来监控用户的登录状态、通过HttpSession存储用户信息、以及利用ServletContext来实现全局数据共享等。通过这些技术和方法的...
统计流量通常包括访问次数、独立访客数、页面浏览量、平均停留时间等指标。在Servlet中,可以利用HttpSession的事件监听器,记录每次session的创建和销毁,以此推算出在线用户和总访问量。例如,每当sessionCreated...
JSP计数器是一种动态生成的网页元素,它能够随着每个用户请求自增,从而统计页面的访问次数。计数器通常通过存储在服务器端的变量来实现,每次请求时更新这个变量,并将其显示在页面上。 ### JSP计数器的工作原理 ...
《JavaWeb 程序开发入门》课后练习(含答案) ...* 使用 ServletContext 保存和读取参数信息 《JavaWeb 程序开发入门》课后练习(含答案)涵盖了 JavaWeb 开发的基础知识和实践经验,帮助学习者掌握 JavaWeb 开发的技能。
9. 使用ServletContextListener监听器统计页面访问和在线用户信息。 代码示例(登录Servlet简化版): ```java package javaee.ch04; import javax.servlet.*; import javax.servlet.http.*; import java.io....
它通常用于保存跨多个用户会话的配置信息或统计数据。 7. **config配置对象** - **类型**:`javax.servlet.ServletConfig` - **作用域**:`page` - **描述**:`config`对象包含了初始化参数,这些参数是在web....
开发者可以使用它来保存需要在多个请求之间持久化的数据,比如统计在线用户数或全局配置信息。 3. **Java Servlets中的ServletContext**: 对应于Java Web开发,"application"的概念体现在ServletContext接口中,...
5. **Application对象**:与ServletContext类似,但通常用于在整个应用生命周期内共享数据,如统计在线用户数量。 6. **文件系统或数据库**:如果需要长期存储或跨应用共享数据,可以将数据保存在文件系统或数据库...
在线人数统计是网站运营中常见的需求,用于了解网站的...总之,这个案例提供了一个简单的在线人数统计方法,使用了Servlet API中的监听器来跟踪session的状态。在实际应用中,还需要根据项目需求进行相应的优化和扩展。
- **应用场景**:例如,统计网站访问人数、保存系统级别的配置信息等。 #### 十四、Web应用配置文件详解 - **web.xml**:Web应用的核心配置文件,用于定义应用上下文、Servlet映射、过滤器等。 - **配置项**:可以...
- **统计信息**: 记录应用程序的访问次数、在线人数等统计数据。 **生命周期**: - 开始: 当服务器启动并加载应用程序时。 - 结束: 当服务器关闭或应用程序卸载时。 **示例代码**: ```csharp // 设置Application...
它提供了一种方式来访问其他JSP内置对象,并且可以用来设置或获取与页面相关的属性。 示例代码: ```jsp ("username", "JohnDoe"); %> ("username") %> ``` 2. **`request`**: 当一个客户端发送HTTP请求到...
- 介绍了实现访问计数功能的基本步骤,包括创建 Servlet 类、在 doGet 或 doPost 方法中增加计数逻辑、使用 ServletContext 来保存计数信息等。 - **实践意义**: - 访问计数是一个常见的需求,掌握其实现方法...
`pageContext`对象提供了一个界面,可以通过它访问JSP页面中的所有对象。它还可以用来获取页面中的session、application等对象的属性,或者执行页面跳转操作。例如,页面内部跳转: ```java pageContext.forward(...