บทช่วยสอน แท็กที่กำหนดเอง JSP ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ สร้าง "ฮัลโหล" ฉลาก,ร่างกายแท็บการเข้าถึง,คุณลักษณะแท็กที่กำหนดเอง,
ป้ายที่กำหนดเองที่มีผู้ใช้กำหนดองค์ประกอบ JSP ภาษา เมื่อหน้า JSP มีแท็กที่กำหนดเองจะถูกแปลงเป็นเซิร์ฟเล็ตแปลงฉลากสำหรับวัตถุที่เรียกว่าการดำเนินงานจัดการแท็กว่าเมื่อดำเนินการเว็บคอนเทนเนอร์เซิร์ฟเล็ตโทรการดำเนินงานเหล่านั้น
JSP ขยายแท็กช่วยให้คุณสามารถสร้างป้ายกำกับใหม่และสามารถแทรกโดยตรงหน้า JSP JSP 2.0 คุณสมบัติแนะนำ Handlers แท็กง่ายต่อการเขียนแท็กที่กำหนดเองเหล่านี้
คุณสามารถรับช่วงชั้น SimpleTagSupport และแทนที่ doTag () วิธีการที่จะพัฒนาป้ายที่กำหนดเองง่ายๆ
ต่อไปเราต้องการที่จะสร้างป้ายที่กำหนดเองที่เรียกว่า <EX: สวัสดี> รูปแบบแท็ก:
<ex:Hello />
เพื่อสร้างแท็ก JSP ที่กำหนดเองคุณต้องสร้างการจัดการที่มีฉลากเรียน Java ดังนั้นขอสร้างชั้น HelloTag เป็นดังนี้
package com.w3big; 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!"); } }
รหัสต่อไปนี้แทน doTag () วิธีการวิธีการที่ใช้ getJspContext () วิธีการที่จะได้รับวัตถุ JspContext ปัจจุบันและ "แท็กสวัสดีที่กำหนดเอง!" จะถูกส่งผ่านไปยังวัตถุ JspWriter
รวบรวมเรียนข้างต้นและคัดลอกไปยังสภาพแวดล้อมไดเรกทอรีตัวแปรคลาสพา ธ สุดท้ายสร้างห้องสมุดต่อไป Tag: <ไดเรกทอรีการติดตั้ง Tomcat> webapps \ root \ WEB-INF \ custom.tld
<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.w3big.HelloTag</tag-class> <body-content>empty</body-content> </tag> </taglib>
ต่อไปเราจะสามารถใช้แท็กสวัสดีในไฟล์ JSP:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%> <html> <head> <title>A sample custom tag</title> </head> <body> <ex:Hello/> </body> </html>
เอาท์พุทโปรแกรมข้างต้นเป็น:
Hello Custom Tag!
คุณอาจจะเป็นเหมือนห้องสมุดแท็กเดียวกันมาตรฐานมีเนื้อหาข้อความในฉลาก ในฐานะที่เราต้องการที่จะรวมเนื้อหาในสวัสดีเรากำหนดเองรูปแบบจะเป็นดังนี้:
<ex:Hello> This is message body </ex:Hello>
เราสามารถปรับเปลี่ยนแฟ้มคลาแท็กจัดการดังนี้
package com.w3big; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class HelloTag extends SimpleTagSupport { StringWriter sw = new StringWriter(); public void doTag() throws JspException, IOException { getJspBody().invoke(sw); getJspContext().getOut().println(sw.toString()); } }
ต่อไปเราจะต้องแก้ไขไฟล์ TLD ดังต่อไปนี้:
<taglib> <tlib-version>1.0</tlib-version> <jsp-version>2.0</jsp-version> <short-name>Example TLD with Body</short-name> <tag> <name>Hello</name> <tag-class>com.w3big.HelloTag</tag-class> <body-content>scriptless</body-content> </tag> </taglib>
ตอนนี้เราสามารถใช้ป้ายปรับเปลี่ยนใน JSP ดังต่อไปนี้:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%> <html> <head> <title>A sample custom tag</title> </head> <body> <ex:Hello> This is message body </ex:Hello> </body> </html>
เอาท์พุทโปรแกรมดังกล่าวข้างต้นจะเป็นดังนี้:
This is message body
คุณสามารถตั้งค่าเกณฑ์ที่กำหนดเองในคุณสมบัติต่างๆที่จะได้รับทรัพย์สินมีค่าของระดับแท็กที่กำหนดเองจะต้องใช้วิธีการ Setter วิธี JavaBean Setter มีดังนี้:
package com.w3big; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class HelloTag extends SimpleTagSupport { private String message; public void setMessage(String msg) { this.message = msg; } StringWriter sw = new StringWriter(); public void doTag() throws JspException, IOException { if (message != null) { /* 从属性中使用消息 */ JspWriter out = getJspContext().getOut(); out.println( message ); } else { /* 从内容体中使用消息 */ getJspBody().invoke(sw); getJspContext().getOut().println(sw.toString()); } } }
ชื่อของสถานที่ให้บริการคือ "ข้อความ" ดังนั้น Setter คือ setMessage (ที่) ตอนนี้ขอใช้ไฟล์ TLD ก <แอตทริบิวต์> องค์ประกอบเพื่อเพิ่มคุณสมบัตินี้:
<taglib> <tlib-version>1.0</tlib-version> <jsp-version>2.0</jsp-version> <short-name>Example TLD with Body</short-name> <tag> <name>Hello</name> <tag-class>com.w3big.HelloTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>message</name> </attribute> </tag> </taglib>
ตอนนี้เราสามารถใช้คุณสมบัติของข้อความในไฟล์ JSP ที่แสดงด้านล่าง:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%> <html> <head> <title>A sample custom tag</title> </head> <body> <ex:Hello message="This is custom tag" /> </body> </html>
ตัวอย่างของข้อมูลดังกล่าวข้างต้นส่งออกเป็น:
This is custom tag
นอกจากนี้คุณยังสามารถรวมคุณสมบัติต่อไปนี้:
คุณสมบัติ | ลักษณะ |
---|---|
ชื่อ | กำหนดชื่อของทรัพย์สิน แต่ละแท็กชื่อแอตทริบิวต์ต้องไม่ซ้ำกัน |
จำเป็นต้องใช้ | ระบุว่าแอตทริบิวต์เป็นสิ่งจำเป็นหรือไม่จำเป็นถ้าตั้งค่าเป็นเท็จไม่จำเป็น |
rtexprvalue | เมื่อคุณเรียกใช้คำสั่งการแสดงออกคุณลักษณะแท็กที่ถูกต้อง |
ชนิด | กำหนดประเภทชั้น Java ของทรัพย์สินเริ่มต้นที่ระบุไว้เป็นสตริง |
ลักษณะ | ลักษณะ |
ส่วน | ถ้าคุณประกาศทรัพย์สินมูลค่าทรัพย์สินจะได้รับการปฏิบัติเป็นJspFragment |
เหล่านี้เป็นคุณลักษณะที่เกี่ยวข้องกับอินสแตนซ์ที่ระบุ:
thth. <attribute> <name>attribute_name</name> <required>false</required> <type>java.util.Date</type> <fragment>false</fragment> </attribute> thth.
ถ้าคุณใช้สองคุณสมบัติปรับเปลี่ยนแฟ้ม TLD ดังนี้
thth. <attribute> <name>attribute_name1</name> <required>false</required> <type>java.util.Boolean</type> <fragment>false</fragment> </attribute> <attribute> <name>attribute_name2</name> <required>true</required> <type>java.util.Date</type> </attribute> thth.