Jsp und css

Status
Nicht offen für weitere Antworten.

carpe

Aktives Mitglied
Hallo Leute,

Ich habe zum testen ein kleine Web Seite Programmiert , mit dem man ein Formular(wepapps/root/meinV ) an einen Servlet
abschickt und dieser an eine JSP Datei verweisst , im Ordner wepapps/root/WEB-INF .

Mein Problem :

wenn Ich die Datei Index.jsp im Ordner wepapps/root/meinV mit dem Browser aufrufe dann greift Sie auf die
Index.css Datei zu und die Formatierung funktioniert.Aber im Order wepapps/root/WEB-INF funktioniert die Formatierung nicht, da kann die JSP Datei nicht auf die CSS Datei zugreifen.
Weiss Jemand warum.

Danke im voraus.
 

carpe

Aktives Mitglied
Ich habe die JSP und CSS Datei im selben Ordner webapps/root/WEB-INF und

<link rel="stylesheet" type="text/css" title="datei" href="datei.css"/>
steht in der JSP datei.
Also Ich denke daran liegt es nicht oder ....
 

mvitz

Top Contributor
afaik müsste da trotzdem /WEB-INF/datei.css rein

Edit: Oder es geht nicht, da alles, was im WEB-INF nach außen geschützt wird. Dann müsstest du die CSS Datei auf jedenfall außerhalb deines WEB-INF Ordners ablegen.
 

carpe

Aktives Mitglied
Ich habe jetzt den absoluten Pfad hin geschrieben
<link rel="stylesheet" type="text/css" title="loginFehler" href="C:/apache-tomcat-5.5.27/webapps/ROOT/WEB-INF/loginFehler.css"/>

und es klapt aber die Bilddatei <img src=C:/apache-tomcat-5.5.27/webapps/ROOT/WEB-INF/bild.jpg">
wird nicht angezeigt,
merkwürdig.
 
M

maki

Gast
>> Edit: Oder es geht nicht, da alles, was im WEB-INF nach außen geschützt wird. Dann müsstest du die CSS Datei auf jedenfall außerhalb deines WEB-INF Ordners ablegen.

Richtig habi55, es geht nicht.
 
M

maki

Gast
carpe, der WebContainer darf nix direkt an einen Browser ausliefern was unter WEB-INF liegt, d.h. jede URL wie http://server:port/webappContext/WEB-INF/... wird mit einem 403 Fehler quitiert.

Direkt über das Dateisystem zu gehen ist bei Clients eines Webservers in 99,999% der Fälle keine Option... :rolleyes: das läuft nur bei dir, da lokal vorhanden.
 

rico

Mitglied
Bilder,Stylesheets werden vom Browser extra angefordert. Da das WEB-INF Verzeichniss nach außen geschützt ist, werden die Dateien nicht gefunden.
Am besten legst du die Sachen unterhalb deines webapp-Verzeichnisses deiner Anwendung,
Bsp.
Code:
<webapp>/images/meinbild.jpg
Zugreifen kannst du dann über
Code:
<img src="${pageContext.request.contextPath}/images/meinbild.jpg" />
 

carpe

Aktives Mitglied
Was für einen Zweck hat es , wenn Servlets die Anfrage eines Clients an eine JSP Datei weiterleiten kann die
vom Client nicht erreichbar ist, da dieser (JSP Datei) sich im WEB-INF Ordner befindet.
Ist mir ein Rätsel.
 
M

maki

Gast
Was für einen Zweck hat es , wenn Servlets die Anfrage eines Clients an eine JSP Datei weiterleiten kann die
vom Client nicht erreichbar ist, da dieser (JSP Datei) sich im WEB-INF Ordner befindet.
Ist mir ein Rätsel.
Schutz der JSP vor unberechtigtem Zugriff, ausserdem ist man so gezwungen MVC einzusetzen.
 

carpe

Aktives Mitglied
ja , aber was soll ich mit der JSP Datei anfangen wenn der Clint es nicht erreichen kann.
 
Zuletzt bearbeitet:
M

maki

Gast
Der Client kann sie nicht direkt erreichen, aber ein Servlet zB. kann das, MVC eben.
 

carpe

Aktives Mitglied
was habe ich davon wenn das Servlet Anfragen an eine JSP(WEB-INF Ordner) Datei weiterleiten kann ,wenn
der Client es nicht erreichen kann .

Anders gefragt ,wozu dient die JSP Datei denn ,wenn sie vom Client nicht erreichbar ist.
 
M

maki

Gast
nochmals: MVC

Kein Client kann einfach so auf eine JSP zugreifen (index und login mal ausgenommen).
 

mvitz

Top Contributor
was habe ich davon wenn das Servlet Anfragen an eine JSP(WEB-INF Ordner) Datei weiterleiten kann ,wenn
der Client es nicht erreichen kann .

Anders gefragt ,wozu dient die JSP Datei denn ,wenn sie vom Client nicht erreichbar ist.

Der 1. Vorteil ist eben, dass wenn du bestimmte Sachen vorher machen möchtest, z.B. eine DB Abfrage und die Ergebnisse darstellen, dass du das nicht in der JSP direkt machen musst, sondern im Servlet und die Daten dann einfach an die JSP weiterreichst. Würde jemand jetzt direkt auf die JSP zugreifen, so würde das nicht funktionieren, da keine Daten für die JSP verfügbar sind. --> JSP in WEB-INF, dann ist man gezwungen die Seite über ein Servlet zu erreichen und die JSP hat auf jedenfall ihre Daten.

Jetzt könnte man natürlich sagen:
"Wozu brauche ich dann die JSP, dann kann ich doch einfach alles mit dem Servlet und dessen Outputstream machen?"

Ja kann man, ist aber nicht schön. Du schreibst in deinem Servlet dann immer wieder out.println("<html>"); usw. usw. Dazu kommt, dass du dann wieder Logik (Schleifen, DB Abfrage) und die Anzeige der Daten (<form>, <p>) vermischst und es schwerer zu warten ist.

Aus diesem Grunde legt man die JSP in WEB-INF und lässt den Client das Servlet aufrufen. Das Servlet macht dann alles, was mit der Logik zu tun hat und gibt anschließend die Daten, die die JSP benötigt an die JSP weiter. Diese wird danach mit den übergeben Daten gerendert und angezeigt.

Somit kann keiner deine JSP Datei in einem inkonsistenten Zustand (ohne Daten) sehen und du trennst die Logik deiner Anwendung, von der Anzeige selbiger.
 
Status
Nicht offen für weitere Antworten.

Oben