# CSS Problem in JSP



## SilentJ (25. Okt 2006)

Hallo,

ich habe ein Problem mit dem Einbinden von externen CSS-Definitionen in meine JSP.

Meine JSP liegen unter /WEB-INF/jsp. 

Dort liegt auch meine CSS-Datei.

Wenn ich nun folgenden Eintrag in eine der JSP mache:


```
<link rel="stylesheet" href="style.css" type="text/css"/>
```

wird die CSS-Datei nicht gefunden.

Ist wahrscheinlich nur ein dummer Fehler, aber ich brauche dringend eine Antwort.


Michael


----------



## dieta (25. Okt 2006)

Du musst die Anführungszeichen bei "rel" wegmachen:

```
<link rel=stylesheet href="style.css" type="text/css"/>
```

Sonst funzts unter IE nicht, unter Firefox hab ich's noch nicht probiert.

[edit]Ist ja eigentlich kein "dummer" fehler, woher soll man auch wissen, das M$ hier und da mal alle Standards links liegen lässt  :autsch: [/edit]


----------



## Anselmus (26. Okt 2006)

also ich würde mal sagen mit den "" hat das gar nichts zu tun, bei mir funktionieren css mit "" bei ff und ie gleichermaßen...


----------



## HLX (26. Okt 2006)

Hol die JSP- und die CSS-Datei aus WEB-INF raus. Dieser Ordner ist zur Konfiguration und für Bibliotheken/Klassen gedacht. Hier gibt es Zugriffsbeschränkungen.

Lege die beiden Dateien in ein beliebiges Verzeichnis parallel zu WEB-INF.


----------



## SilentJ (26. Okt 2006)

Es geht nicht darum, wohin ich die CSS-Datei lege. Ich bekomme sie nicht eingebunden, das ist mein Problem. Füge ich den in der CSS-Datei enthaltenen Code in die JSP ein, funktioniert es und die betroffenen Elemente werde dem definierten Style gemäß formatiert. Ein Auszug aus einem bei dieser Aufgabe erfolgreichen Webprojekt wäre für mich sehr hilfreich.


----------



## dsv fritz (26. Okt 2006)

SilentJ hat gesagt.:
			
		

> Es geht nicht darum, wohin ich die CSS-Datei lege.
> 
> 
> 
> ...


----------



## SilentJ (26. Okt 2006)

Doch, ist eine Java-Frage, wenn man wie ich versucht, das Ganze per Spring zu machen und es funktioniert nicht. Egal wo ich die CSS hinlege, sie wird nicht eingebunden.


----------



## SilentJ (26. Okt 2006)

So gesehen bräuchte ich nur eine Angabe für folgende Ausgangslage:

Die CSS-Datei liegt unmittelbar im Verzeichnis der Webanwendung. Die JSP liegen unter WEB-INF/jsp. In einer der JSP ist die CSS einzubinden. Kann mir jemand mal die 2 Zeilen Code posten???


----------



## HLX (26. Okt 2006)

SilentJ hat gesagt.:
			
		

> Doch, ist eine Java-Frage, wenn man wie ich versucht, das Ganze per Spring zu machen und es funktioniert nicht.



Verstehe hier das Problem nicht.

Nochmal: Der Web-Container verbietet dir den direkten zugriff auf das WEB-INF Verzeichnis (vorsicht bei JSP --> Servlet --> kein direkter Zugriff). Daher ist es möglich, dass das Einbinden der CSS-Datei aufgrund von Zugriffsbeschränkungen nicht funktioniert. Um unnötige Probleme zu vermeiden: hole BEIDE Dateien aus diesem Ordner. Ob Spring oder nicht, die gehören da einfach nicht hin! :noe:


----------



## Anselmus (26. Okt 2006)

wie kommst du den eigentlich an die jsp datei ran?

habe das grade mal probiert mit 
	
	
	
	





```
[url="/WEB-INF/jsp/test.jsp"]link[/url]
```
 aber das geht nicht so wirklich genausowenig wie 
	
	
	
	





```
[url="WEB-INF/jsp/test.jsp"]link[/url]
```

kann mich da meinen vorrednern nur anschließen. keine gute idee das in Web-INF zu machen


----------



## puddah (26. Okt 2006)

hast du mal versucht den Context Pfad deiner Webapp vor styles.css anzugeben, also ungefähr so:


```
<link rel="stylesheet" href="myWebapp/style.css" type="text/css"/>
```


----------



## SilentJ (26. Okt 2006)

Auf die JSP greife ich nicht direkt zu, das erledigt der entsprechende Revolver aus dem Spring-Framework ganz gut und problemlos. Das ist also nicht das Problem

Das Witzige ist, wenn ich einen Hyperlink 

```
[url="<meineCSS.css>"]CSS[/url]
```
angebe, komme ich zur CSS.

