JSP-Thư viện chuẩn JSP-JSTL

JavaServer Pages Standard Tag Library (JSTL) là một thư viện thẻ chuẩn dành cho JSP, cung cấp các thẻ tùy chỉnh để thực hiện các tác vụ phổ biến như lặp lại, kiểm tra điều kiện, xử lý biểu thức, và làm việc với XML, quốc tế hóa, và cơ sở dữ liệu. JSTL giúp đơn giản hóa việc phát triển ứng dụng web bằng cách giảm bớt nhu cầu viết mã Java trong các trang JSP.

Thư viện JSTL: Link tải

JSTL được chia thành các nhóm thẻ chính như sau:

1. Core Tags (Thẻ Cơ Bản)

  • Thư viện core cung cấp các thẻ cơ bản để điều khiển luồng, xử lý biến, xuất văn bản, v.v.
  • Thường được khai báo với tiền tố c. URI:
   <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

Các thẻ phổ biến:

  • <c:out>: Xuất dữ liệu ra trang JSP, tương tự như <%= ... %>
<c:out value="${expression}" />
  • <c:if>: Thực hiện khối mã dựa trên điều kiện.
<c:if test="${condition}">
    <!-- Mã thực hiện khi điều kiện đúng -->
</c:if>
  • <c:choose>, <c:when>, <c:otherwise>: Thực hiện logic điều kiện tương tự như switch-case.
<c:choose>
    <c:when test="${condition1}">
        <!-- Mã thực hiện khi condition1 đúng -->
    </c:when>
    <c:otherwise>
        <!-- Mã thực hiện khi không có điều kiện nào đúng -->
    </c:otherwise>
</c:choose>
  • <c:forEach>: Lặp lại qua một collection, array, hoặc dãy số.
<c:forEach var="item" items="${collection}">
    ${item}
</c:forEach>
  • <c:forTokens>: Lặp lại qua các phần tử được phân tách bởi một dấu phân cách trong một chuỗi.
<c:forTokens var="token" items="item1,item2,item3" delims=",">
    ${token}
</c:forTokens>
  • <c:set>: Thiết lập một giá trị cho biến hoặc thuộc tính của một đối tượng.
<c:set var="variableName" value="value" />
  • <c:remove>: Xóa một biến khỏi scope nhất định.
<c:remove var="variableName" scope="session" />
  • <c:catch>: Xử lý ngoại lệ xảy ra trong khối mã JSP.
<c:catch var="exceptionVar">
    <!-- Mã có thể gây ra ngoại lệ -->
</c:catch>
  • <c:import>: Nhúng nội dung từ một URL hoặc một tài nguyên JSP khác.
<c:import url="relativeURL" />
  • <c:redirect>: Chuyển hướng yêu cầu đến một URL khác.
<c:redirect url="newURL" />
  • <c:url>: Xây dựng URL với các tham số truy vấn.
<c:url value="page.jsp">
    <c:param name="paramName" value="paramValue" />
</c:url>

2. Format Tags (Thẻ Định Dạng)

  • Thư viện format cung cấp các thẻ để định dạng và phân tích cú pháp dữ liệu như số, ngày, và chuỗi. Thường được sử dụng cho quốc tế hóa (i18n).
  • Thường được khai báo với tiền tố fmt. URI:
   <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

Các thẻ phổ biến:

  • <fmt:formatNumber>: Định dạng số theo một kiểu cụ thể.
<fmt:formatNumber value="${number}" type="currency" />
  • <fmt:parseNumber>: Phân tích cú pháp một chuỗi thành số.
<fmt:parseNumber var="number" value="1,234.56" />
  • <fmt:formatDate>: Định dạng ngày tháng theo một kiểu cụ thể.
<fmt:formatDate value="${date}" pattern="dd/MM/yyyy" />
  • <fmt:parseDate>: Phân tích cú pháp một chuỗi thành ngày.
<fmt:parseDate var="date" value="01/01/2024" pattern="dd/MM/yyyy" />
  • <fmt:bundle>: Xác định một resource bundle để lấy các chuỗi quốc tế hóa.
<fmt:bundle basename="messages">
    <fmt:message key="greeting" />
</fmt:bundle>
  • <fmt:message>: Lấy một chuỗi từ resource bundle.
<fmt:message key="greeting" />
  • <fmt:setLocale>: Đặt locale cho phiên làm việc hiện tại.
<fmt:setLocale value="en_US" />
  • <fmt:setBundle>: Đặt resource bundle mặc định cho trang JSP.
<fmt:setBundle basename="messages" />
  • <fmt:timeZone>: Đặt múi giờ mặc định cho định dạng ngày.
<fmt:timeZone value="GMT">
    <fmt:formatDate value="${date}" />
