使用监听器实现网站历史访问量
117333440127 黄瑞生
1.创建java类实现监听器接口
package com.hrs;
import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class Count implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("会话创建");
ServletContext sc=se.getSession().getServletContext();
Object obj=sc.getAttribute("online");
if(obj==null){
sc.setAttribute("online", 1);
}else{
Integer i=(Integer) obj;
sc.setAttribute("online", i+1);
}
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("会话销毁");
ServletContext sc=se.getSession().getServletContext();
Integer i=(Integer)sc.getAttribute("online");
sc.setAttribute("online", i-1);
}
}
2.创建监听器servlet
package com.hrs.Listener;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/UserLogoutServlet")
public class Listeners extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getSession().setMaxInactiveInterval(0);
request.getSession().invalidate();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
3.jsp显示网站历史访问量
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首页</title>
</head>
<body>
在线人数:${applicationScope.online }<br>
登陆用户:${user.username }
<a href="UserLogoutServlet">退出</a>
</body>
</html>