# Image in Servlet



## Christof (24. Dez 2010)

Hallo,

ich bin (leider) gezwungen eine kleine Webapp in Java mit Servlets zu schreiben. Schon der Anfang bereitet mir Kopfschmerzen.
Folgender Fall:
Ich habe eine stupide Klasse, die nur das Layout bereitstellen soll. Jedes Servlet ruft vor/oder mit dem Content die Layoutklasse auf. Diese Klasse sollte nur den HTML Code fürs Layout erzeugen (mit css link usw.). Dort wollte ich auch ein Logo einbinden (rein HTML) und genau das geht nicht. Zumindest nicht so wie ich es mir dachte.

Layout Code:

```
public String getLayout() {
        return "<html>"
                + "<head>"
                + "<title>Dbase2 Expense Manager</title>"
                //normally: link to css and not inline
                + "<style type='text/css'>"   
                + "*, html{    font-family: verdana, arial, serif;}div#header{    width: 600px;    height: 100px;    background-image: url('header.png');   background-repeat: no-repeat;"
                + "</style>"
                + "</head>"
                + "<body>"
                + "<img src='./header.png'>" //DOESN'T WORK!!!
                + "<div id='header'></div>"
                + "<h1>Servletii TestClass at dup di dup</h1>"
                + "</body>"
                + "</html>";
    }
```

Ich denke es funktioniert wegen der Ordnerstruktur nicht, ich gebe ich die auch mal durch:
Project
- Web Pages
   - META-INF
   - WEB-INF
   - index.jsp
- Source Packages
   - Control
   - Model
   - View
      - Layout.java
      - TestClass.java
      - header.java
      - layout.css
- Test Packages
- Libraries
- Test Libraries
- Configuration Files

Wenn ich nun von der index.jsp das Servlet TestClass aufrufe, welches nur das Layout aufruft und den HTML code zum Browser retourniert, dann zeigt er mir das Bild nicht an, weil er es nicht findet. (Liegt wohl an der Deploy Ordnerstruktur, von der ich überhaupt keine Ahnung habe)

Das kann doch nicht so schwer sein, ein einfaches statisches Bild im HTML Code eines Servlets einzubinden?!

Herzlichen Dank u.
mit freundlichen Grüßen
Christof


----------



## Christof (24. Dez 2010)

Die leerzeichen bei der Ornderstruktur wurden wegen HTML nicht mitübernommen. 

Hier noch mal::
Project
- Web Pages
--- META-INF
--- WEB-INF
--- index.jsp
- Source Packages
--- Control
--- Model
--- View
------ Layout.java
------ TestClass.java
------ header.java
------ layout.css
- Test Packages
- Libraries
- Test Libraries
- Configuration Files

Und ahja... frohe Weihnachten. ;-)
Grüße, Christof


----------



## JohannisderKaeufer (24. Dez 2010)

Typischerweise werden statische Elemente CSS JavaScript und Grafiken direkt im Web Pages-Verzeichnis abgelegt.
Oft nennt man das Unterverzeichnis assets, bzw. CSS, oder JavaScript.


```
Web Pages
  META-INF
  WEB-INF
  assets
    css
      layout.css
    images
      header.png
  index.jsp
```

Das header.png ist dann, je nach Konfiguration unter /assets/images/header.png erreichbar.
Es kann auch sein, dass das Webproject in einem Unterordner deployed wird. Dann muß man dem Pfad noch den Projektnamen voranstellen.


----------

