package com.qiku.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebFilter(filterName ="loginFilter",urlPatterns="/index.*")
public class loginFilter implements Filter {
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws ServletException, IOException {
HttpServletRequest request=(HttpServletRequest) servletRequest;
HttpSession session = request.getSession();
Object user = session.getAttribute("user");
String servletPath=request.getServletPath();
if (user==null&&!servletPath.contains("login")){
RequestDispatcher requestDispatcher=request.getRequestDispatcher("login.jsp");
requestDispatcher.forward(servletRequest,servletResponse);
}else {
filterChain.doFilter(servletRequest,servletResponse);
}
}
}
package com.qiku.filter;
import com.qiku.entiy.User;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.*;
import java.util.HashMap;
import java.util.Map;
public class UserLoginLisetener implements HttpSessionAttributeListener, ServletContextListener {
private ServletContext servletContext=null;
@Override
public void contextInitialized(ServletContextEvent sce) {
servletContext=sce.getServletContext();
Map<String,Integer>userMap=new HashMap<>();
servletContext.setAttribute("userMap",userMap);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
servletContext=null;
}
@Override
public void attributeAdded(HttpSessionBindingEvent se) {
if (se.getName().equals("user")){
System.out.println("新用户登录了。。。");
HttpSession session = se.getSession();
User user = (User)session.getAttribute("user");
String username=user.getUsername();
Map<String,Integer>userMap=(Map)servletContext.getAttribute("userMap");
if (userMap.get(username)==null){
userMap.put(username,1);
}else {
userMap.put(username,userMap.get(username)+1);
}
}
}
@Override
public void attributeRemoved(HttpSessionBindingEvent se) {
System.out.println("删除了属性:"+se.getName());
}
@Override
public void attributeReplaced(HttpSessionBindingEvent se) {
System.out.println("修改了属性:"+se.getName());
}
}