How to get only part of URL from HttpServletRequest?

前端 未结 5 1955
花落未央
花落未央 2020-12-31 02:05

From the following URL I need to get (http://localhost:9090/dts) alone.
That is I need to remove (documents/savedoc) (OR)
need to get on

5条回答
  •  南笙
    南笙 (楼主)
    2020-12-31 02:33

    You say you want to get exactly:

    http://localhost:9090/dts
    

    In your case, the above string consist of:
    1) scheme: http
    2) server host name: localhost
    3) server port: 9090
    4) context path: dts

    (More info about the elements of a request path can be found in the official Oracle Java EE Tutorial: Getting Information from Requests)

    First variant:

    String scheme = request.getScheme();
    String serverName = request.getServerName();
    int serverPort = request.getServerPort();
    String contextPath = request.getContextPath();  // includes leading forward slash
    
    String resultPath = scheme + "://" + serverName + ":" + serverPort + contextPath;
    System.out.println("Result path: " + resultPath);
    


    Second variant:

    String scheme = request.getScheme();
    String host = request.getHeader("Host");        // includes server name and server port
    String contextPath = request.getContextPath();  // includes leading forward slash
    
    String resultPath = scheme + "://" + host + contextPath;
    System.out.println("Result path: " + resultPath);
    

    Both variants will give you what you wanted: http://localhost:9090/dts

    Of course there are others variants, like others already wrote ...

    It's just in your original question you asked about how to get http://localhost:9090/dts, i.e. you want your path to include scheme.

    In case you still doesn't need a scheme, the quick way is:

    String resultPath = request.getHeader("Host") + request.getContextPath();
    

    And you'll get (in your case): localhost:9090/dts

提交回复
热议问题