JSTL
JSTL
Khoa Mạng máy tính và Truyền thông
Khoa Mạng máy tính và Truyền thông
Đại học Công nghệ Thông tin
Đại học Công nghệ Thông tin
JavaServer Pages Standard Tag Library
JavaServer Pages Standard Tag Library
JavaServer Pages Standard Tag Library
2
Nội dung
Nội dung
Giới thiệu tổng quan
Các thành phần chức năng của JSTL
Core tags
Database Access tags
XML tags
Internationalization and Text Formatting tags
EL (Expression Language) function tags
Giới thiệu tổng quan
Giới thiệu tổng quan
JavaServer Pages Standard Tag Library
4
JSTL?
JSTL?
Tập các thư viện thẻ chuẩn
Hỗ trợ sử dụng thẻ trong JSP thay cho code
Java
Cài đặt các tính năng cơ bản thông dụng cho
các ứng dụng JSP
Cấu trúc điều khiển (lặp và điều kiện)
Truy cập CSDL
XML
Hỗ trợ internationalization
Portable
JavaServer Pages Standard Tag Library
5
Download và cài đặt
Download và cài đặt
Download
URL:
/>glibs-standard.cgi
Cài đặt
{taglib}/tld: copy vào thư mục /WEB-INF của ứng dụng
và khai báo trong tập tin web.xml
{taglib}/lib: copy các tập tin .jar vào thư mục /WEB-
INF/lib của ứng dụng
JavaServer Pages Standard Tag Library
6
Khai báo taglib trong web.xml
Khai báo taglib trong web.xml
<taglib>
<taglib-uri> /> <taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri> /> <taglib-location>/WEB-INF/c.tld</taglib location>
</taglib>
<taglib>
<taglib-uri> /> <taglib-location>/WEB-INF/sql.tld</taglib location>
</taglib>
<taglib>
<taglib-uri> /> <taglib-location>/WEB-INF/x.tld</taglib location>
</taglib>
JavaServer Pages Standard Tag Library
7
JSTL Tag Libraries
JSTL Tag Libraries
Core (prefix: c): tính năng cơ bản
Khai báo biến, cấu trúc điều khiển, thao tác với URL
Database (prefix: sql)
SQL: truy vấn và cập nhật
XML (prefix: x): xử lý XML
Tính năng cở bản, thao tác xử lý, hoán chuyển định dạng
Internationalization (i18n) (prefix: fmt)
Locale, định dạng message, định dạng số và ngày giờ
Functions (prefix: fn)
Collection length, thao tác trên String
JavaServer Pages Standard Tag Library
8
Khai báo sử dụng JSTL
Khai báo sử dụng JSTL
Core
<%@ taglib prefix=“c” uri=“ %>
XML
<%@ taglib prefix=“x” uri=“ %>
Internationalization (i18n)
<%@ taglib prefix=“fmt” uri=“ %>
Functions
<%@ taglib prefix=“fn” uri=“ %>
Database (SQL)
<%@ taglib prefix=“sql” uri=“ %>
Core Tags
Core Tags
JavaServer Pages Standard Tag Library
10
Core Tags Types
Core Tags Types
Khai báo và sử dụng biến
<c:set>
<c:remove>
Cấu trúc điều kiện
<c:if>
<c:choose>
<c:when>
<c:otherwise>
Iteration
<c:forEach>
<c:forTokens>
JavaServer Pages Standard Tag Library
11
Core Tags Types
Core Tags Types
Thao tác với URL
<c:import>
<c:param>
<c:redirect>
<c:param>
<c:url>
<c:param>
Các mục đích khác
<c:out>
<c:catch>
JavaServer Pages Standard Tag Library
12
Khai báo và sử dụng biến: <c:set>
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=“…” scope=“…” value=“…” />
<c:set var=“userId” scope=“request” value=“${param.userID}” />
<c:set var=“…”>value</c:set>
JavaServer Pages Standard Tag Library
13
Ví dụ
Ví dụ
Khai báo và định nghĩa biến
<c:set var="customerTable" scope="application">
<table border="1">
<c:forEach var="customer" items="${customers}">
<tr>
<td>${customer.lastName}</td>
<td><c:out value="${customer.firstName}
default="..."/></td>
<td>
<c:out value="${customer.address}">
<font color="red">no address specified</font>
</c:out>
</td>
</tr>
</c:forEach>
</table>
</c:set>
JavaServer Pages Standard Tag Library
14
Ví dụ
Ví dụ
Sử dụng biến đã định nghĩa
<c:out value="${customerTable}" escapeXml="false"/>
JavaServer Pages Standard Tag Library
15
Hủy biến nhớ
Hủy biến nhớ
Hủy một biến đã được khai báo và định nghĩa
<c:remove var="cart" scope="session“ />
JavaServer Pages Standard Tag Library
16
Sử dụng: <c:catch>
Sử dụng: <c:catch>
<c:catch var ="catchException">
command-block
</c:catch>
JavaServer Pages Standard Tag Library
17
Conditional Tags
Conditional Tags
Sử dụng thay cho lệnh Java
<c:if test=“…” >
Khối lệnh trong <c:if>được thực thi tùy thuộc và giá trị
của biểu thức test
<c:choose>
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
Nguyên tắc hoạt động giống if-then-else
JavaServer Pages Standard Tag Library
18
Ví dụ
Ví dụ
<c:if>
<c:if test="${customer.lastName == ‘Le’}">
${customer}<br>
</c:if>
<c:choose>
<c:choose>
<c:when test="${customer.lastName == ‘Le’}">
<font color="blue">
</c:when>
<c:when test="${customer.lastName == ‘Nguyen'}">
<font color="red">
</c:when>
<c:otherwise>
<font color="green">
</c:otherwise>
</c:choose>
${customer}</font><br>
JavaServer Pages Standard Tag Library
19
Iterator Tags
Iterator 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:
items: tập hợp các đối tượng
var: item hiện tại đang được duyệt
varStatus: trạng thái duyệt
begin, end, step: phạm vi duyệt và bước nhảy
Các kiểu dữ liệu tập hợp
java.util.Collection
java.util.Map
Kiểu dữ liệu của thuộc tính var là java.util.Map.Entry với hai
thành phần:
key
value