# Relativer Pfad in jsp



## Samson_Miller (7. Mai 2007)

Ich möchte in einer JSP alle Verzeichnisse auflisten die in dem Ordner sind, in dem auch die .jsp datei ist. Dazu benutze ich die Klasse java.io.File. Nur leider kann ich da keinen Relativen Pfad angeben nur Absolute. Wie kann ich denn mit relativen Pfaden da arbeiten?


----------



## SlaterB (7. Mai 2007)

> Nur leider kann ich da keinen Relativen Pfad angeben nur Absolute.

inwiefern, gibts eine Exception "du darfst keinen relativen Pfad angeben"? 


new File("test.txt");
oder
new File("/test.txt");
oder
new File("./test.txt");
jedenfalls alles (äh, vieles) ohne "c: /" am Anfang


----------



## Samson_Miller (7. Mai 2007)

In dem Ornder in dem sich die JSP befindet, ist ebenfalls noch einer Ordner "image". Ich möchte jetzt gerne wissen welche Ordner sich alle in diesem "image" Ordner befinden.
Wenn ich in der jsp schreibe:

File file = new File("image");

dann bekomme ich als ausgabe mit "file.getAbsolutePath()": C:\WINDOWS\system32\image

Wobei das nicht der Absolute Pfad ist.

Bei 
File file = new File("/image");

bekomme ich als ausgabe mit "file.getAbsolutePath()": C:\image

Und bei

File file = new File("./image");

bekomme ich als ausgabe mit "file.getAbsolutePath()": C:\WINDOWS\system32\.\image


----------



## JPKI (7. Mai 2007)

*OHNE GARANTIE:* Versuch's doch mal mit

```
File file = new File(getClass().getResource("irgendEineBekannteDateiAusDemOrdner.inDemAuchDieJSPDateiIst").toString()).getParent();
```


----------



## kleiner_held (7. Mai 2007)

ich wuerde folgendes probieren:

```
<%= application.getResource("/image"); %>
```
bin mir aber auch nicht sicher ob das der richtige weg ist.

Edit:
Zum Auflisten koennte man auch folgendes verwenden: ServletContext.html#getResourcePaths(java.lang.String)
Der ServletContext ist in deiner JSP durch die vorbelegte Variable application ansprechbar, siehe auch: Java Insel: Kapitel 17.4 Implizite Objekte


----------



## Samson_Miller (7. Mai 2007)

Mit dem getResource bekomme schon den Pfad des requestes. Aber damit kann ich noch nicht arbeiten, denn wenn ich sage:


```
File file = new File(request.getServletPath());
<%= file.lastModified() %>
```


Dann bekomme ich als Ausgabe eine 0; Wenn ich file ausgeben lasse dann bekomme ich /JSP/homepage/bilder/bilder.jsp, alles was hinter localhost:8080 steht. Wenn ich dann sage


```
file.getAbsolutePath();
```

Dann bekomme ich C:\JSP\homepage\bilder\bilder.jsp

was nicht richtig ist.


----------



## kleiner_held (7. Mai 2007)

Ich galube mit File() Objekten wirst du innerhalb der JSP Seite nicht sinvoll arbeiten koennen.
Du kannst aber ein Directory-Listing innerhalb deines Web-Root mittels getResourcePaths(String) improvisieren, wobei Dir dann weitergehende Informationen (Dateigroesse, Last-Modified-Date) verborgen bleiben.
Da es nicht vorgeschrieben ist, dass ein Servlet-Container die Daten einer Web-App im Datei-System ablegen muss (er kann die z.B: im WAR lassen oder direkt im Speicher halten) sind File Zugriffe nicht moeglich.
Ich hab aber ne Weile nix mehr mit JSP gemacht, ich will also nicht ausschliessen, das es da etwas gibt was ich (noch) nicht kenne.


----------

