Java Standart Tag Library

chipmount

Grünschnabel
Hi,
möchte mal eine jsp mit Funktionen(jstl-> die auf eine datenbank zugreift und was ausführt) realisieren

habe mir paar dokus, foren angeschaut aber nicht schlauer geworden

ich habe Tomcat 5 laufen muss ich trotzdem jakarta-taglibs installieren(welche version) oder reichen die jstl.jar
und standard.jar von Tomcat aus ?

was sind ..tld? muss ich für meine DB-Anwendung eine eigene ...tld schreiben oder wie funktioniert das ganze


danke
 
Hallo!

Innerhalb der JSTL gibt es schon Tags die für die Interaktion mit Datenbanken ausgestattet sind.

http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSTL8.html
http://www-106.ibm.com/developerworks/java/library/j-jstl0520/

TLD Dateien sind die sogenannten Tag Library Deployment Descriptoren. In denen sind die Tags definiert (Name, dahinterstehende Klasse, zulässige Attribute etc).

Ja das JSTL.jar reicht dazu aus (liegt im %TOMCAT_HOME%/COMMON/LIB Verzeichnis
bzw. im WEB-INF/LIB Verzeichnis deiner Webapplikation.)

Die passende(n) TLD(s) solltest du dann auch innerhalb deiner WEB-Application z.Bsp. unter WEB-INF/tlds verfügbar machen kann. In deinem Fall wäre das z.Bsp. die sql.tld

In deiner JSP Seite bindest du die Tags dann wie folgt ein:
Code:
<%@ taglib uri="/WEB-INF/tlds/sql.tld" prefix="sql"%>

Dann sind die Tags etwa unter <sql:blablabla ..../>
verfügbar.

U.u. musst du um diese Tags zu verwenden zuvor noch eine Datasource im Container registrieren um z.Bsp. über das Tomcat interne JNDI (Namensdienst) darauf zuzugreifen.

Von Designaspakten sollte man integration von Datenbank Code in JSP-Seiten strikt vermeiden. Normalerweise geht man dort den Weg das man die JSP's nur für die Darstellung der Seite und die eigentliche Anwendungslogik in Servlets und/oder sonstigen Technologien (Springframework, EJB) zu hinterlegen.

Gruß Tom
 
habe jezt dieses problem
meine ..html
Code:
<html>
<head>
<title>formulaire d´essaie </title>
</head>
<body>
<h3>Geben Sie den Bestellersname ein :</h3>
<FORM Method="GET" Action="sql.jsp">

Name: 	  <INPUT TYPE="text" name=param ><BR>

	  <INPUT type=submit value=Abfrage senden>
</FORM>
</body>
</html>
meine --jsp
Code:
 <%@ taglib uri="/WEB-INF/tld/taglibs-dbtags.tld" prefix="sql" %>

<%-- open a database connection --%>

<sql:connection id="conn1">
  <sql:userId>scott</sql:userId>
  <sql:password>tiger</sql:password>
  <sql:url>jdbc:oracle:thin:@..:1521:..</sql:url>
  <sql:driver>oracle.jdbc.driver.OracleDriver</sql:driver>
</sql:connection>

<%-- open a database query --%>
<table>
<sql:statement id="stmt1" conn="conn1"> 
  <sql:query>
	select bestnr, bestelldatum, bestsum from Bestellung WHERE name=?	
  </sql:query>

  <%-- loop through the rows of your query --%>

  <sql:resultSet id="rset2">
	<tr>
	  <td><sql:getColumn position="1"/></td>
	  <td><sql:getColumn position="2"/></td>
	  <td><sql:getColumn position="3"/></td> 
	  <sql:getColumn position="4"/><%=request.getParameter("param")%>	
<sql:wasNull>[no description]</sql:wasNull></td>

	</tr>
  </sql:resultSet>
</sql:statement>
</table>

<%-- close a database connection --%>
<sql:closeConnection conn="conn1"/>

meine FEHLERMELDUNG:
javax.servlet.ServletException: java.sql.SQLException: ORA-01008: Nicht
allen Variablen ist ein Wert zugeordnet

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.sql_jsp._jspService(sql_jsp.java:247)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

ist die parameter übergabe falsch
wie mach ich das richtig
 
Code:
<sql:param value="${meinWertFuerGewuenschterName}" />
Fehlt dir.

Du hast ein PreparedStatement ( siehe ? im Query) welches mit einem Parameter
initialisiert werden will.
 
Zurück