3

下面的 spring 控制器使用将请求转发到静态 JSP 路径RequestDispatcher.forward()

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

4

1 回答 1

-1

您可以将前导 / 替换为 getServletContext().getContextPath() 以使其在任何环境中工作。请检查并让我知道这是否可以解决您的问题。

于 2013-10-11T10:43:27.717 回答