如何以编程方式部署地址?

时间:2015-01-03 16:34:03

标签: java spring-mvc tomcat servlets path

我有以下应用程序URI结构:

ip:port/applicationName/someAction

如何以编程方式获取URI的一部分:

ip:port/applicationName/

我试过

servletContext.getContext()

但它只返回applicationName

P.S。

这是有效的

String applicationBasePath = request.getRequestURL().substring(0,request.getRequestURL().indexOf("/",request.getRequestURL().indexOf("/")+2));

和此:

request.getRequestURL().substring(0, request.getRequestURL().indexOf(request.getRequestURI()))

但我不喜欢它。

2 个答案:

答案 0 :(得分:0)

我相信您需要获得HttpServletRequest,然后您可以从getRequestURL()中提取该信息。

servlet上下文的问题仅在于您的应用程序可以访问,例如通过http://127.0.0.1/http://192.168.1.1/,如果没有完成实际请求,您就不知道。如果您可以定义任何“规范”服务器名称,则可以执行此操作,例如像这里:Getting server name during servlet initialization

即。 String serverName = getServletContext().getInitParameter("serverName");具有已定义的init参数。

答案 1 :(得分:0)

我无法编写代码而不是:

    public static String getApplicationBasePath(HttpServletRequest request) {
        String absolutePath = request.getRequestURL().toString();
        String contextPath = request.getRequestURI().toString();
        return absolutePath.substring(0,absolutePath.indexOf(contextPath));
    }