# Relative Pfade - Wo ist das Verzeichnis /



## bronks (23. Dez 2004)

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


----------



## Guest (24. Dez 2004)

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


----------



## bronks (26. Dez 2004)

@Gast:
Danke! So etwas einfach, aber wissen muß man es halt.


----------



## bronks (28. Dez 2004)

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 (28. Dez 2004)

> getContextPath
> 
> public String getContextPath()
> 
> ...



musst du noch String-technisch mit 



> request.getRequestURL().toString();



vergleichen um den vollen KontextPfad rauszupfriemeln


----------



## bronks (28. Dez 2004)

Bleiglanz hat gesagt.:
			
		

> ... rauszupfriemeln


Das war das Stichwort!  8) 

Meine Lösung dazu:

```
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.


----------



## Guest (28. Dez 2004)

So vielleicht?

```
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getRequestURI();
```
oder
	
	
	
	





```
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
```


----------

