Web Resourcen in JSPs

byte

Top Contributor
Hi,

wo legt Ihr in einem Webprojekt mit JSPs Resource Dateien wie CSS und JS Dateien ab? Meine JSPs liegen in
Code:
webapp/WEB-INF/jsp
, damit man sie nicht direkt per URL aufrufen kann. Die Resourcen (css, js) dürfen aber nicht im WEB-INF Verzeichnis liegen, weil sie ja in der HTML referenziert werden und im WEB-INF Verzeichnis zur Laufzeit ja nicht addressierbar wären.

Die Lösung ist ja recht einfach. Man macht sich einfach ein Verzeichnis
Code:
webapp/resources
. Das funktioniert auch. Das Problem ist nur, dass ich in den JSPs ja die Datei über den Pfad zur Laufzeit addressieren muss, damit die Dateien zur Laufzeit gefunden werden. Das hat aber zur Folge, dass die IDE (in diesem Fall IntelliJ IDEA) meckert, dass sie die Datei nicht finden kann.

Beispiel:

webapp/WEB-INF/jsp/index.jsp
webapp/resources/styles.css

In index.jsp:
Code:
<link rel="stylesheet" type="text/css" href="resources/styles.css">

Das funktioniert zur Laufzeit, allerdings meckert die IDE, dass die Datei nicht existiert. Stimmt ja auch. Die Adresse gibts erst zur Laufzeit relativ zur index.html Adresse aber nicht in der IDE relativ zur index.jsp.

Evtl. ists auch nur ein IDEA Problem. Wie macht Ihr sowas?

PS: Es ist auch ein Maven Projekt.

Grüße byte
 

mvitz

Top Contributor
Ich meine, dass ich diese Resourcen zumeist sogar noch mit <c:url /> angebe, damit die JSP Dateien egal wie tief sie verschachtelt sind, immer auf die CSS Dateien zugreifen können. Ansonsten könnte es dir ja sogar passieren, dass eine JSP die unter http://localhost:8080/test/blub/index.html bei deiner Bezeichnung das CSS in http://localhost:8080/test/blub/resources/style.css erwartet.

Ob das zu nem Fehler in Eclipse führt müsste ich jetzt aber tatsächlich nachgucken, glaube aber, bei solchen Dingen meckert Eclipse nicht einmal, sollten solche Dateien fehlen. Da ist IDEA weiter (die haben auch ein super Webeditor Package)
 

byte

Top Contributor
Ja du hast recht. Unterzeichnisse sind auch problematisch. Das habe ich bisher damit gelöst, dass ich einfach generell den absoluten Pfad angebe, also /path/resources/styles.css, wobei path der context path der Webanwendung ist. Das ist aber auch nicht wirklich schön. Mal gucken, ob das mit c:url schöner geht.

IDEA gibt da übrigens nur eine Warnung an. Aber es fehlt dann halt auch die Code Completion für diese Resourcen. Und das ist schon doof. :)
 

byte

Top Contributor
OK, jetzt funktionierts. Man kann in IDEA den web resource Pfad umbiegen. Per Default zeigt er auf
Code:
/
, was aber zur Laufzeit der Root des Tomcats ist. Wenn ich auf
Code:
/contextpath/
stelle, dann klappt es, auch wenns ein bißchen unschön ist, dort den Contextpath der Webapp anzugeben.
 

Ähnliche Java Themen

Neue Themen


Oben