Relative Pfade - Wo ist das Verzeichnis /

Status
Nicht offen für weitere Antworten.

bronks

Top Contributor
Wenn mein Servlet auf eine Datei zugreift und ich einen absoluten Pfad eingebe "C:/tomcat/webapps/blabla/datei.dat" dann funktioniert es.

Jetzt wäre es in meinem Fall besser einen relativen Pfad einzugeben. Aber wozu ist dieser Pfad überhaupt relativ? Wo liegt das Verzeichnis "/" ?

Ich dachte das "/" in meinem Fall "C:/tomcat/webapps/blabla" wäre.

Bitte Hilfe.

Danke!

Bronks
 
G

Guest

Gast
Siehe getServletConfig().getServletContext().getRealPath("/")
 

bronks

Top Contributor
Mit den o.g. Informationen habe ich ein paar Funktionen gebastelt, welche mir auf dem Server ein paar Bilder umformatieren, aber jetzt hakt es mächtig bei der Anzeige aus.

Bis jetzt erscheint mir die Ausgabe von .requestURL() am brauchbarsten von allen bisher gesehenen Sachen:

http://localhost:8084/WebApplication1/RelPfad

"RelPfad" ist mein gemaptes ControllerServlet. Damit meine Webapplication so läuft wie ich es mir vorstelle brauche ich eine funktion die mir folgendes ausgibt:

http://localhost:8084/WebApplication1/

Das Problem mit dem ich nicht klar komme: Die Zeichenkette vor dem letzen "/" kann je nach Standort mal länger und mal kürzer sein und das Servlet kann man auch nocht mit Parametern aufrufen.

Ich hab mich echt zamgerissen, aber konnte keine Lösung finden. Ich bin mir aber sicher, daß ich nicht der erste bin, der soetwas braucht. Bitte gebt mir einen Tip wie ich diese "RootURL" meiner Application herausfinden kann.

Danke!
 

Bleiglanz

Gesperrter Benutzer
getContextPath

public String getContextPath()

Returns the portion of the request URI that indicates the context of the request. The context path always comes first in a request URI. The path starts with a "/" character but does not end with a "/" character. For servlets in the default (root) context, this method returns "". The container does not decode this string.

Returns:
a String specifying the portion of the request URI that indicates the context of the request

musst du noch String-technisch mit

request.getRequestURL().toString();

vergleichen um den vollen KontextPfad rauszupfriemeln
 

bronks

Top Contributor
Bleiglanz hat gesagt.:
... rauszupfriemeln
Das war das Stichwort! 8)

Meine Lösung dazu:
Code:
String rootURL = request.getRequestURL().toString().substring(0, request.getRequestURL().toString().length() - request.getRequestURI().toString().length()) + request.getContextPath();

:? Wenn jemand meint, daß man es einfacher und kürzer ausdrücken kann, dann bitte her damit. :D
 
G

Guest

Gast
So vielleicht?
Code:
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getRequestURI();
oder
Code:
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben