Java 重定向的链接路径

Java 重定向的链接路径,java,servlets,redirect,path,Java,Servlets,Redirect,Path,我试图重定向我的响应,但我在链接路径上卡住了 下面的命令将我带到tomcat的localhost,并在那里搜索页面,但正如预期的那样,它找不到任何内容 response.sendRedirect("/myPage.html"); 为了解决这个问题,我必须将我的根文件夹名(来自webaps的名称)放在链接路径中,但我认为这不是一个好主意 response.sendRedirect("/mySite/myPage.html"); 为什么会这样?除了getRequestURL()或类似的方法之外,

我试图重定向我的响应,但我在链接路径上卡住了

下面的命令将我带到tomcat的localhost,并在那里搜索页面,但正如预期的那样,它找不到任何内容

response.sendRedirect("/myPage.html");
为了解决这个问题,我必须将我的根文件夹名(来自webaps的名称)放在链接路径中,但我认为这不是一个好主意

response.sendRedirect("/mySite/myPage.html");

为什么会这样?除了getRequestURL()或类似的方法之外,还有其他方法可以解决此问题吗?

相对重定向URL是相对于当前请求URL(您在浏览器地址栏中看到的URL)的。前导的
/
将带您到域根目录。这种行为是完全可以预测和正常的。如果
myPage.html
与当前请求URL位于同一文件夹中,则您只需删除前导的
/

response.sendRedirect("myPage.html");
或者,如果由于当前请求URL可能来自Web应用程序中的任何位置,因此无法可靠地预测,则只需动态包含上下文路径:

response.sendRedirect(request.getContextPath() + "/myPage.html");

非常感谢你!我猜第二种方法,将其与上下文路径一起使用,被认为是良好的实践,对吗?是的,这样您不需要硬编码上下文路径,也不需要担心传入请求URL的路径与重定向URL的相对性。