# JSTL macht Probleme



## Wodan (17. Aug 2008)

Hi,

ich blick nun garnemme durch.. 

Ich lese momentan mehrere Tutorials zu JSP und bin nun beim Thema JSTL angelangt.
Tutorials welche ich lese:
JSP - Addison Wesley
JSP - O'Reilly
www.jsptutorial.org

Meiner Meinung nach ist das ja eine tolle Sache und ich würde es gerne mal ausprobieren und nachher in meiner Seite selber verwenden jedoch funktioniert es nicht wie ich mir das vorstelle.

Bibliotheken baut man so ein:
<%@ taglib prefix=" z.b. c" uri="z.b. http://java.sun.com/jsp/jstl/core" %>

Verwendung:z.B.
<cut value="Ein bisschen Text" />

Desweiteren dachte ich mir das ich die taglibs in einer taglibs.jsp separat habe und diese dann mit include in eine Seite einbinde. 

Soweit so gut nun funktioniert das nicht :/

Nun habe ich mal ein wenig recherchiert und bin darauf gestoßen das man unter WEB-INF/lib die jstl.jar & standard.jar sowie sämtliche andere Bibliotheken haben muss. Das allein funktioniert aber auch nicht 

Jetzt habe ich noch gefunden das man ein tld braucht? Nun habe ich den kompletten Faden verloren und es regt mich einwenig auf das man in den Tutorials welche ich lese keine Erklärung dazu bekommt.
*
Fragen:*
Wohin verweist eig. hier das uri? Ich dachte mir es verweist auf die Bibliothek aber dann müsste es doch uri="lib/jstl.jar" oder so sein. Wieso wird hier eine Internetseite angegeben?
<%@ taglib prefix=" z.b. c" *uri="z.b. http://java.sun.com/jsp/jstl/core"* %>

Braucht man ein TLD? Wenn ja wieso und woher bekomme ich den bzw. wie schreibe ich einen?

Muss ich vielleicht in der web.xml etwas nachtragen um JSTL zu nutzen?

Ich hatte diese jstl.jar von anderen Beispielen wenn ich jedoch diese nicht hätte müsste ich sie dann von jakarta laden??

MfG
wodan


----------



## byte (17. Aug 2008)

Du musst lediglich die jstl.jar in den Classpath machen (WEB-INF/lib) und die Taglib in der JSP angeben, so wie Du es beschrieben hast.


----------



## Wodan (17. Aug 2008)

Ich erhalte immernoch diese Fehlermeldung:
org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application

Weiß mir jmd. rat? 

mfg wodan


----------



## ARadauer (25. Aug 2008)

raus mit dem jsp...


```
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"  %>
```

hat irgendwas mit den versionen zu tun... ich benutz das sehr selten...


----------



## SnooP (25. Aug 2008)

sollte aber dennoch gehen... - wie sieht denn deine web.xml aus? Problem ist hier häufig, dass Tutorials häufig noch auf die 2.3er Servletspezifikation beziehen und die web.xml dann die dtd referenziert... wenn ein 5.5er Tomcat aber z.B. eine Webapp mit einer 2.3er web.xml startet, wird dieser im Kompatibilitätsmodus gestartet was dazu führt, dass genau obige Fehlermeldung kommt... mann kann mit einem jsp-tag den modus wieder deaktivieren... oder besser... in der web.xml gleich die 2.4er Spezifikation ziehen, sprich das zugehörige XML-Schema referenzieren nicht die dtd ...

ich hoffe ich war einigermaßen verständlich 

die referenzierung einer uri mit einer internetseite verwundert den anfänger - ist aber ganz normal  - das heißt nicht, dass man eine Internetverbindung braucht oder diese live aus dem netz geladen wird - es geht hier primär darum einen Namensraum zu definieren, wie bei java die packages um dann zusammen mit dem Präfix einen voll-qualifizierten Namen innerhalb eines xml-dokuments haben zu können...

Das dazu passende tld-file muss einfach nur in einem jar-file liegen und wird wenn dies im cp liegt automatisch genutzt - läuft also alles einfacher als früher, wo man in der web.xml (daher auch der hinweis darauf in deiner fehlermeldung) die tlds einzeln angegeben werden mussten.


----------



## Wodan (26. Aug 2008)

Jawoll nun funktioniert es  Jetzt werde ich mit verschiedenen tags üben und dann anfangen mein eigenes Webprojekt endlich auf die Beine zu stellen.


----------



## SnooP (27. Aug 2008)

Prima - hau rein  ... JSTL ist ne gute Wissensbasis und kann in diversen anderen Frameworks mit verwendet werden.


----------

