JavaServer Pages Standard Tag Library
Trang 1thangld@uit.edu.vn
JavaServer Pages Standard Tag Library
Trang 2JavaServer Pages Standard Tag Library 2
Trang 3Giới thiệu tổng quan
Trang 4JavaServer Pages Standard Tag Library 4
JSTL?
Tập các thư viện thẻ chuẩn
Hỗ trợ sử dụng thẻ trong JSP thay cho code
Trang 5Download và cài đặt
http://jakarta.apache.org/site/downloads/downloads_t aglibs-standard.cgi
Cài đặt
dụng và khai báo trong tập tin web.xml
/WEB-INF/lib của ứng dụng
Trang 6JavaServer Pages Standard Tag Library 6
Khai báo taglib trong web.xml
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri> <taglib-location>/WEB-INF/fmt.tld</taglib-location> </ taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri> <taglib-location>/WEB-INF/c.tld</taglib location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri> <taglib-location>/WEB-INF/sql.tld</taglib location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/xml</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib location>
</taglib>
Trang 7JSTL Tag Libraries
Core (prefix: c): tính năng cơ bản
Database (prefix: sql)
XML (prefix: x): xử lý XML
Internationalization (i18n) (prefix: fmt)
Functions (prefix: fn)
Trang 8JavaServer Pages Standard Tag Library 8
Trang 9Core Tags
Trang 10JavaServer Pages Standard Tag Library 10
Core Tags Types
Khai báo và sử dụng biến
Trang 11Core Tags Types
Thao tác với URL
Trang 12JavaServer Pages Standard Tag Library 12
Khai báo và sử dụng biến: <c:set>
Thiết lập giá trị của một biến thông qua thuộc tính
“var” trong một phạm vi “scope” cụ thể: page,
request, session, application
Nếu chưa tồn tại, biến sẽ được tạo ra
Có hai cách để sử dụng <c:set>
<c:set var=“userId” scope=“request” value=“${param.userID}” />
<c:set var=“…”>value</c:set>
Trang 13Ví dụ
Khai báo và định nghĩa biến
<c:set var="customerTable" scope="application">
Trang 14JavaServer Pages Standard Tag Library 14
Ví dụ
Sử dụng biến đã định nghĩa
<c:out value="${customerTable}" escapeXml="false"/>
Trang 15Hủy biến nhớ
Hủy một biến đã được khai báo và định nghĩa
<c:remove var="cart" scope="session“ />
Trang 16JavaServer Pages Standard Tag Library 16
Sử dụng: <c:catch>
<c:catch var ="catchException">
command-block
</c:catch>
Trang 17 Khối lệnh trong các thẻ con <c:when> và
<c:otherwise> sẽ được thực thi tùy thuộc vào điều
kiện
Trang 18JavaServer Pages Standard Tag Library 18
Trang 19Iterator Tags
Được sử dụng để duyệt kiểu dữ liệu tập hợp
Thẻ <c:forEach> với các thuộc tính sau:
Trang 20JavaServer Pages Standard Tag Library 20
<c:forEach var="item" items="${enumeration}"
begin="2" end="10" step="2">
<c:out value="${item}"/><br>
</c:forEach>
Trang 22JavaServer Pages Standard Tag Library 22
step:<c:out value="${status.step}">step</c:out><br>
sequence:
</c:if> .
</c:forEach>
Trang 24JavaServer Pages Standard Tag Library 24
URL Import
<c:import> : được sử dụng để truy cập các tài nguyên khác trong hay ngoài phạm vi ứng
dụng tương tự như <jsp:include>
Có thể sử dụng thêm <c:param> để truyền tham
Trang 25URL Rewriting
<c:url> : được sử dụng cho mục đích rewrite
URL
nếu browser không cho phép nhận cookie từ server; trong trường hợp này, SessionID sẽ được thêm vào URL trước khi gửi về browser
Trang 26JavaServer Pages Standard Tag Library 26
Trang 28JavaServer Pages Standard Tag Library 28
Các thẻ khác
<c:out>: tính toán giá trị của biểu thức và xuất kết quả ra JspWriter
Nếu kết quả tính toán được là một đối tượng
java.io.Reader, thì kết quả xuất ra JspWriter là
dữ liệu đọc được từ Reader nhằm nâng cao
hiệu năng thực thi
Trang 30JavaServer Pages Standard Tag Library 30
Ví dụ
<c:out value="${customer.lastName}"/>
<c:out value="${customer.phoneHome}" default=“unknown"/>
<c:out value="${customer.phoneCell}" escapeXml="false">
Trang 31Database
Trang 32JavaServer Pages Standard Tag Library 32
SQL Tags
<sql:setDataSource> : chỉ định JDBC driver và URL kết nối với CSDL
<sql:query> : thực thi câu truy vấn
<sql:update> : thực thi câu cập nhật dữ liệu
<sql:transaction> : thực hiện một giao tác
Trang 33XML Tags
Trang 34JavaServer Pages Standard Tag Library 34
Trang 36JavaServer Pages Standard Tag Library 36
Parsing & Transformation
<x:parse> : parse một tài liệu XML vào trong một biến
<x:transform> : transform một tài liệu XML từ
Trang 37Lấy tập các node thẻ <d>
trong thẻ <a>
Trang 38JavaServer Pages Standard Tag Library 38
<x:out>
Tương tự như <c:out>
<x:out> chuyển đổi kiểu tập hợp các node sang thành String
cả các giá trị chuỗi của các node con của thành phần đó
<student>
<name>John</name> John <sport>swimming</sport> swimming <age>23</age> 23
<gender>M</gender> M </student>
Trang 39EL Functions
Trang 40JavaServer Pages Standard Tag Library 40
<fn:indexOf>, <fn:startsWith>, <fn:endsWith contains>,
<fn:containsIgnoreCase> : kiểm tra có tồn tại chuỗi con trong chuỗi lớn
<fn:split>, <fn:join> : tách một String ra thành một mảng
và gộp một tập hợp vào một String
<fn:escapeXml> Chuẩn hóa các ký tự theo XML trong
chuỗi
Trang 41Internationalization (i18n)
& Text Formatting
Trang 42JavaServer Pages Standard Tag Library 42
I18N: Locale và Webapp
Controller
JSP (us)
JSP (de)
…
JSP
de … us
<fmt:message key=“…”>
(Tập tin Resource phải được đặt trong thư mục INFO/classes)
Trang 43WEB-I18N và Formatting Tags
Locale
<fmt:setLocale>
<fmt:requestEncoding>
<fmt:bundle>: khai báo sử dụng resource file
<fmt:message>: có thể sử dụng với <fmt:param>
<fmt:setBundle> : thiết lập resource bundle vào một biến
Number and Date formatting
<fmt:formatNumber>, <fmt:parseNumber>
<fmt:formatDate>, <fmt:parseDate>
<fmt:setTimeZone>, <fmt:timeZone>
Trang 44JavaServer Pages Standard Tag Library 44
Locale
<fmt:setLocale value=“…” scope=“…”>
<fmt:requestEncoding value=“…”>
giá trị các tham số trong request
Trang 45Messaging Tags
Trang 46JavaServer Pages Standard Tag Library 46
greetingMorning
</fmt:message>
<fmt:message key=“greetingMorning” />
</fmt:bundle>
Trang 48JavaServer Pages Standard Tag Library 48
Formatting Tags
<fmt:formatNumber>, <fmt:formatDate>
được chỉ định bởi web browser hoặc bởi
<fmt:setLocale>
<fmt:parseNumber>, <fmt:parseDate>
locale sang dữ liệu kiểu số hoặc ngày thực sự
<fmt:setTimeZone>, <fmt:timeZone> …
</fmt:timeZone>
kết xuất đặt trong cặp thẻ.
Trang 49Q&A