Servlet 实现访问量的统计小案例

  今天学习了Servlet的基础知识,学习了一个统计访问量的小案例,记录一下

package cn.selevet_01;

import java.io.IOException;
import java.io.InputStream;
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 Servlet extends HttpServlet {


	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

	 ServletContext sc = this.getServletContext();
	    Integer ct=(Integer)sc.getAttribute("count");
	    if(ct==null)
	    {
	    	sc.setAttribute("count", 1);
	    }
	    else{
	    	sc.setAttribute("count", ct+1);
	    }
	    System.out.println("访问量为:"+sc.getAttribute("count"));
	}


}


好的,我可以帮您回答这个问题。要实现在线访问量统计,您可以使用Listener来监听每个请求的到达。具体做法如下: 1. 创建一个Listener类,实现javax.servlet.ServletRequestListener接口,实现以下两个方法: ``` public class MyRequestListener implements ServletRequestListener { // 请求到达时调用 public void requestInitialized(ServletRequestEvent event) { // 在线访问量+1 // 从ServletContext中获取在线访问量计数器对象 ServletContext servletContext = event.getServletContext(); AtomicInteger onlineCount = (AtomicInteger)servletContext.getAttribute("onlineCount"); // 计数器+1 onlineCount.incrementAndGet(); } // 请求销毁时调用 public void requestDestroyed(ServletRequestEvent event) { // do nothing } } ``` 2. 在web.xml中配置Listener: ``` <listener> <listener-class>com.example.MyRequestListener</listener-class> </listener> ``` 3. 在ServletContext中初始化在线访问量计数器: ``` public class MyServletContextListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { // 初始化在线访问量计数器 ServletContext servletContext = event.getServletContext(); servletContext.setAttribute("onlineCount", new AtomicInteger(0)); } public void contextDestroyed(ServletContextEvent event) { // do nothing } } ``` 4. 在web.xml中配置ServletContextListener: ``` <listener> <listener-class>com.example.MyServletContextListener</listener-class> </listener> ``` 这样,每当有请求到达时,MyRequestListener中的requestInitialized方法就会被调用,从而实现了在线访问量统计。您可以在ServletContext中获取在线访问量计数器对象,通过它来获取当前在线访问量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值