我有以下应用程序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()))


但是我不喜欢。

最佳答案

我相信您需要获取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参数。

10-06 07:00