Thẻ tùy chỉnh là một phần tử ngôn ngữ JSP do người dùng xác định. Khi một trang JSP có chứa thẻ tùy chỉnh được dịch sang một servlet, thẻ sẽ được chuyển đổi thành các hoạt động trên một đối tượng được gọi là trình xử lý thẻ. Sau đó, vùng chứa Web sẽ gọi các hoạt động đó khi servlet của trang JSP được thực thi.
Phần mở rộng thẻ JSP cho phép bạn tạo các thẻ mới mà bạn có thể chèn trực tiếp vào Trang JavaServer. Đặc tả JSP 2.0 đã giới thiệu Trình xử lý thẻ đơn giản để viết các thẻ tùy chỉnh này.
Để viết thẻ tùy chỉnh, bạn chỉ cần mở rộng SimpleTagSupport và ghi đè doTag () , nơi bạn có thể đặt mã của mình để tạo nội dung cho thẻ.
Tạo thẻ "Xin chào"
Hãy xem xét bạn muốn xác định một thẻ tùy chỉnh có tên
<ex:Hello />
Để tạo thẻ JSP tùy chỉnh, trước tiên bạn phải tạo một lớp Java hoạt động như một trình xử lý thẻ. Bây giờ, hãy để chúng tôi tạo HelloTag lớp như sau -
package com.tutorialspoint; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class HelloTag extends SimpleTagSupport { public void doTag() throws JspException, IOException { JspWriter out = getJspContext().getOut(); out.println("Hello Custom Tag!"); } }
Đoạn mã trên có mã hóa đơn giản trong đó doTag () phương thức nhận đối tượng JspContext hiện tại bằng cách sử dụng getJspContext () và sử dụng nó để gửi "Xin chào Thẻ tùy chỉnh!" vào JspWriter hiện tại đối tượng
Hãy để chúng tôi biên dịch lớp trên và sao chép nó trong một thư mục có sẵn trong biến môi trường CLASSPATH. Cuối cùng, tạo tệp thư viện thẻ sau:
<taglib> <tlib-version>1.0</tlib-version> <jsp-version>2.0</jsp-version> <short-name>Example TLD</short-name> <tag> <name>Hello</name> <tag-class>com.tutorialspoint.HelloTag</tag-class> <body-content>empty</body-content> </tag> </taglib>
Bây giờ, hãy để chúng tôi sử dụng thẻ tùy chỉnh được xác định ở trên Xin chào trong chương trình JSP của chúng tôi như sau -
<%@ taglib prefix = "ex" uri = "WEB-INF/custom.tld"%> <html> <head> <title>A sample custom tag</title> </head> <body> <ex:Hello/> </body> </html>
Gọi JSP ở trên và điều này sẽ tạo ra kết quả sau -
Hello Custom Tag!