2010-04-07 18 views
37

Myślałem, że ServletContext może dostarczyć metodę. Czy metoda getAttribute() ServletContext zapewnia jakąkolwiek pomoc, tj. Czy istnieje nazwa atrybutu (może "host", "port"), która będzie pomocna.Jak mogę uzyskać nazwę hosta (z portem), że serwlet jest pod adresem

Powodem tego jest to, że chcę, aby moja aplikacja działała bez względu na miejsce jej wdrożenia. W pewnym momencie muszę zezwolić użytkownikowi na kliknięcie łącza wskazującego lokalizację na serwerze plików. Dlatego muszę się odwoływać do hosta i portu i nie mogę używać wewnętrznego odwołania.

Odpowiedz

51
ServletRequest.getServerName(...) 
ServletRequest.getServerPort(...) 
+0

To już nie działa. Wciąż się dowiem, jak to zrobić teraz. –

14

ServletRequest obiekt, który został przekazany do doGet lub doPost metoda ma getServerName i getServerPort metod dostarczania tych informacji.

np

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

Aby uzyskać adres URL: 'request.getServerName() +": "+ request.getServerPort();' –

3

znalazłem w moim starym projekcie ciągu:

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

może to jest rozwiązanie?

2

Jak wspomniano powyżej, host i port można odzyskać na żądanie. Z drugiej strony niemożliwe jest podanie informacji o ServletContext, ponieważ aplikacje java nie są świadome środowiska hosta. czyli wniosek ze ścieżką kontekstu „foo” (które mogą być pobierane przez ServletContext # getContextPath()) może otrzymać wnioski zarówno z portu http 8080 i port https 8043. Kod: https://web.archive.org/web/20120401225136/http://www.java.net:80/node/701934

+0

FYI, Link już nie działa – Stormcloud

2

@Everyone ma dobrej odpowiedzi . Ale biorąc schemat, nazwę serwera i port, a następnie połączyć je. Jest prostszy sposób:

Można użyć HttpServletRequest.getRequestURL i HttpServletRequest.getRequestURI.

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