所有请求都经过Filter,但是把login.jsp和login.action也过滤掉了。
这可如何是好。

解决方案 »

  1.   

    在过滤器中做判断啊,访问login.jsp和login.action的放行啊,亲!
      

  2.   

    有道理啊亲,关键是我过滤的应该是什么  *.jsp or *.action ?
      

  3.   

    可以对上面的两个操作 添加例外
    具体可以在<filter>的<init-param>中进行配置,然后在filter实现中获取配置的例外参数,并进行判断是否进行过滤操作
    可以做形如下面的配置:
    <init-param>
    <param-name>exclusions</param-name>
    <!-- 例外添加 不需要过滤操作的接口 -->
    <param-value>/login.jsp,login.action</param-value>
      

  4.   


    那不就相当于没有过滤器了么。。只放行login.jsp和login.action这两个页面。先获得url,然后判断是不是以login.jsp或者login.action结尾,用String中的endsWith()方法。
      

  5.   


     String currentURL = request.getRequestURI();
            String targetURL = currentURL.substring(currentURL.indexOf("/", 1), currentURL.length()); if (!"/".equals(targetURL) && !"/login.jsp".equals(targetURL) && !"/login_check.jsp".equals(targetURL) && !"logout.jsp".equals(targetURL)){//filter  操作 
    }项目里面的东西,仅作参考
      

  6.   

    关键是在Filter中对额外参数的配置不会啊。亲。
      

  7.   


    一个大致例子:/**
    *过滤器初始化参数配置
    */
           <filter>
    <filter-name>过滤器名称</filter-name>
    <filter-class>
    过滤器的类路径
    </filter-class>
                     //配置出书啊参数,key、value形式
    <init-param>
                    <param-name>exclusions</param-name>
                    <!-- 例外添加 不需要过滤操作的接口 -->
                    <param-value>/login.jsp,/login.action</param-value>
    </filter>
    <filter-mapping>
    <filter-name>过滤器名称</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
    /**
         * 初始化filter,获取过滤例外参数
         * @param filterConfig filterConfig
         * @throws ServletException ServletException
         */
        public void init(FilterConfig filterConfig) throws ServletException
        {    
            FilterConfig  config = filterConfig;
            String exclu = filterConfig.getInitParameter("exclusions");
            private Set<String> exclusions = new HashSet<String>();
            if (null != exclu)
            {
                String[] exclus = exclu.split(",");
                for (int i = 0; i < exclus.length; i++)
                {
                    exclusions.add(exclus[i]);
                }
            }
        }
    取到exclusions之后就可以在具体过滤的方法里面进行验证处理了