如何以编程方式获取部署地址?
How to get deployed address programmatically?
我有以下应用程序 URI 结构:
ip:port/applicationName/someAction
如何以编程方式获取 URI 的以下部分:
ip:port/applicationName/
我试过了
servletContext.getContext()
但它 returns 仅 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()))
但是我不喜欢。
我相信您需要获取 HttpServletRequest
,然后您可以从 getRequestURL()
中提取该信息。
servlet 上下文的问题仅在于您的应用程序可以访问,例如通过 http://127.0.0.1/
或 http://192.168.1.1/
,如果没有完成实际请求,您将不知道这一点。如果你可以定义任何 "canonical" 服务器名称,你可以这样做,例如喜欢这里:Getting server name during servlet initialization
即。 String serverName = getServletContext().getInitParameter("serverName");
定义了初始参数。
我不能写出比以下更好的代码:
public static String getApplicationBasePath(HttpServletRequest request) {
String absolutePath = request.getRequestURL().toString();
String contextPath = request.getRequestURI().toString();
return absolutePath.substring(0,absolutePath.indexOf(contextPath));
}
我有以下应用程序 URI 结构:
ip:port/applicationName/someAction
如何以编程方式获取 URI 的以下部分:
ip:port/applicationName/
我试过了
servletContext.getContext()
但它 returns 仅 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()))
但是我不喜欢。
我相信您需要获取 HttpServletRequest
,然后您可以从 getRequestURL()
中提取该信息。
servlet 上下文的问题仅在于您的应用程序可以访问,例如通过 http://127.0.0.1/
或 http://192.168.1.1/
,如果没有完成实际请求,您将不知道这一点。如果你可以定义任何 "canonical" 服务器名称,你可以这样做,例如喜欢这里:Getting server name during servlet initialization
即。 String serverName = getServletContext().getInitParameter("serverName");
定义了初始参数。
我不能写出比以下更好的代码:
public static String getApplicationBasePath(HttpServletRequest request) {
String absolutePath = request.getRequestURL().toString();
String contextPath = request.getRequestURI().toString();
return absolutePath.substring(0,absolutePath.indexOf(contextPath));
}