servlet 的根 URl

2022-09-01 03:05:58

我想从其中一个 servlet 获取我的 Web 应用程序的根 URL。

如果我在“www.mydomain.com”中部署我的应用程序,我想获取像“http://www.mydomain.com”这样的根URL。

同样的事情,如果我把它部署在8080端口的本地tomcat服务器中,它应该给http://localhost:8080/myapp

谁能告诉我如何从servlet获取我的Web应用程序的根URL?

public class MyServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String rootURL="";
        //Code to get the URL where this servlet is deployed

    }
}

答案 1

您确实意识到URL客户端看到(和/或键入到他的浏览器中)并且部署您的servlet的容器所服务的URL可能非常不同?

但是,为了获得后者,您在HttpServletRequest上提供了一些方法:

  • 您可以调用 、 , 并使用适当的分隔符将它们组合在一起getScheme()getServerName()getServerPort()getContextPath()
  • 或者,您可以调用并删除并从中移除。getRequestURL()getServletPath()getPathInfo()

答案 2

此函数可帮助您从中获取基本 URL:HttpServletRequest

  public static String getBaseUrl(HttpServletRequest request) {
    String scheme = request.getScheme() + "://";
    String serverName = request.getServerName();
    String serverPort = (request.getServerPort() == 80) ? "" : ":" + request.getServerPort();
    String contextPath = request.getContextPath();
    return scheme + serverName + serverPort + contextPath;
  }

推荐