170 likes | 176 Vues
Learn how to use JSP Standard Tag Library (JSTL) to create custom tags in web programming. Examples and usage for JSTL tags and functions.
E N D
CS320 Web and Internet ProgrammingJSP Standard Tag Library (JSTL) Chengyu Sun California State University, Los Angeles
Custom Tags in ASP.NET <p>Enter a number from 1 to 100: <asp:TextBox id="tbox1" runat="server" /> <asp:Button Text="Submit" runat="server" /> </p>
Custom Tags in ColdFusion <cfform action = “cftextinput.cfm” method=“post”> <cftextinput name = “myInput” message = “This field must not be blank” required = “Yes” /> <input type = “Submit” value =“submit” /> </cfform>
Simple JSTL Example <%@ page contentType="text/html" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html><head><title>JSTL Hello</title></head> <body> <c:out value="Hello World in JSTL." /> </body> </html>
taglib Directive • URI • A unique identifier for the tag library • NOT a real URL • Prefix • A short name for the tag library • Could be an arbitrary name
JSP Standard Tag Library (JSTL) http://download.oracle.com/docs/cd/E17802_01/products/products/jsp/jstl/1.1/docs/tlddocs/index.html
JSTL Usage Examples • Login.jsp, Members.jsp, Logout.jsp • GuestBook with Bean, EL, and JSTL • GuestBookEntry.java • GuestBookBean.java • GuestBook.jsp • AddComment.jsp
Flow control <c:if> <c:choose> <c:when> <c:otherwise> <c:forEach> <c:forToken> Variable support <c:set> <c:remove> URL <c:url> <c:redirect> <c:import> <c:param> Output <c:out> Exception handling <c:catch> JSTL Core
Branch Tags <c:if test=“${um.size == 0}”>No user yet.</c:if> <c:choose> <c:when test=“${um.size == 0}”> No user yet. </c:when> <c:otherwise> <%-- display the users --%> </c:otherwise> </c:choose>
Loop Tags <%-- iterator style --%> <c:forEach items=“${um.users}” var=“user”> ${user.username} <br /> </c:forEach> <%-- for loop style --%> <c:forEach begin=“0” end=“${um.size}” step=“1” var=“i”> ${um.users[i].username} <br /> </c:forEach> <forToken ....> Exercise
Set and Remove Scope Variables In Login.jsp <c:set var=“authorized” value=“true” scope=“session”/> In CheckLogin.jsp <c:if test=“${empty sessionScope.authorized}”> <c:redirect url=“Login.jsp” /> </c:if> In Logout.jsp <c:remove var=“authorized” scope=“session” />
Set Bean Property • <jsp:setProperty> • name attribute must be a bean declared by <jsp:useBean> • <c:set> • target attribute can be any object with a writable property • E.g. set the property a in bean b with the value of request parameter c <c:set target=“${b}” property=“a” value=“${param.c}” />
URL Tags <c:import url=“/books.xml” var=“something” /> <x:parse doc=“${something}” var=“booklist” scope=“application” /> <c:url var="url" value="/catalog" > <c:param name="Add" value="${bookId}" /> </c:url> <a href="${url}">Get book</a>
Output • You want to use <c:out> if • escapeXML=true • value is a Java.io.Reader object <c:out value=“100” /> <c:out value=“${price}” /> ${100} ${price}
Character Conversion • When escapeXML=true
Format Date and Time <fmt:formatDate value=“${date}” type=“date” /> <fmt:formatDate value=“${date}” type=“time” /> <fmt:formatDate value=“${date}” type=“both” /> <fmt:formatDate value=“${date}” pattern=“yyyy-MM-dd hh:mm:ss a” /> See http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html for the date formatting patterns. l
fn:length() fn:contains() fn:containsIgnoreCase() fn:startWith() fn:endsWith() fn:indexOf() fn:replace() fn:trim() fn:toUpperCase() fn:toLowerCase() fn:substring() fn:substringAfter() fn:substringBefore() fn:split() fn:join() fn:escapeXML() JSTL Functions