Подтвердить что ты не робот

Как получить имя хоста (с портом), на котором находится сервлет

Я думал, что ServletContext может предоставить метод. Способ getAttribute() ServletContext предоставляет любую помощь, т.е. Есть ли имя атрибута (возможно, "хост", "порт" ), который будет полезен.

Причиной этого является то, что я хочу, чтобы мое приложение запускалось там, где оно было развернуто, и в какой-то момент я должен позволить пользователю щелкнуть ссылку, указывающую на местоположение на файловом сервере. Следовательно, мне нужно ссылаться на хост и порт и не может использовать внутреннюю ссылку.

4b9b3361

Ответ 1

ServletRequest.getServerName(...)
ServletRequest.getServerPort(...)

Ответ 2

Объект ServletRequest, который был передан вашему doGet, или метод doPost имеет методы getServerName и getServerPort, которые предоставляют эту информацию.

например,

public void doGet(ServletRequest request, ServletResponse response) {
    System.out.println("Host = " + request.getServerName());
    System.out.println("Port = " + request.getServerPort());
}

Ответ 3

Я нашел в своем старом проекте строку:

request.getHeader("host").contains("xxx")

может быть, это решение?

Ответ 4

Как упоминалось выше, хост и порт могут быть получены через запрос. С другой стороны, ServletContext невозможно предоставить информацию, поскольку приложения Java не знают о вашей среде хоста. т.е. приложение с контекстным путем "foo" (которое может быть получено ServletContext # getContextPath()) может получать запросы как с http-порта 8080, так и с порта https 8043. Ссылка: https://www.java.net/node/701934

Ответ 5

@У каждого есть хороший ответ. Но принимая схему, имя сервера и порт, затем слияние их. Существует более простой способ:

Вы можете использовать HttpServletRequest.getRequestURL и HttpServletRequest.getRequestURI.

StringBuffer url = request.getRequestURL();
String uri = request.getRequestURI();
String host = url.substring(0, url.indexOf(uri)); //result