实现访问用户数的统计,本质上就是统计启动过多少新的会话,因为一个用户访问Web服务器可能有很多次,但是会话只有一次,利用会话监听器就可以很好的达到目的,然后再把这个数字变量保存在Servlet上下文中,最后提供一个Servlet来打印这个数字。
监听类:
/********************************
* @Dream_EarFire
********************************/
package com.dream.javaweb;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionCountListener implements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
// TODO Auto-generated method stub
HttpSession session=httpSessionEvent.getSession();
ServletContext application =session.getServletContext();
Integer count=(Integer)application.getAttribute("count");
if(count==null)
count=0;
count++;
application.setAttribute("count", count);
}
@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
// TODO Auto-generated method stub
//会话销毁时什么也不做
}
}
显示访问用户数:
/********************************
* @Dream_EarFire
********************************/
package com.dream.javaweb;
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;
import javax.servlet.http.HttpSession;
public class ShowServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
doPost(request,response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
response.setContentType("text/html;charset=utf-8");
HttpSession session=request.getSession();
ServletContext application=session.getServletContext();
PrintWriter out=response.getWriter();
out.println("<html>");
out.println("<head><title>A Servlet</title></head><body>");
out.println("已经有 "+application.getAttribute("count")+" 位用户访问本Web网站了");
out.println("</body>");
out.println("</html>");
out.flush();
out.close();
}
}
web.xml配置
<listener>
<listener-class>com.dream.javaweb.SessionCountListener</listener-class>
</listener>
<servlet>
<servlet-name>ShowServlet</servlet-name>
<servlet-class>com.dream.javaweb.ShowServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShowServlet</servlet-name>
<url-pattern>/ShowServlet</url-pattern>
</servlet-mapping>