ServletContext#getRequestDispatcher()添加了一个额外的斜杠,导致云服务器上出现“请求的URI与资源路径模式不匹配”​​错误

时间:2013-06-07 04:44:17

标签: java servlets spring-mvc requestdispatcher

以下spring控制器使用RequestDispatcher.forward()

将请求转发到静态JSP路径
RequestDispatcher rs = getServletContext().getRequestDispatcher("/security/html/blah.jsp");                        
try {
    rs.forward(request, response);
} catch (Exception e) { 
     e.printStackTrace();
}

代码在本地计算机上运行良好。但是当我在云服务器上部署它时,我得到一个堆栈跟踪说明

  

javax.servlet.ServletException:请求的URI   [//security/html/blah.jsp]与资源路径模式

不匹配

由于某种原因,在资源路径中添加了额外的斜杠,这导致了问题。如果我在地址栏中手动输入URL(通过删除额外的斜杠),则可以正常工作。

由于它是一个内部转发,我甚至不确定是否在本地计算机中添加了额外的斜杠,因为下面的URL(路径中有两个斜杠)在本地工作但在云服务器上不起作用

  

IP:端口/上下文//安全/ HTML / blah.jsp

我在下面的链接中看到了类似的问题(遗憾的是,没有解决方案)

http://forum.springsource.org/showthread.php?115666-Extra-leading-slash-added-by-RequestDispatcher-include()&p=382817#post382817

1 个答案:

答案 0 :(得分:-1)

您可以将leading / with getServletContext()。getContextPath()替换为使其在任何环境中都可以使用。请检查并告诉我这是否解决了您的问题。