getServletContext (). getInitParameter ("contextName") не возвращает номер порта в URL - PullRequest
2 голосов
/ 14 декабря 2011

Я работаю со старыми приложениями jsp, и мы перемещаем серверы, поэтому URL-адреса изменились.Новые URL, которые нам дали, содержат номера портов - http://example.com:8686/theapp

Теперь эта строка getServletContext().getInitParameter("contextName") возвращает example/ вместо example:8686/.

Есть ли подобная функция или параметрчто я могу использовать, чтобы номер порта отображался в URL?

Ответы [ 2 ]

6 голосов
/ 14 декабря 2011

getServletContext().getInitParameter() возвращает значение <context-param> данного имени, которое жестко указано в web.xml. Это не динамическое значение. В основном вам нужно отредактировать <context-param>, о котором идет речь, чтобы обеспечить «правильное» значение.

Чтобы динамически получить номер порта текущего запроса сервлета HTTP, вам нужно вместо этого использовать HttpServletRequest#getServerPort() или HttpServletRequest#getLocalPort(), в зависимости от того, какой именно номер порта вы бы выбрали например, получить: тот, который указан в заголовке Host, или тот, который фактически использует сервер.

Обратите внимание, что вы обычно используете HttpServletRequest#getContextPath() для получения имени контекста.

0 голосов
/ 15 декабря 2011

Если вам нужен только один порт:

request.getLocalPort() or request.getServerPort()

Если вам нужен порт вместе с IP и контекстным именем:

request.getContextPath() or request.getServletPath() or request.getLocalAddr()

для получения дополнительной информации см. Ссылки ниже:

http://docs.oracle.com/javaee/1.4/api/javax/servlet/ServletRequest.html
http://www.kodejava.org/examples/211.html

...