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

StackOverflow https://stackoverflow.com/questions/2591135

  •  25-09-2019
  •  | 
  •  

Вопрос

Я думал, что сервлек может предоставить метод. Поддается ли метод GetAttribute () ServletContext предложит любую помощь IE, есть ли имя атрибута (может быть, «хозяин», «порт»), который будет помощь.

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

Это было полезно?

Решение

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

Другие советы

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

например

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

@Everyone имеет хороший ответ. Но принимая схему, имя сервера и порт, затем Mergin их. Есть более простой способ:

Вы можете использовать Httpservletrequest.getrequesturl. а также Httpservletrequest.getrequesturi.

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

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

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

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

Как упомянутые выше другие, хост и порт может быть получен через запрос. С другой стороны, для сервета невозможно предоставить информацию, поскольку приложения Java не знают о вашей среде Host. Т.е. приложение с контекстным путем «FOO» (который может быть получен сервлетконтестом # getContextPath ()) может принимать запросы как из HTTP Port 8080, так и порта 8043 HTTPS. Ссылка: https://web.archive.org/web/20120401225136/http://www.java.net:80/node/701934.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top