我有以下应用程序URI结构:
ip:port/applicationName/someAction
如何以编程方式获取URI的一部分:
ip:port/applicationName/
我试过
servletContext.getContext()
但它只返回applicationName
。
这是有效的
String applicationBasePath = request.getRequestURL().substring(0,request.getRequestURL().indexOf("/",request.getRequestURL().indexOf("/")+2));
和此:
request.getRequestURL().substring(0, request.getRequestURL().indexOf(request.getRequestURI()))
但我不喜欢它。
答案 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));
}