7.1 c:if, c:forEach
Mọi người đều thích mã sử dụng thẻ thay vì mã Java, vì vậy họ quyết định mở rộng phạm vi. Nhưng lập trình không giới hạn trong việc tạo các đối tượng và đọc các thuộc tính của chúng. Bạn cần gọi các phương thức của đối tượng, làm việc với cơ sở dữ liệu và các dịch vụ khác. phải làm gì?
Bạn chỉ cần biểu diễn mỗi câu lệnh Java dưới dạng một thẻ. Đã if
, sẽ <if>
, đã for
, sẽ, <for>
v.v. Được rồi, được rồi, đùa thôi, không phải như vậy đâu. Chà, không thể là mọi người thực sự quyết định làm điều đó. Nhưng không, có thể!
Các lập trình viên được phép thêm bất kỳ thẻ nào vào mã. Về nguyên tắc, không có gì phải lo lắng - JSP là một tiêu chuẩn có thể mở rộng. Nhưng họ đã đi xa hơn và phát hành Thư viện thẻ tiêu chuẩn JSP - JSTL. Trang với nó trông như thế này:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> JSTL Example</title>
</head>
<body>
<c:set var = "salary" scope = "session" value = "${2000*5}"/>
<c:if test = "${ salary > 2000}">
<p>My salary is: <c:out value = "${salary}"/><p>
</c:if>
</body>
</html>
Rất có thể bạn sẽ bắt gặp đoạn mã như vậy trong các dự án tương lai của mình, ở đó tôi sẽ đưa ra một số giải thích.
7.2 Hàm JSTL
Các hàm JSTL được chia thành 5 loại:
- Thẻ chính;
- Định dạng thẻ;
- thẻ SQL;
- thẻ XML;
- Các chức năng gọi.
Tôi sẽ không liệt kê tất cả, nhưng tôi sẽ liệt kê những cái phổ biến nhất. Hãy bắt đầu với các thẻ chính:
1 | <c:out> |
Xuất biểu thức đã chỉ định - tương đương với <%= %> |
2 | <c:set> |
Viết kết quả của một biểu thức vào một biến |
3 | <c:remove> |
Xóa một biến |
4 | <c:catch> |
Bắt ngoại lệ |
5 | <c:if> |
tương tự của nếu |
6 | <c:choose> |
công tắc tương tự |
7 | <c:when> |
Được sử dụng cùng với lựa chọn |
số 8 | <c:otherwise> |
Được sử dụng cùng với lựa chọn |
9 | <c:import> |
Cho phép bạn đưa nội dung vào mã (tương đương với lệnh nhập) |
10 | <c:forEach> |
cho mỗi vòng lặp |
mười một | <c:param> |
Cho phép bạn đặt các tùy chọn để nhập |
12 | <c:redirect> |
chuyển hướng |
13 | <c:url> |
Tạo một URL có tham số |
Tôi sẽ chỉ đưa ra một ví dụ và kết thúc với điều đó. Về nguyên tắc, hoàn toàn có thể đọc mã như vậy sau một số kỹ năng. Nhưng tôi không khuyên bạn nên viết.
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> Each Tag Example&</title>
</head>
<body>
<c:forEach var = "i" begin = "1" end = "5">
Item <c:out value = "${i}"/><p>
</c:forEach>
</body>
</html>
Thử nghĩ mà xem, chúng ta viết mã Java dưới dạng các thẻ, để sau đó trình phân tích cú pháp JSP sẽ chuyển các thẻ này thành mã Java. Một cái gì đó trong thế giới này đã đi sai.
Nhân tiện, bạn có thể viết thư viện thẻ của riêng mình. Tôi thậm chí đã từng làm việc trong một dự án nơi họ ở. Trải nghiệm tuyệt vời. Ngay sau khi bất kỳ thay đổi nào được thực hiện đối với thư viện, toàn bộ jsp sẽ bị hỏng ngay lập tức.
Bạn muốn gì? Trình biên dịch không theo dõi những thay đổi đó. Chúng chỉ có thể được tìm thấy trực quan khi xem các trang HTML được tạo. Và nếu đây là một số tình huống hiếm hoi phát sinh trong những tình huống không tầm thường ... Chúa phù hộ cho sự phát triển phụ trợ và gõ tĩnh!