Root URl of the servlet

后端 未结 5 741
面向向阳花
面向向阳花 2020-12-03 02:49

I want to get the root url of my web application from one of the servlet.

If I deploy my application in \"www.mydomain.com\" I want to get the root url like \"http:/

相关标签:
5条回答
  • 2020-12-03 02:59

    You do realize that the URL client sees (and/or types into his browser) and the URL served by the container your servlet is deployed on can be very different?

    In order to get the latter, though, you have a few methods available on HttpServletRequest:

    • You can either call getScheme(), getServerName(), getServerPort() and getContextPath() and combine them using appropriate separators
    • OR you can call getRequestURL() and remove getServletPath() and getPathInfo() from it.
    0 讨论(0)
  • 2020-12-03 03:00

    Generally, you can't obtain the URL; but, there are workarounds for specific cases. See Finding your application’s URL with only a ServletContext

    0 讨论(0)
  • 2020-12-03 03:07
    1. Write a scriptlet in the welcome file to capture the root path. I assume index.jsp is the default file. So put the following code in that

      <% RootContextUtil rootCtx = RootContextUtil.getInstance(); if( rootCtx.getRootURL()==null ){ String url = request.getRequestURL().toString(); String uri = request.getRequestURI(); String root = url.substring( 0, url.indexOf(uri) ); rootCtx.setRootURL( root ); } %>

    2. Use this variable wherever needed within the application directly by calling the value as

    String rootUrl = RootContextUtil.getInstance().getRootURL();

    NOTE: No need to worry about protocols/ports/etc.. Hope this helps every one

    0 讨论(0)
  • 2020-12-03 03:13
    public static String getBaseUrl(HttpServletRequest request) {
        String scheme = request.getScheme();
        String host = request.getServerName();
        int port = request.getServerPort();
        String contextPath = request.getContextPath();
    
        String baseUrl = scheme + "://" + host + ((("http".equals(scheme) && port == 80) || ("https".equals(scheme) && port == 443)) ? "" : ":" + port) + contextPath;
        return baseUrl;
    }
    
    0 讨论(0)
  • 2020-12-03 03:22

    This function helps you to get your base URL from a 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;
      }
    
    0 讨论(0)
提交回复
热议问题