使用fiter 限制登录系统人数 的程序谁有资料呢?谢谢了,给我提供一下。不用考虑同一用户登录的问题。

解决方案 »

  1.   

    每次有用户登录的时候都获取当前系统在线用户的数量package filter;import java.io.IOException;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;public class TestFilter implements Filter { public String count=null; @Override
    public void destroy() {
    System.out.println("这是在destroy方法里面。");
    } @Override
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException { System.out.println("这是在doFilter方法里面。");
                    /**
                     * 这里面可以是任何拦截执行的代码了,至于如何实现统计在线人数可以有很多种方式
                       * count不用重新赋值,因为在配置文件中已经给定了值100
                     * count 就为能够同时在线的人数,超过这个人数做出相应的处理就可以了,具体代码我就不写了 
                     */
                    //.......... //完成判断后传递过滤链 FilterChain  的 doFilter(request,response)方法
                      //此方法是必不可少的
    chain.doFilter(request, response);
    } @Override
    public void init(FilterConfig filconfig) throws ServletException {
    System.out.println("这是在init方法里面。");
    }}
    web.xml配置文件<filter>
       <filter-name>myFilter</filter-name>
       <filter-class>filter.TestFilter</filter-class>        <!-- 设置能够同时在线的人数 -->
            <init-param>
       <param-name>count</param-name>
       <param-value>100</param-value>
       </init-param>  </filter>
      <filter-mapping>
       <filter-name>myFilter</filter-name>
       <url-pattern>/*</url-pattern> <!-- 代表Filter拦截的路径 -->
      </filter-mapping>