Phần này trình bày cách thức mà tác giả của trang web sử dụng tag library
trong JSP và giới thiệu các loại tag khác nhau. Các ví dụ trong phần này sẽ được định nghĩa trong phần III.
1. Khai báo các tag library.
Trang JSP sẽ sử dụng các tag được định nghĩa trong một tag library bằng cách đưa vào taglibdirective trong trang trước bất kỳ custom tag được sử dụng:
<%@ taglib uri = ‘/tlt’ prefix = ‘tlt’ %>
Thuộc tính uri tham chiếu tới URI đĩ là định danh duy nhất cho tag library. URI cĩ thể là URI tương đối hay tuyệt đối. Nếu URI tương đối thì nĩ phải được ánh xạ đến một URI tuyệt đối trong taglib element của bộ mơ tả triển khai ứng dụng Web, tập tin cấu hình này cùng với ứng dụng Web được phát triển theo bản đặt tả Java Servlet và JavaServer Pages.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 35
Thuộc tính prefix định nghĩa một tiếp đầu ngữ để phân biệt với các tag library khác, do đĩ thuộc tính này giải quyết được vấn đề xung đột về các tên tag.
2. Các loại tag.
Những custom action được diễn đạt bằng cú pháp XML. Chúng cĩ start tag, nội dung và end tag:
<tlt:tag> body </tlt:tag>
Một tag mà khơng cĩ nội dung được biểu diễn như sau: <tlt:tag />
a) Các tag đơn giản.
Một tag đơn giản sau triệu gọi một action và xuất ra lời chào “Hello World.”.
<tlt:helloWorld />
b)Các tag cĩ thuộc tính.
Một start tag của custom action cĩ thể chứa các thuộc tính dưới dạng attr = ‘value’. Các thuộc tính này tuỳ biến các tham số dùng trong các phương thức của một lớp java.
Các thuộc tính cĩ thể được gán một hay nhiều tham số trong một đối tượng request hoặc từ một hằng chuổi. Chỉ cĩ các kiểu thuộc tính trong bảng sau mới cĩ thể được gán từ các giá trị tham số của request và của các hằng chuổi
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 36
K
Kiiểểuutthhuuộộccttíínnhh PPhhưươơnnggtthhứứccvvaalluueeOOffcchhuuyyểểnncchhuuổổii
boolean or Boolean java.lang.Boolean.valueOf(String)
byte or Byte java.lang.Byte.valueOf(String)
char or Character java.lang.Character.valueOf(String)
double or Double java.lang.Double.valueOf(String)
int or Integer java.lang.Integer.valueOf(String)
float or Float java.lang.Float.valueOf(String)
long or Long java.lang.Long.valueOf(String)
Giá trị thuộc tính cĩ dạng <%= expression %> được tính vào thời gian yêu cầu. Giá trị của biểu thức tuỳ thuộc vào kiểu thuộc tính được xác định trong đối tượng cài đặt tag cịn gọi là tag handler (tag handler trong phần định nghĩa các tag).
<tlt:helloWorld name=’DHBK Ha Noi’/>
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 37
Tag cĩ thể bao hàm các custom tag, scripting element, HTML, và nội dung nằm giữa start tag và end tag. Trong ví dụ sau sẽ đưa ra thơng tin “lời chào” được cung cấp trong thân tag thay vì trong thuộc tính của nĩ.
<tlt:helloWorld> DHBK Ha Noi </tlt:helloWorld>
d) Các tag định nghĩa các biến kịch bản.
Một tag cĩ thể định nghĩa ra một biến mà biến này được dùng trong cùng một trang. Ví dụ sau đây minh hoạ cách thức định nghĩa và sử dụng một biến chứa một đối tượng được trả về.
e) Kết hợp các tag.
Các tag kết hợp với nhau bằng các phương pháp của các đối tượng dùng chung. Trong ví dụ sau, tag1 tạo một đối tượng cĩ tên là obj1, sau đĩ được sử dụng lại bởi tag2. Qui tắc này được khuyến khích bởi bảng đặt tả JSP, một tag tạo ra một tên với thuộc tính id và tag thứ hai cĩ thuộc tính name để dùng lại tên này.
<tlt:tag1 id=’obj1’ attr2=’value’/> <tlt:tag2 name=’obj1’/>
Trong ví dụ kết tiếp, dùng các tag lồng nhau tương tự như trong XML và HTML.
<tlt:outerTag> <tlt:innerTag /> <tlt:outerTag>
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 38