1>过滤器实现登录过滤
package com.openlab.untils;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter(urlPatterns = "*.do",initParams = {@WebInitParam(name="driver",value = "com.mysql.jdbc.Driver")})
public class LoginFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String uri = request.getRequestURI();
if (uri.indexOf("login")!=-1){
filterChain.doFilter(servletRequest,servletResponse);
}
else {
Object users = request.getSession().getAttribute("users");
if (users!=null){
filterChain.doFilter(servletRequest,servletResponse);
}
else {
request.setAttribute("error","请先登录");
request.getRequestDispatcher("index.jsp").forward(request,response);
}
}
}
}
2>监听器,统计在线人数
package com.openlab.untils;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener, HttpSessionAttributeListener {
@Override
public void attributeAdded(HttpSessionBindingEvent se) {
String name = se.getName();
if ("users".equals(name)){
ServletContext application = se.getSession().getServletContext();
Object num = application.getAttribute("num");
if (num==null){
application.setAttribute("num",1);
}
else {
int n = Integer.parseInt(num.toString())+1;
application.setAttribute("num",n);
}
}
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext application = se.getSession().getServletContext();
Object num = application.getAttribute("num");
if (num==null){
application.setAttribute("num",1);
}
else {
int n = Integer.parseInt(num.toString())-1;
application.setAttribute("num",n);
}
}
}