将项目发布到was上 发现监听过滤的时候 request.getServletPath()为空 请问是什么问题引起的?

图片说明本地获取的是正常的 !本地用的weblogic 部署的
图片说明部署到was上 服务器上获取就是少了index.jsp
图片说明
这是我配置
图片说明
这是我的目录树
感谢大神的提点

本地和打包之后的路径会变化的 如果要不变 放在static或者resource中

大概was给webapp挂了filter了,你换个方法拿拿看:

 String path = request.getRequestURI().substring(request.getContextPath().length());

新增个回避方法看看:

         <servlet>
                <servlet-name>FileServlet</servlet-name>
                <servlet-class>
                        com.ibm.ws.webcontainer.servlet.SimpleFileServlet
                </servlet-class>
                <load-on-startup>1</load-on-startup>
        </servlet>

        <servlet-mapping>
                <servlet-name>FileServlet</servlet-name>
                <url-pattern>*.jsp</url-pattern>
        </servlet-mapping>

或者你urlpattern不要用/*,只去map你感兴趣的模式

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
        throws IOException, ServletException {
    try {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        String url = request.getServletPath();
        }
        filterChain.doFilter(request, response);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
   }
}

你试试我这种方式,我以前记得也是本地可以,发布到服务器上不行.是调用错了。

可能是web.xml的servlet-mapping配置引起的,不同的url-pattern配置会使request.getServletPath()的返回值不同