# request.contextPath in Java-Klasse ausführen



## Donar (27. Okt 2008)

Hallo ihr lieben,

ich würde gern folgende Codezeile aus JSP auch in einer Java Bean ausführen: ${pageContext.request.contextPath} .

Ziel ist es, den aktuellen Pfad vor einen String zu bekommen. Leider sagt mir NetBeans IDE, dass er die Symbole request und contextPath nicht finden kann. Hier mein Test:

```
sb.append(request.contextPath + "/web/img/testbild.jpg\" ");
```
Auch folgende Zeile funktioniert nicht (Package pageContext does not exist):

```
sb.append(pageContext.request.contextPath + "/web/img/testbild.jpg\" ");
```

Was muss ich importieren oder wie muss ich die Seitenabfrage richtig schreiben?


----------



## maki (27. Okt 2008)

mit request.getRealPath("Pfad") zB.


```
sb.append(...
```
Wozu soll denn das gut sein?

Du bastelst aber nicht gerade HTML Seiten in Servlets, oder?


----------



## Donar (27. Okt 2008)

Hallo maki,

ja, ich bau mir gerade ein paar html Codezeilen in einem Servlet zusammen. Ich weiß auch, dass du mir gesagt hast, dass ich das nicht machen sollte. Das Problem ist, dass ich nicht mehr viel Zeit habe, das Projekt abzugeben (ist für das Studium) - nämlich genau noch eine Woche, in der ich auch Vorlesungen besuchen muss. 

Ich habe die letzten Tage, wie du weißt, hier im Forum zugebracht und zudem noch mehrere Bücher zum Thema Servlets und JSP gelesen. In den Büchern (Core Servlets und JSP (M. Hall) und Java Server Pages (Turau)) sind nur Beispiele, bei denen im Servlet html Code generiert wird. 

Da ich aber auch Daten aus der Datenbank abfragen muss, weiß ich nicht wie ich es besser machen kann. Dh. ich muss die Seiten erstmal so hinbekommen, dass sie funktionieren. Später - selbst wenn ich gefahr laufe, dass ich dadurch Mehraufwand habe - kann ich es dann immer noch besser machen. Deine Tips sind daher nicht unnütz.

Zu Deiner Antwort: 
Beim Kompilieren wird gesagt, dass er die Symbole request und getRealPath nicht finden kann. Muss ich vorher noch etwas importieren?


----------



## maki (27. Okt 2008)

>> Beim Kompilieren wird gesagt, dass er die Symbole request und getRealPath nicht finden kann. Muss ich vorher noch etwas importieren?

Dieser Code steht in der doGet bzw. doPost Methode!?

request und response sind parameter dieser Methoden, manchmal auch abgekürtzt mit res bzw. req


----------



## Donar (27. Okt 2008)

Nein, bisher stand er nicht in der doGet Methode. Ich benötige den Seitenpfad in einer anderen Klasse. 

Nun habe ich im ControllerServlet vor die doGet Methode folgende Zeilen geschrieben:

```
public static String contextPath = null;
```
In der Methode steht nun folgendes:

```
contextPath = request.getContextPath();
```
In der Klasse, in der ich den Pfad benötige steht folgende Zeile:

```
private String pfad = ControllerServlet.contextPath;
```
Wenn ich dies nun ausführe, gibt er mir aber nur null zurück. Wenn das der richtige Ansatz sein sollte, wie komme ich nun zum gewünschten Pfad?


----------



## HLX (27. Okt 2008)

Du kannst den Pfad so nicht behandeln. Halte Web-Logik aus den Beans unbedingt raus. Das nimmt dir sonst keiner ab.

Du musst den Pfad in der doGet (oder doPost) ermitteln und an dein Bean-Objekt als String-Parameter übergeben.


----------

