Thư viện thẻ chuẩn - Standard Tag Library (JSTL) trong JSP
JavaServer Pages Standard Tag Library (JSTL) là một tập hợp các thẻ JSP hữu ích, mà gói các tính năng lõi phổ biến tới các ứng dụng JSP.
JSTL hỗ trợ tới các tác vụ phổ biến và có tính cấu trúc, ví dụ như các tính lặp và điều kiện, các thẻ để thao tác tài liệu XML, các thẻ đa ngôn ngữ, và các thẻ SQL. Nó cũng cung cấp Framework để tích hợp các Custom Tags với các thẻ JSTL.
Các thẻ JSTL có thể được phân loại, theo tính năng của nó, thành các nhóm thư viện thẻ JSTL sau, mà có thể được sử dụng khi tạo một JSP page:
Core Tags: Nhóm thẻ cơ bản
Formatting tags: Nhóm thẻ định dạng
SQL tags: Nhóm thẻ SQL
XML tags: Nhóm thẻ XML
JSTL Functions: Nhóm hàm JSTL
Cài đặt thư viện JSTL
Nếu bạn đang sử dụng Apache Tomcat container, thì bạn theo hai bước sau:
Tải bản phân phối nhị phân từ Apache Standard Taglib và mở file nén đó.
Để sử dụng Standard Taglib từ Jakarta Taglib, đơn giản bạn chỉ cần sao chép các JAR file trong thư mục 'lib' tới thư mục webapps\ROOT\WEB-INF\lib trong ứng dụng của bạn.
Để sử dụng bất kỳ thư viện nào, bạn phải bao một <taglib> tại trên cùng của mỗi JSP mà sử dụng thư viện đó.
Nhóm Core Tags trong JSTL
Nhóm Core Tags là các thẻ JSTL được sử dụng phổ biến nhất. Sau đây là cú pháp đơn giản để bao thư viện JSTL Core trong JSP của bạn:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/html/core" %>
Bảng dưới liệt kê các thẻ trong nhóm Core Tags trong JSTL:
Thẻ | Miêu tả |
---|---|
Thẻ <c:out > trong JSTL | Giống <%= ... >, nhưng cho các Expression |
Thẻ <c:set > trong JSTL | Thiết lập kết quả của một ước lượng Expression trong một 'scope' |
Thẻ <c:remove > trong JSTL | Gỡ bỏ một biến mục tiêu (từ một biến scope cụ thể, nếu đã xác định) |
Thẻ <c:catch> trong JSTL | Bắt bất kỳ Throwable mà xuất hiện trong thân của nó và trưng bày nó một cách tùy ý |
Thẻ <c:if> trong JSTL | Thẻ điều kiện đơn giản, mà ước lượng phần thân của nó nếu điều kiện đã cho là true |
Thẻ <c:choose> trong JSTL | Thẻ điều kiện đơn giản mà thiết lập một context cho các hoạt động điều kiện loại trừ, được đánh dấu bởi <when> và <otherwise> |
Thẻ <c:when> trong JSTL | Thẻ phụ của <choose> mà include phần thân của nó nếu điều kiện được ước lượng là true |
Thẻ <c:otherwise > trong JSTL | Thẻ phụ của <choose> mà theo sau thẻ <when> và chỉ chạy nếu tất cả điều kiện trước được ước lượng là 'false' |
Thẻ <c:import> trong JSTL | Thu nhận một URL tuyệt đối hoặc quan hệ và trưng bày nội dung của nó tới hoặc trang đó, một String trong 'var', hoặc một Reader trong 'varReader' |
Thẻ <c:forEach > trong JSTL | Thẻ lặp cơ bản, chấp nhận nhiều kiểu tập hợp khác nhau và hỗ trợ subsetting (chia tập con) và tính năng khác |
Thẻ <c:forTokens> trong JSTL | Lặp qua các token, được phân biệt bởi các dấu phân tách (delimiter) đã cung cấp |
Thẻ <c:param> trong JSTL | Thêm một parameter tới một URL của thẻ đang chứa 'import' |
Thẻ <c:redirect > trong JSTL | Redirect tới một URL mới |
Thẻ <c:url> trong JSTL | Tạo một URL với các tham số truy vấn tùy ý |
Nhóm Formatting Tags trong JSTL
Nhóm Formatting Tags trong JSTL được sử dụng để định dạng và hiển thị text, date, time và số ngôn ngữ trong Website. Sau đây là cú pháp cơ bản để include thư viện thẻ định dạng trong JSP của bạn.
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/html/fmt" %>
Bảng dưới liệt kê các thẻ trong nhóm Formatting Tags trong JSTL:
Thẻ | Miêu tả |
---|---|
Thẻ <fmt:formatNumber> trong JSTL | Trả lại giá trị số với định dạng cụ thể |
Thẻ <fmt:parseNumber> trong JSTL | Parse biểu diễn chuỗi của một số, tiền tệ, phần trăm |
Thẻ <fmt:formatDate> trong JSTL | Định dạng một date/time bởi sử dụng Style và Pattern đã cho |
Thẻ <fmt:parseDate> trong JSTL | Parse biểu diễn chuỗi của một date/time |
Thẻ <fmt:bundle> trong JSTL | Tải một Resource Bundle để được sử dụng bởi phần thân thẻ |
Thẻ <fmt:setLocale> trong JSTL | Lưu giữ Locale đã cho trong biến cấu hình locale |
Thẻ <fmt:setBundle> trong JSTL | Tải một Resource Bundle và lưu giữ nó trong biến scope đã đặt tên hoặc biến cấu hình bundle |
Thẻ <fmt:timeZone> trong JSTL | Xác định timezone cho bất kỳ định dạng time nào hoặc parse các action được lặp trong phần thân của nó |
Thẻ <fmt:setTimeZone> trong JSTL | Lưu giữ timezone đã cung câp biến cấu hình time zone đó |
Thẻ <fmt:message> trong JSTL | Hiển thị một thông báo đa ngôn ngữ |
Thẻ <fmt:requestEncoding> trong JSTL | Thiết lập mã hóa ký tự cho request |
Nhóm SQL Tags trong JSTL
Nhóm SQL Tags trong JSTL cung cấp các thẻ để tương tác với các Relational Database (RDBMSs), ví dụ như Oracle, MySQL, hoặc Microsoft SQL Server.
Đây là cú pháp để bao nhóm SQL Tags trong JSTL trong JSP của bạn:
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/html/sql" %>
Bảng dưới liệt kê các thẻ trong nhóm SQL Tags trong JSP:
Thẻ | Miêu tả |
---|---|
Thẻ <sql:setDataSource> trong JSTL | Tạo một DataSource đơn giản chỉ thích hợp cho prototype |
Thẻ <sql:query> trong JSTL | Thực thi SQL query được định nghĩa trong phần thân của nó hoặc thông qua thuộc tính sql |
Thẻ <sql:update> trong JSTL | Thực thi SQL update được định nghĩa trong phần thân của nó hoặc thông quan thuộc tính sql |
Thẻ <sql:param> trong JSTL | Thiết lập một parameter trong một lệnh SQL tới giá trị đã xác định |
Thẻ <sql:dateParam> trong JSTL | Thiết lập một parameter trong một lệnh SQL tới giá trị java.util.Date đã xác định |
Thẻ <sql:transaction > trong JSTL | Cung cấp các phần tử database action được lặp với một Connection đã chia sẻ, thiết lập để thực thi tất cả các lệnh |
Nhóm XML Tags trong JSTL
Nhóm XML Tags trong JSTL cung cấp một cách để tạo và thao tác các tài liệu XML. Sau đây là cú pháp để include nhóm XML Tags trong JSP của bạn:
Thư viện thẻ XML Tags trong JSTL có các custom tags để tương tác với XML data. Điều này bao gồm việc parse XML, truyền tải XML data, và điều khiển dòng dữ liệu dựa trên các XPath Expression.
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/html/xml" %>
Trước khi đi vào ví dụ, bạn cần copy hai XML sau và các thư viện XPath liên quan vào trong <Tomcat Installation Directory>\lib:
XercesImpl.jar: Tải nó từ http://www.apache.org/dist/xerces/j/
xalan.jar: Tải nó từ http://xml.apache.org/xalan-j/index.html
Dưới đây liệt kê các thẻ trong nhóm XML Tags trong JSTL:
Thẻ | Miêu tả |
---|---|
Thẻ <x:out> trong JSTL | Giống <%= ... >, nhưng dành cho các XPath Expression |
Thẻ <x:parse> trong JSTL | Sử dụng để parse XML data được xác định hoặc thông qua một thuộc tính hoặc trong phần thân thẻ |
Thẻ <x:set > trong JSTL | Thiết lập một biến tới giá trị của một XPath expression |
Thẻ <x:if > trong JSTL | Ước lượng XPath Expression và nếu nó là true, thì nó xử lý phần thân thẻ. Nếu điều kiện là false, phần thân bị bỏ qua |
Thẻ <x:forEach> trong JSTL | Lặp qua các node trong một tài liệu XML |
Thẻ <x:choose> trong JSTL | Thẻ điều kiện đơn giản mà thiết lập một context cho hoạt động điều kiện loại trừ, được đánh dấu bởi <when> và <otherwise> trong JSTL |
Thẻ <x:when > trong JSTL | Thẻ phụ của <choose> mà bao phần thân thẻ nếu Expression được ước lượng là 'true' |
Thẻ <x:otherwise > trong JSTL | Thẻ phụ của <choose> mà theo sau các thẻ <when> và chỉ chạy khi nếu tất cả điều kiện trước là 'false' |
Thẻ <x:transform > trong JSTL | Áp dụng một phép biến đổi XSL trên một tài liệu XML |
Thẻ <x:param > trong JSTL | Sử dụng cùng với thẻ transform để thiết lập một parameter trong XSLT stylesheet |
Nhóm JSTL Functions
JSTL bao gồm một số hàm chuẩn, mà hầu hết là các hàm thao tác chuỗi phổ biến. Sau đây là cú pháp để bao nhóm JSTL Functions trong chương trình JSP của bạn:
z <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/html/functions" %>
Bảng dưới liệt kê danh sách các JSTL Functions:
Hàm | Miêu tả |
---|---|
Hàm fn:contains() trong JSTL | Kiểm tra nếu một chuỗi input chứa chuỗi phụ đã cho |
Hàm fn:containsIgnoreCase() trong JSTL | Kiểm tra nếu một chuỗi input chứa chuỗi phụ đã cho trong trường hợp không phân biệt kiểu chữ |
Hàm fn:endsWith() trong JSTL | Kiểm tra nếu một chuỗi input kết thúc với suffix đã cho |
Hàm fn:escapeXml() trong JSTL | Các ký tự thoát mà có thể được phiên dịch như XML markup |
Hàm fn:indexOf() trong JSTL | Trả về index bên trong một chuỗi về sự xuất hiện đầu tiên của chuỗi phụ |
Hàm fn:join() trong JSTL | Kết hợp tất cả phần tử trong một mảng thành một chuỗi |
Hàm fn:length() trong JSTL | Trả về số item trong một tập hợp, hoặc số ký tự trong một chuỗi |
Hàm fn:replace() trong JSTL | Trả về một chuỗi là kết quả của việc thay thế một chuỗi input với một chuỗi đã cho |
Hàm fn:split() trong JSTL | Chia một chuỗi thành một mảng các chuỗi phụ |
Hàm fn:startsWith() trong JSTL | Kiểm tra nếu một chuỗi input bắt đầu với prefix đã cho |
Hàm fn:substring() trong JSTL | Trả về một tập con của một chuỗi |
Hàm fn:substringAfter() trong JSTL | Trả về một tập con của một chuỗi ở sau một chuỗi phụ đã cho |
Hàm fn:substringBefore() trong JSTL | Trả về một tập con của một chuỗi ở trước một chuỗi phụ đã cho |
Hàm fn:toLowerCase() trong JSTL | Biến đổi tất cả ký tự của một chuỗi thành chữ thường |
Hàm fn:toUpperCase() trong JSTL | Biến đổi tất cả ký tự của một chuỗi thành chữ hoa |
Hàm fn:trim() trong JSTL | Gỡ bỏ các khoảng trống trắng từ hai đầu của một chuỗi |
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack
Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Các bài học JSP khác tại VietJack:
- JSP - Cấu trúc
- JSP - Vòng đời (Life Cycle)
- JSP - Cú pháp
- JSP - Directive
- JSP - Action
- JSP - Đối tượng ẩn (Implicit)