Thành viên trong nhóm :
1. Phan Minh Trí
2. Thái Thanh Tâm
3. Nguyễn Văn Quốc Huy
4. Nguyễn Phú Hội
Ứng dụng đơn giản
Ứng dụng phức tạp
Gọi trực tiếp JSP code
Gọi JSP code thông qua class
Beans
Kết hợp JSP/Servlet (sử dụng
mô hình MVC)
• Sử dụng TAG
• Sử dụng tổng hợp (Beans kết
hợp mô hình MVC, kết hợp
TAG và một số framework
khác (JSF 2.0, …)
•
•
•
•
•
•
•
•
•
Tag là gì ?
Tại sao phải sử dụng tag trong JSP ?
Có bao nhiêu loại tag ?
Điểm khác biệt giữa các loại ?
Cách sử dụng từng loại ?
Thành phần :
1.JSP Page sử dụng TAG
2.Tag Library Descriptor file (TLD file)
3.Handler class
Chức năng : Sử dụng TAG
Đặt ở đâu : Trong /
Cấu trúc :
• Import file TLD
• Định nghĩa tag-prefix
<%@ taglib uri="/WEB-INF/path-to-tld.tld“ prefix=“someprefix" %>
• Cách đặt tag
•
• tagName : phải trùng với element name của tag trong
file TLD
• prefix : phải trùng với prefix được định nghĩa ở trên
Chức năng : xác định dữ liệu sẽ xuất ra cho TAG
Đặt ở : Cùng với thư mục chứa các file class servlet
(thông thường ở /src)
Cấu trúc :
• Kế thừa class SimpleTagSupport
• Import các package cần thiết :
• javax.servlet.jsp.*
• javax.servlet.jsp.tagext.*
• java.io.*
• Override hàm doTag
• Sử dụng JspWriter để xuất dữ liệu ra cho TAG
package coreservlets.tags;
import
import
import
import
import
javax.servlet.jsp.*;
javax.servlet.jsp.tagext.*;
java.io.*;
java.math.*;
coreservlets.Primes;
public class SimplePrimeTag extends SimpleTagSupport {
protected int length = 10;
@Override
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
BigInteger prime =
Primes.nextPrime(Primes.random(length));
out.print(prime);
}
}
Chức năng : mô tả thành phần của TAG (name, attributes) và điều
hướng đến handler class
Đặt : Trong /WEB-INF
Cấu trúc : ngôn ngữ XML
• Bắt đầu bằng XML header
• 2 Element tiếp theo mô tả vài thông tin chung của tag
•
•
• Định nghĩa mỗi element khác nhau với các element con :
• (optional) : mô tả tag
• (required) : tên tag
• (required) : tên handler class
• (optional)
• (optional)
1.0csajsp-taglibOutputs 50-digit primessimplePrimecoreservlets.tags.SimplePrimeTag
empty
Cách đặt tag
•
• tagName : phải trùng với giá trị của trong
file TLD
• Tên thuộc tính phải trùng với giá trị trong
của tương ứng trong file TLD
• prefix : phải trùng với prefix được định nghĩa
<%@ taglib uri="/WEB-INF/tlds/csajsp-taglib.tld“
prefix="csajsp" %>
20-digit:
40-digit:
80-digit:
Default (50-digit):
• Thêm element vào trong element
• Element có các element con sau :
• : tên thuộc tính
• : có bắt buộc hay không (true/false)
Outputs an N-digit primeprime-with-attributecoreservlets.tags.PrimeTagemptylengthfalse
• Thêm hàm xử lý thuộc tính vào class xử lý tag
public void setAttribute1(String value)
{
doSomethingWith(value);
}
• Lưu ý:
package coreservlets.tags;
public class PrimeTag extends SimplePrimeTag {
protected int length = 50;
public void setLength(String length) {
try {
this.length = Integer.parseInt(length);
}
catch(NumberFormatException nfe) {}
}
}
Cách đặt tag :
Scriptless JSP Content
<%@ taglib uri="/WEB-INF/tlds/csajsp-taglib.tld“
prefix="csajsp" %>
First Heading
• Thêm element vào trong element
• Giá trị hợp lệ của
• empty: rỗng
• scriptless : chứa plaintext, EL, tags khác, điều hướng trang
• tagdependent : content được xử lý bởi tag
Formats enclosed headingheadingcoreservlets.tags.HeadingTagscriptless
Sử dụng
getJspBody().invoke(null);
để xuất content có trong tag
package coreservlets.tags;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
public class HeadingTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
out.println(“”);
// Output content of the body
getJspBody().invoke(null);
out.println(“”);
}
}
Bao gồm 2 thành phần :
Tag file :
• Đặt tại /WEB-INF/tags/
• Tên : some-name.tag
JSP page sử dụng tag :
• Trỏ đến thư mục/WEB-INF/tags hoặc
một thư mục con.