Java 如何从getServletContext()返回域名。getContextPath()

Java 如何从getServletContext()返回域名。getContextPath(),java,jsp,servlets,Java,Jsp,Servlets,我在一些域名ABC.com上有我的生产申请。在我的代码中,我根据一些操作将用户重定向到其他页面 response.sendRedirect(request.getServletContext().getContextPath() + "/time"); 但是通过上面的操作,它会被重定向到localhost:8080//time 但我希望它能被重定向到ABC.com/time 我该怎么做?我想到的一个简单的解决方案是,我应该为生产设置一些环境变量,而不是使用 request.getServlet

我在一些域名ABC.com上有我的生产申请。在我的代码中,我根据一些操作将用户重定向到其他页面

response.sendRedirect(request.getServletContext().getContextPath() + "/time");
但是通过上面的操作,它会被重定向到localhost:8080//time 但我希望它能被重定向到ABC.com/time

我该怎么做?我想到的一个简单的解决方案是,我应该为生产设置一些环境变量,而不是使用

request.getServletContext().getContextPath()


,我将使用环境变量值,即ABC.com

如果您确实需要访问服务器所在的域,那么环境变量方式是始终有效的唯一方式(例如,即使您的服务器前面有一个代理…

在我看来,这应该适用于您想要的域,前提是应用程序正在上述域中运行。现在,您可能正在本地主机上使用一个开发环境,这意味着servlet正在
localhost:8080
上运行,并将其作为路径传回。当您部署应用程序时,它应该可以工作

如果即使在开发环境中运行,也需要重定向到生产版本,那么应该在各种配置变量中对URL进行硬核处理。我更喜欢使用
.conf
文件并在运行时读取这些文件,因为它可以让您轻松地动态更改它们的内容

一个可能引起问题的小问题是双斜杠。路径或URL将以斜杠结尾,因此不必附加第二个路径或URL。只要做
+“time”
就足够了