77. 77
11.2 การพฒนาโปรแกรม helloTag.jsp
โปรแกรม helloTag.jsp เปนโปรแกรม JSP ทท.างานแบบเดยวกบโปรแกรม hello.jsp แต/การพฒนา
โปรแกรมนจะเขยนโดยการสราง custom tag ทชอ nameTag การสราง custom Tag จะตองมการพฒนาโปรแก
รมหลายๆ ส/วนดงน
11.2.1 สราง Tag Library Descriptor
ไฟล5นจะใชเกบ รายชอ Tag ต/างๆ ทมอย#/เพอสามารถน.า tag ต/างๆ มาใชในโปรแกรม JSP โดยใชค.าสง
<%@taglib ...%> การสราง Tag Library Descriptor จะมขนตอนดงน
1. เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด JSPDemo จากนนเลอกค.าสง New > Other...
2. ในไดอะลอก New File ใหเลอก Categories ทชอ Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ ภาย
ใต Category น ใหเราเลอก Tag Library Descriptor แลวกด Next
3. ก.าหนด TLD Name: เปน MyTags และค/า Folder เปน WEB-INFtlds ส/วนค/าอนๆ ใหเปนตามทตง
ไวดงร#ปท 11.2 แลวกด Finish
รปท 11.2 การก#าหนด Tag Library Descriptor
4. หนาต/าง Editor จะแสดงไฟล5ทชอ MyTags.tld ทอย#/ในโฟลเดอร5 Web PagesWEB-INFtlds
การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
78. 78
11.2.2 สรางไฟล5 Tag Handler
ไฟล5 Tag Handler จะเปนโปรแกรมจาวาทพฒนาข,นเพอระบ1วา เมอเรยกใช tag แลวจะตองท.าค.าสง
/
อย/างไร ในทนจะก.าหนดชอ Tag เปน NameTag และโปรแกรมจาวาเปน NameTagHandler โดยโปรแกรมจะ
ท.าการอ/านค/าพาราม0เตอร5 name และพ0มพ5ขอความ Hello xxxx จ.านวนส0บครง การสรางไฟล5 Tag Handler จะม
ขนตอนดงน
1. เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด JSPDemo จากนนเลอกค.าสง New > Other...
2. ในไดอะลอก New File ใหเลอก Categories ทชอ Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ ภาย
ใต Category น ใหเราเลอก Tag Handler แลวกด Next
3. ก.าหนด Class Name: เปน NameTagHandler ค/า Package เปน tags ส/วนค/าอนๆ ใหเปนตามทตงไว
ดงร#ปท 11.3 แลวกด Next
รปท 11.3 การก#าหนดคา Tag Handler
4. กดป16ม Browse เลอก TLD File: เปน MyTags.tld
5. กดป16ม New เพอเพ0ม Attribute
6. ในไดอะลอก Add New Attribute ก.าหนด Attribute Name: เปน name ค/า Attribute Type เปน
java.lang.String และเลอก required Attribute แลวกด Next
7. เราจะไดไดอะลอก New File ดงร#ปท 11.4 แลวกด Finish
8. หนาต/าง Editor จะแสดงไฟล5 NameTagHandler.java ใหเขยน source code ดง Listing ท 11.2
การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
79. 79
รปท 11.4 การกาหนดขอมล TLD ของไฟล! NameTagHandler
Listing ท 11.2 โปรแกรม NameTagHandler.java
package tags;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.JspException;
public class NameTagHandler extends SimpleTagSupport {
/**
* Initialization of name property.
*/
private java.lang.String name;
/**Called by the container to invoke this tag.
* The implementation of this method is provided by the tag library developer,
* and handles all tag processing, body iteration, etc.
*/
public void doTag() throws JspException {
JspWriter out=getJspContext().getOut();
try {
JspFragment f=getJspBody();
if (f != null) f.invoke(out);
for (int i = 0; i < 10; i++) {
out.println("Hello " + name + "<br>");
การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan