Breaking

27 tháng 5, 2021

JSTL Trong Java Servlet

Mục lục:


A. Lý thuyết

JSTL Là gì

  • JSTL viết tắt của jsp standard tag library là  bộ thư viện thẻ tiêu chuẩn của JSP 
  • Đại diện cho một tập hợp các thẻ để đơn giản hóa sự phát triển của JSP
  • Thẻ JSTL có thể được phân loại, theo chức năng của chúng:


JSTL chủ yếu cung cấp năm loại thẻ:

Tag Name Description
Core tags Thẻ lõi JSTL cung cấp hỗ trợ biến, quản lý URL, điều khiển lưu lượng, v.v. URL cho thẻ lõi là http://java.sun.com/jsp/jstl/core. Tiền tố của thẻ lõi là c.
Function tags Các thẻ chức năng cung cấp hỗ trợ để thao tác chuỗi và độ dài chuỗi. URL cho các thẻ chức năng là http://java.sun.com/jsp/jstl/functions và tiền tố là fn.
Formatting tags Các thẻ định dạng cung cấp hỗ trợ cho định dạng tin nhắn, định dạng số và ngày, v.v. URL cho các thẻ định dạng là http://java.sun.com/jsp/jstl/fmt và tiền tố là fmt.
XML tags Các thẻ XML cung cấp điều khiển dòng chảy, chuyển đổi, vv URL cho các thẻ XML là http://java.sun.com/jsp/jstl/xml và tiền tố là. x.
SQL tags Các thẻ SQL JSTL cung cấp hỗ trợ SQL. URL cho các thẻ SQL là http://java.sun.com/jsp/jstl/sql và tiền tố là. sql.


Cách cài đặt thư viện JSTL

  • Một trong số những mã sau đều hoạt động, có thể có những mã khác cũng hoạt động.
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>2.0.0</version>
</dependency>

<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jstl</artifactId>
<version>11.0.0.beta2</version>
</dependency>

Cách sử dụng thẻ JSTL:

Core
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Function
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

Formatting
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

XML
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

SQL
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

Danh sách thẻ JSTL Core:


Tags Description
c:out Nó hiển thị kết quả của một biểu thức, tương tự như cách <%=...%> Tag hoạt động.
c:import Nó đã truy cập lại tương đối hoặc một URL tuyệt đối và hiển thị nội dung cho chuỗi 'var', một trình đọc trong 'varreader' hoặc trang.
c:set Nó đ ặt kết quả của một biểu thức đang được đánh giá trong một Biến 'scope' .
c:remove Nó được sử dụng để loại bỏ biến phạm vi được chỉ định khỏi một phạm vi cụ thể.
c:catch Nó được sử dụng để bắt bất kỳ ngoại lệ nào có thể xảy ra nào xảy ra trong cơ thể.
c:if Nó là thẻ có điều kiện được sử dụng để thử nghiệm điều kiện và chỉ hiển thị nội dung cơ thể nếu biểu thức đánh giá là true.
c:choose, c:when, c:otherwise Nó là thẻ có điều kiện đơn giản bao gồm nội dung cơ thể của nó nếu điều kiện được đánh giá là true.
c:forEach Nó là thẻ lặp cơ bản. Nó lặp lại hàm lượng cơ thể lồng nhau cho số lần cố định hoặc bộ sưu tập hơn.
c:forTokens Nó lặp qua các token được phân tách bằng các dấu hiệu được cung cấp.
c:param Nó thêm một tham số chứa  trong một 'import'  URL.
c:redirect Nó chuyển hướng trình duyệt sang một URL mới và hỗ trợ các URL tương đối ngữ cảnh.
c:url Nó tạo một URL với các tham số truy vấn tùy chọn.

Danh sách thẻ JSTL Function:


JSTL Functions Description
fn:contains() Nó được sử dụng để kiểm tra nếu một chuỗi đầu vào chứa chuỗi con được chỉ định trong một chương trình.
fn:containsIgnoreCase() Nó được sử dụng để kiểm tra nếu một chuỗi đầu vào chứa chuỗi con được chỉ định như một cách không phân biệt trường hợp.
fn:endsWith() Nó được sử dụng để kiểm tra nếu một chuỗi đầu vào kết thúc bằng hậu tố được chỉ định.
fn:escapeXml() Nó thoát khỏi các ký tự sẽ được hiểu là đánh dấu XML.
fn:indexOf() Nó trả về một chỉ mục trong một chuỗi xuất hiện đầu tiên của một chuỗi con được chỉ định.
fn:trim() Nó loại bỏ các khoảng trắng khỏi cả hai đầu của một chuỗi.
fn:startsWith() Nó được sử dụng để kiểm tra xem chuỗi đã cho có được bắt đầu với một giá trị chuỗi cụ thể hay không.
fn:split() Nó chia chuỗi thành một loạt các chuỗi con.
fn:toLowerCase() Nó chuyển đổi tất cả các ký tự của một chuỗi thành chữ thường.
fn:toUpperCase() Nó chuyển đổi tất cả các ký tự của một chuỗi thành chữ hoa.
fn:substring() Nó trả về tập hợp con của một chuỗi theo vị trí bắt đầu và kết thúc đã cho.
fn:substringAfter() Nó trả về tập hợp con của chuỗi sau một chuỗi con cụ thể.
fn:substringBefore() Nó trả về tập hợp con của chuỗi trước một chuỗi con cụ thể.
fn:length() Nó trả về số lượng ký tự bên trong một chuỗi hoặc số lượng mục trong một bộ sưu tập.
fn:replace() Nó thay thế tất cả sự xuất hiện của một chuỗi với một chuỗi chuỗi khác.

Danh sách thẻ JSTL Formatting

Formatting Tags Descriptions
fmt:parseNumber Nó được sử dụng để phân tích chuỗi đại diện của một loại tiền tệ, phần trăm hoặc số.
fmt:timeZone Nó chỉ định một hành động phân tích cú pháp lồng nhau trong body của nó hoặc múi giờ cho bất kỳ định dạng thời gian nào.
fmt:formatNumber Nó được sử dụng để định dạng giá trị số với định dạng hoặc độ chính xác cụ thể.
fmt:parseDate Nó phân tích chuỗi đại diện của một thời gian và ngày.
fmt:bundle Nó được sử dụng để tạo các đối tượng ResourceBundle sẽ được sử dụng bởi thẻ body của chúng.
fmt:setTimeZone Nó lưu trữ múi giờ bên trong biến cấu hình múi giờ.
fmt:setBundle Nó tải gói tài nguyên và lưu trữ nó trong biến cấu hình bó hoặc biến có tên có tên.
fmt:message Nó hiển thị một tin nhắn quốc tế hóa.
fmt:formatDate Nó định dạng thời gian và / hoặc ngày sử dụng mẫu và kiểu được cung cấp.

Danh sách thẻ JSTL XML


XML Tags Descriptions
x:out Tương tự như thẻ <%= ... >, nhưng đối với các biểu thức XPath.
x:parse Nó được sử dụng để phân tích dữ liệu XML được chỉ định trong phần thân thẻ hoặc thuộc tính.
x:set Nó được sử dụng để đặt một biến thành giá trị của biểu thức XPath.
x:choose Nó là một thẻ có điều kiện thiết lập bối cảnh cho các hoạt động có điều kiện loại trừ lẫn nhau.
x:when Nó là một tinh tế của nó sẽ bao gồm cơ thể của nó nếu điều kiện được đánh giá là 'true'.
x:otherwise Nó là SUBTAG theo đó các thẻ và chỉ chạy nếu tất cả các điều kiện trước được đánh giá là 'false'.
x:if Nó được sử dụng để đánh giá biểu thức XPath thử nghiệm và nếu true    , nó sẽ xử lý nội dung cơ thể của nó.
x:transform Nó được sử dụng trong một tài liệu XML để cung cấp chuyển đổi XSL (ngôn ngữ biểu định kiểu mở rộng).
x:param Nó được sử dụng cùng với thẻ biến đổi để cài đặt tham số trong bảng kiểu XSLT.


Danh sách thẻ JSTL SQL


SQL Tags Descriptions
sql:setDataSource Nó được sử dụng để tạo một nguồn dữ liệu đơn giản chỉ phù hợp để tạo mẫu.
sql:query Nó được sử dụng để thực hiện truy vấn SQL được xác định trong thuộc tính SQL hoặc body của nó.
sql:update Nó được sử dụng để thực hiện bản cập nhật SQL được xác định trong thuộc tính SQL của nó hoặc trong thẻ body.
sql:param Nó được sử dụng để đặt tham số trong câu lệnh SQL thành giá trị được chỉ định.
sql:dateParam Nó được sử dụng để đặt tham số trong câu lệnh SQL thành giá trị java.util.date được chỉ định.
sql:transaction Nó được sử dụng để cung cấp hành động cơ sở dữ liệu lồng nhau với một kết nối phổ biến.