Aber die Definitionen innerhalb der CSS sind korrekt, da habe ich beim lokalen Einbinden gesehen. Und die "form"-Klasse wird dann auch per <h1 class="form"> gefunden. Ich brech' zusammen. So ein kleines Problem und ich komme nicht weiter.


----------



## SilentJ (26. Okt 2006)

Anmerkung: die eckigen Klammern sollten nur meineCSS als Platzhalter einschließen. Sorry


----------



## mutex (26. Okt 2006)

Aber fetszuhalten bleibt, daß die Dateien eigentlich nichts in WEB-INF zu suchen haben - find's schon Krude, daß da überhaupt was ausgeliefert wird (wobei ich aber auch Spring nicht kenne - kann mir jedoch kaum vorstellen, daß die das umbiegen).

Sehr Suspekt ist dann natürlich, daß die Datei bei einem "a href=" angeblich ausgeliefert wird und bei einem "link href=" nicht kommt.

Vielleicht rufst du dein JSP mal im Browser ab und speicherst den Seitenquelltext, legst deine CSS-Datei in dasselbe Verzeichnis und guckst mal, ob's ganz ohne HTTP-Server als File läuft. Okay, blöder Tip, aber eben nur um Vertipper oder Browserprobleme auszuschließen. Kann ja mal passieren.

Wenn das alles nix hilft, wäre die Frage, ob der/die Browser bei einem "link href" einen anderen HTTP-Header liefern als bei einem "a href" (könnte ja sein, daß mit dem 'type' beim Link-Tag irgendwas mit ins 'accept' reingefummerlt wird oder so) und ob Spring damit dann irgendwas irgendwoanders hin forwarded oder irgend einen anderen Content-Type als Antwort schickt .... aber das sind schon arg schräge Vermutungen - nur wenn's *wirklich* so ist, wie du's beschreibst (HTML/CSS ist korrekt, Anchor tut's, Link aber nicht), dann ist's ja auch ein arg schräges verhalten.


----------



## SilentJ (26. Okt 2006)

Ok,

ich nochmals. ;-) Erstmal ein großes Danke an alle, die sich an diesem Thread beteiligt haben, bzw. dies noch tun möchten, sie seien herzlich eingeladen.

Ich habe meine Anwendung auf dem Spring-MVC-Tutorial aufgebaut, unter anderem werden die JSP dort in WEB-INF/jsp abgelegt. Durch einen so genannten ViewResolver werden Anfragen wie /login.htm intern auf /WEB-INF/login.jsp gemappt. Der damit verbundene Code sieht wie folgt aus:


```
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property>
        <property name="prefix"><value>/WEB-INF/jsp/</value></property>
        <property name="suffix"><value>.jsp</value></property>
    </bean>-->
```

Nachdem diesen Code auskommentiert habe, wurde meine CSS-Definitionen auf der externen Datei auch eingebunden. Ich freue mich wie Bolle. Aber dadurch, dass ich den ViewResolver deaktiviert habe, ergeben sich neue Probleme. Verdammt.

Hat jemand einen Lösungansatz?


----------



## LordSam (27. Okt 2006)

Die JSP Dateien sind unter WEB-INF/jsp abgelegt, damit der Benutzer sie nicht direkt per URL aufrufen kann. "Direkte" Anfragen an alles was unter WEB-INF liegt werden, wie schon erwähnt, abgeblockt, heist der Brower kriegt einen 404 - File not found error. 

Das ist absicht, da im Falle von Spring MVC ja der User nicht direkt die View aufrufen soll, welche sowieso nicht funktionieren würde ohne das vorher das "Model" bereitgestellt wird. Das Problem was Du nun hast ist, das Link-Angaben vom Browser aufgelöst werden und der weis ja garnicht, wo dein JSP file liegt. Du hast vermutlich eine URL auf einen Controller gemappt, also z.B. /liste.htm --> ListController. Der returned dann den namen der View, welcher per ViewResolver "aufgelöst" wird, d.h. ein forward auf die JSP Datei durchführt.

Du musst aber das ganze aus sicht des Browsers sehen. Der holt sich die Datei liste.htm aus einem verzeichnis und genau von da holt er sich dann auch die css Datei, also wenn Der browser die URL /webapp/bla/liste.htm verwendet, wird er mit der URL /webapp/bla/styles.css die styles.css Datei laden wollen. Für Dich heist das, das Du die styles.css Datei da ablegen musst, wo der Browser sie erwartet.

Wenn dein Mapping also auf /liste.htm geht, muss die css Datei ins root deiner Web-App. Mappst du auf /bla/liste.htm, musst du die css Datei ins verzeichnis bla legen. Dann wirds funktionieren.

Ich hoffe das war einigermaßen verständlich


----------



## SilentJ (27. Okt 2006)

Die CSS wird ja ausgeliefert, Fehler treten nicht auf.

Ich denke, dass das Problem hier vielleicht eine Lösung erfährt:

forum.springframework.org/showthread.php?t=9965

Danke für die Postings


----------

