<!-- 監聽器配置 --> <listener> <listener-class>com.oracle.com.MyListener</listener-class> </listener>
配置
package com.oracle.com;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MyListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent event) {
// System.out.println("創建了");
HttpSession session = event.getSession();// 獲得Session對象
// 通過Session獲得servletcontext對象
ServletContext servletContext = session.getServletContext();
/**
* 1.獲取num值
* 2.加1
* 3.存入servletcontext
*/
Object object = servletContext.getAttribute("num");
if (object == null) {
servletContext.setAttribute("num", 1);
} else {
Object num = servletContext.getAttribute("num");
int num1 = (int) num;
servletContext.setAttribute("num", num1 + 1);
}
}
@Override
public void sessionDestroyed(HttpSessionEvent event) {
// System.out.println("銷毀了");
HttpSession session = event.getSession();// 獲得Session對象
// 通過Session獲得servletcontext對象
ServletContext servletContext = session.getServletContext();
/**
* 1.獲取num值
* 2.減1
* 3.存入servletcontext
*/
servletContext.setAttribute("num", (long) servletContext.getAttribute("num") - 1);
}
}
統計
package com.oracle.com;
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 servletDemo5 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
HttpSession session = req.getSession();// 創建Session
// session.setMaxInactiveInterval(10);//設置失效時間10秒 不是銷毀
PrintWriter writer = resp.getWriter();
ServletContext servletContext = getServletContext();
Object num = servletContext.getAttribute("num");
writer.write("在線人數:" + num);
}
}