B. Ví dụ mẫu về các thẻ JSTL


Các thẻ Format

Khai báo:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"  %> 


Ví dụ 1: Thẻ fmt:parseNumber 

Cú pháp được sử dụng để bao gồm thẻ <fmt: parseNumber>là:

<fmt:parseNumber thuộc tính > nội dung </fmt:parseNumber>


Nó được sử dụng để phân tích chuỗi đại diện của một loại tiền tệ, phần trăm hoặc số.


- Ví dụ đơn giản để hiểu định dạng thẻ <fmt: parseNumber>:


- Sau khi khởi chạy thì ta được kết quả:

 


Ví dụ 2: Thẻ fmt:paseDate

Cú pháp được sử dụng để bao gồm thẻ <fmt: parseDate> là:

< fmt: parseDate  thuộc tính />  


Nó phân tích chuỗi đại diện của một thời gian và ngày.


-Ví dụ đơn giản để hiểu định dạng thẻ <fmt: parseDate>:



- Sau khi khởi chạy thì ta được kết quả:



Các thẻ Core

Khai báo:

  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  


Ví dụ 1: 

Thẻ <c: if> được sử dụng để kiểm tra điều kiện và nó hiển thị nội dung phần thân, nếu biểu thức được đánh giá là đúng.

Đây là một thẻ điều kiện đơn giản được sử dụng để đánh giá nội dung nội dung, nếu điều kiện được cung cấp là đúng.

Hãy xem ví dụ đơn giản về thẻ <c: if>:

 

Trong file isp viết đoạn code:



Và đây là kết quả đoạn if này cho biết nếu giá trị của biến income lớn hơn 800 thì sẽ hiền thị như sau


Ví dụ 2:

Thẻ JSTL Core <c:choose> là thẻ có điều kiện thiết lập ngữ cảnh cho các hoạt động có điều kiện loại trừ lẫn nhau. Nó hoạt động giống như một câu lệnh chuyển đổi Java trong đó chúng ta chọn giữa một số lựa chọn thay thế.

Thẻ <c:when> là thẻ phụ của <choose> sẽ bao gồm phần nội dung của nó nếu điều kiện được đánh giá là 'true'.

Thẻ <c:otherwise> cũng là thẻ phụ của <choose> nó theo sau thẻ & l; twhen> và chỉ chạy nếu tất cả điều kiện trước đó được đánh giá là 'false'.

Câu lệnh c: when và c: else hoạt động giống như câu lệnh if-else. Nhưng nó phải được đặt bên trong thẻ c: select.

Hãy xem ví dụ đơn giản về thẻ <c: choose>, <c: when> <c:otherwise>

Kết quả trả về là Income is very good vì giá trị Income lớn hơn 10000:


Ví dụ 3:
Một ví dụ nữa về ví dụ chẵn lẻ và cách sử dụng <c:when> và <c:otherwise>

Trong file jsp:


Kết quả: Sẽ trả về biến num và thông báo nó là số chẵn

Ví dụ 4: Thẻ <c: for each>  đơn giản

Code:



Kết quả:




Ví dụ 5: Thẻ <c: for each>  là thẻ lặp được sử dụng để lặp lại nội dung phần thân lồng nhau mà người dùng đã chọn để hiển thị kết quả

Code:




Kết quả:



Các thẻ Functions

Khai báo:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 


Ví dụ 1: sử dụng fn:toUpperCase() để in hoa chữ:

Code:


Kết quả:



Ví dụ 2: sử dụng fn:length():  trả về số lượng ký tự bên trong một chuỗi hoặc số lượng các mục trong một bộ sưu tập.


Kết quả:




Cảm ơn bạn đã đọc bài viết. Hãy để lại bình luận cho chúng tôi nhé! 💜
Chúc các bạn học tập hiệu quả.

1 nhận xét:

  1. Tìm hiểu về JSTL Trong Java Servlet. Và làm các ví dụ về nó.

    Trả lờiXóa