test是你的一个应用程序,还是一个应用程序中的子文件夹呀??

解决方案 »

  1.   

    如下是过滤器类:
    package filters;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;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServletRequest;public class URLFilter implements Filter
    {
        private FilterConfig config;
        protected final static String ALLOW_URI = "/test/login_init.do";
        public void init(FilterConfig config)
        {
            this.config = config;
        }
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException,ServletException
        {
            HttpServletRequest httpRequest = (HttpServletRequest)request;
            HttpServletResponse httpResponse = (HttpServletResponse)response;
            String uri = httpRequest.getServletPath();
            if(uri.endsWith(".do"))
            {
                if(uri.equals(ALLOW_URI))
                {
                    chain.doFilter(request, httpResponse);
                    return;
                }
                httpResponse.setStatus(HttpServletResponse.SC_NOT_FOUND);//返回状态码404,未找到请求对象
            }
            chain.doFilter(request, httpResponse);
        }
        public void destroy()
        {
        }
    }
    在web.xml中再加入如下配置:
      <filter>
        <filter-name>URLFilter</filter-name>
        <description>only /test/login_init.do</description>
        <filter-class>filters.URLFilter</filter-class>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>GBK</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>URLFilter</filter-name>
        <url-pattern>/test/*</url-pattern>
      </filter-mapping>
      

  2.   

    test是我的一个应用程序根目录,我发现用以上的方法把所以.do都屏蔽了.是何原因
      

  3.   

    httpResponse.setStatus(HttpServletResponse.SC_NOT_FOUND);//返回状态码404,未找到请求对象
    我不想返回状态码404,未找到请求对象
    , 想让它返回到程序的入口(login_init.do).可以吗?
      

  4.   

    把httpResponse.setStatus(HttpServletResponse.SC_NOT_FOUND);改成:
    response.sendRedirect("login_init.do")即可
      

  5.   

    既然test是应用程序,改正如下:
    package filters;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;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServletRequest;public class URLFilter implements Filter
    {
        private FilterConfig config;
        protected final static String ALLOW_URI = "/login_init.do";
        public void init(FilterConfig config)
        {
            this.config = config;
        }
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException,ServletException
        {
            HttpServletRequest httpRequest = (HttpServletRequest)request;
            HttpServletResponse httpResponse = (HttpServletResponse)response;
            String uri = httpRequest.getServletPath();
            if(uri.endsWith(".do"))
            {
                if(uri.equals(ALLOW_URI))
                {
                    chain.doFilter(request, httpResponse);
                    return;
                }
                config.getServletContext().getNamedDispatcher("login_init.do").forward(request, response);////login_init.do为<servlet-name>
            }
            chain.doFilter(request, httpResponse);
        }
        public void destroy()
        {
        }
    }
    在web.xml中再加入如下配置:
      <filter>
        <filter-name>URLFilter</filter-name>
        <description>only /test/login_init.do</description>
        <filter-class>filters.URLFilter</filter-class>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>GBK</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>URLFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      

  6.   

    不应该这么配置的,应该是:
      <filter>
        <filter-name>URLFilter</filter-name>
        <description>only /login_init.do</description>
        <filter-class>filters.URLFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>URLFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      

  7.   

    这样处理,只有login_init.do可以,其它的不行,但正系统正常进入时,其它的也打不开.请指点.在线等.
    谢谢