</fmt:timeZone>

3. SQL Tags (Thẻ SQL)

  • Thư viện SQL cung cấp các thẻ để tương tác với cơ sở dữ liệu từ JSP.
  • Thường được khai báo với tiền tố sql. URI:
   <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

Các thẻ phổ biến:

  • <sql:setDataSource>: Thiết lập nguồn dữ liệu cho các thao tác SQL.
<sql:setDataSource var="ds" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/mydb" user="root" password="password" />
  • <sql:update>: Thực thi câu lệnh SQL cập nhật (INSERT, UPDATE, DELETE).
<sql:update dataSource="${ds}">
    UPDATE users SET name='John' WHERE id=1
</sql:update>
  • <sql:query>: Thực thi câu lệnh SQL truy vấn (SELECT).
<sql:query var="result" dataSource="${ds}">
    SELECT * FROM users
</sql:query>
  • <sql:param>: Truyền tham số vào câu lệnh SQL.
<sql:query var="result" dataSource="${ds}">
    SELECT * FROM users WHERE id = ?
    <sql:param value="${userId}" />
</sql:query>
  • <sql:transaction>: Thực hiện các thao tác SQL trong một giao dịch.
<sql:transaction>
    <sql:update>
        INSERT INTO users (name) VALUES ('John')
    </sql:update>
    <sql:update>
        INSERT INTO orders (user_id, amount) VALUES (LAST_INSERT_ID(), 100)
    </sql:update>
</sql:transaction>

4. XML Tags (Thẻ XML)

  • Thư viện XML cung cấp các thẻ để xử lý và thao tác với dữ liệu XML.
  • Thường được khai báo với tiền tố x. URI:
   <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>

Các thẻ phổ biến:

  • <x:parse>: Phân tích cú pháp một chuỗi XML hoặc URL thành tài liệu XML.
<x:parse var="xmlDoc" xml="${xmlString}" />
  • <x:out>: Xuất nội dung của một nút XML hoặc kết quả của biểu thức XPath.
 <x:out select="$xmlDoc//title" />
  • <x:set>: Đặt giá trị của biến XPath.
 <x:set var="title" select="$xmlDoc//title" />
  • <x:forEach>: Lặp lại qua các nút XML được chọn bởi biểu thức XPath
<x:forEach var="book" select="$xmlDoc//book"> <x:out select="$book/title" /> </x:forEach>
  • <x:transform>: Áp dụng một stylesheet XSLT lên tài liệu XML và xuất kết quả.
 <x:transform xml="${xmlDoc}" xslt="${xsltDoc}" />
  • <x:choose>, <x:when>, <x:otherwise>: Điều khiển luồng dựa trên điều kiện XPath.
<x:choose> <x:when test="$xmlDoc//title = 'JSP'"> <!-- Mã thực hiện khi điều kiện đúng --> </x:when> <x:otherwise> <!-- Mã thực hiện khi không có điều kiện nào đúng --> </x:otherwise> </x:choose>

5. Function Tags (Thẻ Hàm)

  • Thư viện chức năng cung cấp các hàm tiện ích để thao tác chuỗi và các kiểu dữ liệu khác.
  • Thường được khai báo với tiền tố fn. URI:
   <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

Các hàm phổ biến:

  • fn:length: Trả về độ dài của một chuỗi, mảng, hoặc collection.
${fn:length(list)}
  • fn:contains: Kiểm tra xem chuỗi có chứa một chuỗi con không.
 ${fn:contains(string, substring)}
  • fn:startsWith: Kiểm tra xem chuỗi có bắt đầu bằng một chuỗi con cụ thể không.
${fn:startsWith(string, prefix)}
  • fn:endsWith: Kiểm tra xem chuỗi có kết thúc bằng một chuỗi con cụ thể không.
${fn:endsWith(string, suffix)}
  • fn:trim: Loại bỏ khoảng trắng ở đầu và cuối chuỗi.
${fn:trim(string)}
  • fn:toUpperCasefn:toLowerCase: Chuyển chuỗi thành chữ hoa hoặc chữ thường.
${fn:toUpperCase(string)}
  • fn:replace: Thay thế tất cả các xuất hiện của một chuỗi con bằng một chuỗi khác.
${fn:replace(string, "old", "new")}
  • fn:substring: Lấy một phần của chuỗi từ vị trí bắt đầu đến vị trí kết thúc.
${fn:substring(string, start, end)}
  • fn:join: Kết hợp các phần tử của một mảng hoặc collection thành một chuỗi, cách nhau bởi một dấu phân cách.
${fn:join(array, ',')}
  • fn:split: Tách một chuỗi thành mảng các chuỗi con dựa trên một dấu phân cách.
${fn:split(string, delimiter)}