拦截
package com.nnxy.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@WebFilter(filterName = "LoginFilter",urlPatterns = "*.jsp")
public class LoginFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
Object user = request.getSession().getAttribute("user");
String servletPath = request.getServletPath();
if (user == null && !servletPath.contains("login")){
request.getRequestDispatcher("login.jsp").forward(servletRequest,servletResponse);
}else{
filterChain.doFilter(servletRequest,servletResponse);
}
}
}
统计在线人数
package com.nnxy.listenter;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class OnlineUser implements HttpSessionListener, ServletContextListener {
private ServletContext servletContext = null;
@Override
public void contextInitialized(ServletContextEvent sce) {
servletContext = sce.getServletContext();
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
servletContext = null;
}
@Override
public void sessionCreated(HttpSessionEvent se) {
Object count = servletContext.getAttribute("count");
if(count==null){
servletContext.setAttribute("count",1);
}else {
Integer number = (Integer) count;
number++;
servletContext.setAttribute("count",number);
}
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
HttpSessionListener.super.sessionDestroyed(se);
}
}
统计在线人数
<%--
Created by IntelliJ IDEA.
User: nnxy
Date: 2022/5/18
Time: 23:46
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>在线人数</title>
<style>
div{
font-size: 100px;
color: green;
background-color: pink;
}
</style>
</head>
<body>
<div>
在线人数:${applicationScope.count}
</div>
</body>
</html>