1>过滤器实现登录过滤
@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>监听器,统计在线人数
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);
}
}
}