Advanced   Java   Services JSTL und EL Back Next Up Home


JSP Standard Tag Library (JSTL) Core-Tags und Expression Language (EL)




XML-Syntax statt Scriptlets
Code-Element Scripting in HTML XML-Syntax
Importanweisung
(Spezialfall einer Direktive)
<%@ page import = "java.util.*" %>
<%@ page import = "java.util.*, java.io.*" %>
<jsp:directive.page import="java.util.*"/>
Deklaration/
Definition
<%! StringBuilder sb = new StringBuilder("Hallo");%>
<%! int i = 17;%>
<jsp:declaration>StringBuilder sb = new StringBuilder("Hallo");</jsp:declaration>
Statement <% i = (int)(49*(Math.random()+1)); %> <jsp:scriptlet> i = (int)(49*(Math.random()+1)); </jsp:scriptlet>
Ausdruck <%= (int)(49*(Math.random()+1)) %>
(kein Leerzeichen zwischen % und =)
<jsp:expression>(int)(49*(Math.random()+1))</jsp:expression>




JSTL Implizite Objekte




Implizites Objekt Typ Key Value
cookie java.util.Map Cookie name Cookie
header java.util.Map Request header name Request header value
headerValues java.util.Map Request header name String[] of request header values
initParam java.util.Map Initialization parameter name Initialization parameter value
param java.util.Map Request parameter name Request parameter value
paramValues java.util.Map Request parameter name String[] of request parameter values
pageContext javax.servlet.jsp.PageContext N/A N/A
pageScope java.util.Map Page-scoped attribute name Page-scoped attribute value
requestScope java.util.Map Request-scoped attribute name Request-scoped attribute value
sessionScope java.util.Map Session-scoped attribute name Session-scoped attribute value
applicationScope java.util.Map Application-scoped attribute name Application-scoped attribute value

Die core-Tags



Tag Bedeutung
<c:out /> Entspricht dem Scriptlet <%= ... >
<c:set > Variablendeklaration und Wertzuweisung innerhalb eines Sichtbarkeitsbereichs (scope)
Beispiele <c:set var="currency" value="EUR" />
<c:out value="${currency}"></c:out>
<jsp:useBean id="now" class="java.util.Date"></jsp:useBean>
<c:out value="${now}"></c:out><br/>
<jsp:useBean id="myFormat" class="java.text.SimpleDateFormat" />
<jsp:scriptlet>myFormat.applyPattern("E, dd.MM.yyyy kk:mm:ss ");</jsp:scriptlet>
Datum und Uhrzeit: <jsp:expression>myFormat.format(now)</jsp:expression><br/>
<c:out value="${myFormat.format(now)}"></c:out>
<jsp:useBean id="user" class="straub.User"></jsp:useBean>
<c:set var="first" value="${user.firstName}"/>
<c:set var="second" value="${user.secondName}"/>
<c:out value="${first}"/><br/>
<c:out value="${second}"/><br/>
<c:if> Unvollständiges if (es gibt hier kein else).
Beispiel <c:set var="fahrenheit" scope="session" value="${112}"/>
<c:set var="celsius" scope="session" value="${5.0*(fahrenheit-32)/9}"/>
<c:if test="${fahrenheit > 100}">
Temperatur ist über <c:out value="${fahrenheit}"/> Fahrenheit bzw.
über <c:out value="${celsius}"/>
</c:if>
<c:choose> Leitet ein switch-case-ähnliches Konstrukt ein. Benötigt die Untertags c:when und c:otherwise c:when entspricht einem case inclusive break, c:otherwise entspricht default.
<c:when> Untertag von c:choose, entspricht einem case inclusive break.
<c:otherwise> Untertag von c:choose, entspricht default.
Beispiel <jsp:setProperty name="user" property="firstName" value="ina"/>
<c:set var="max" scope="session" value="max"/>
<c:choose>
<c:when test="${user.firstName eq max}">
<p>User is max</p>
</c:when>
<c:when test="${user.firstName eq \"ina\"}">
<p>User is ina</p>
</c:when>
<c:otherwise>
<p>Unknown user</p>
</c:otherwise>
</c:choose>
<c:forEach > Die einzige Schleifenform der core-Tags, kann oft mit Collectionklassen verwendet.
Beispiel <b>Auslesen des kompletten Headers mit dem impliziten Objekt header:</b><br/>
<ul>
<c:forEach var='h' items='${header}'>
<li style="margin-bottom:7px">Header Name: ${h.key}</br>Header Value: <c:out value='${h.value}'/></li>
</c:forEach>
</ul>
<b>Auslesen der init-param Einträge in der web.xml mit Hilfe des impliziten Objekts pageContext</b><br/>
<c:set var="servletConfig" value="${pageContext.getServletConfig()}"/>
<c:set var="initEnumeration" value="${servletConfig.getInitParameterNames()}"/>

<c:forEach var="key" items="${initEnumeration}">
<c:set var="value" value="${servletConfig.getInitParameter(key)}"/>
<c:out value="key: ${key}"/><br/>
<c:out value="value: ${value}"/><br/>
</c:forEach>

Valid XHTML 1.0 Strict top Back Next Up Home