以下spring控制器使用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
我在下面的链接中看到了类似的问题(遗憾的是,没有解决方案)
答案 0 :(得分:-1)
您可以将leading / with getServletContext()。getContextPath()替换为使其在任何环境中都可以使用。请检查并告诉我这是否解决了您的问题。