JSTL (ไลบรารีแท็กมาตรฐาน JSP)

⚡ สรุปอย่างชาญฉลาด

JSP Standard Tag Library (JSTL) คือชุดของไลบรารีแท็ก JSP แบบกำหนดเองที่ให้ฟังก์ชันการทำงานทั่วไปในการพัฒนาเว็บ เช่น การวนซ้ำ ตรรกะแบบมีเงื่อนไข การจัดการข้อผิดพลาด การนำเข้า และการเปลี่ยนเส้นทาง ทำให้โค้ด JSP สะอาดขึ้น พกพาสะดวก และอ่านง่ายกว่าสคริปต์เล็ต

  • 🏷️ คำจำกัดความของ JSTL: ชุดรวมมาตรฐานของไลบรารีแท็ก JSP แบบกำหนดเองสำหรับงานเว็บทั่วไป
  • ข้อดี: สร้างโค้ดที่สะอาด พกพาสะดวก และอ่านง่ายกว่าสคริปต์เล็ต ทั้งสำหรับมนุษย์และเครื่องมือต่างๆ
  • 🔧 แท็กหลัก: out, catch, import, forEach, if และ redirect ใช้สำหรับจัดการเอาต์พุต ข้อผิดพลาด การรวมข้อมูล ลูป และเงื่อนไขต่างๆ
  • 🔁 การวนซ้ำและตรรกะ: forEach วนลูปตามช่วงข้อมูล ในขณะที่ if และ catch เพิ่มเงื่อนไขและการจัดการข้อยกเว้น
  • 🛠️ แท็กที่กำหนดเอง: สร้างแท็กที่ผู้ใช้กำหนดเองโดยการขยาย SimpleTagSupport, เขียนทับเมธอด doTag() และแมปping ในโดเมนระดับบนสุด (TLD)
  • 📄 อินเทอร์เฟซแท็ก: คลังแท็ก Descriptหรือ (TLD) จะแมปชื่อแท็กกับคลาสตัวจัดการสำหรับคอนเทนเนอร์ JSP

JSTL - ไลบรารีแท็กมาตรฐาน JSP

JSTL คืออะไร Java?

เจเอสทีแอล ย่อมาจาก Java ไลบรารีแท็กมาตรฐานของหน้าเซิร์ฟเวอร์ และเป็นคอลเลกชันของไลบรารีแท็ก JSP ที่กำหนดเองซึ่งมีฟังก์ชันการพัฒนาเว็บทั่วไป JSTL เป็นไลบรารีแท็กมาตรฐานของ JSP

ข้อดีของ JSTL

ด้านล่างนี้เป็นข้อดีของ JSTL:

  1. แท็กมาตรฐาน: มีฟังก์ชันการทำงานแบบพกพาของเพจ JSP ที่หลากหลาย เป็นเรื่องง่ายสำหรับนักพัฒนาที่จะเข้าใจโค้ด
  2. Code เรียบร้อยและสะอาด: เนื่องจากสคริปต์ทำให้นักพัฒนาสับสน การใช้ JSTL จะทำให้โค้ดเรียบร้อยและสะอาดตา
  3. อัตโนมัติ Javaสนับสนุนการสอดส่องถั่ว: มีข้อได้เปรียบของ JSTL มากกว่าสคริปต์เล็ต JSP การจัดการภาษา JSTL Expression Javaรหัส Bean ได้อย่างง่ายดายมาก เราไม่จำเป็นต้องดาวน์คาสอ็อบเจ็กต์ซึ่งได้รับการดึงมาเป็นแอตทริบิวต์ที่กำหนดขอบเขต การใช้โค้ด JSP scriptlets จะซับซ้อน และ JSTL ได้ทำให้วัตถุประสงค์นั้นง่ายขึ้น
  4. ง่ายขึ้นสำหรับมนุษย์ในการอ่าน: JSTL มีพื้นฐานมาจาก XMLซึ่งคล้ายกับ HTML มาก ดังนั้นจึงเป็นเรื่องง่ายสำหรับนักพัฒนาที่จะเข้าใจ
  5. คอมพิวเตอร์เข้าใจได้ง่ายขึ้น: เครื่องมือเช่น Dreamweaver และหน้าแรกกำลังสร้างโค้ด HTML เพิ่มมากขึ้น เครื่องมือ HTML ทำหน้าที่จัดรูปแบบโค้ด HTML ได้เป็นอย่างดี รหัส HTML ผสมกับรหัสสคริปต์ เนื่องจาก JSTL แสดงเป็นแท็กที่สอดคล้องกับ XML จึงเป็นเรื่องง่ายสำหรับการสร้าง HTML ที่จะแยกวิเคราะห์โค้ด JSTL ภายในเอกสาร

แท็ก JSTL

แท็กหลักคือแท็กที่ใช้บ่อยที่สุดใน JSP พวกเขาให้การสนับสนุนสำหรับ

  • การย้ำ
  • ตรรกะเงื่อนไข
  • จับข้อยกเว้น
  • URL ไปข้างหน้า
  • เปลี่ยนเส้นทาง ฯลฯ

ในการใช้แท็กหลัก เราจำเป็นต้องกำหนดไลบรารีแท็กก่อน และด้านล่างคือไวยากรณ์เพื่อรวมไลบรารีแท็ก

ไวยากรณ์ :

<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>

ที่นี่

  • คำนำหน้าสามารถใช้เพื่อกำหนดแท็กหลักทั้งหมดและ
  • uri เป็นไลบรารีของ taglib ที่ใช้นำเข้า

มาดูแท็กหลักบางส่วนโดยละเอียด

1. ออก

  • ผลลัพธ์ของการแสดงออกจะแสดงในแท็ก out
  • สามารถหลีกเลี่ยงแท็ก XML ได้โดยตรง ดังนั้นจึงไม่ได้รับการประเมินว่าเป็นแท็กจริง

ไวยากรณ์:

<c:out value="" default="" escapeXML="">
  • ค่านี้แสดงถึงข้อมูลไปยังเอาต์พุตและเป็นค่าบังคับ
  • ค่าเริ่มต้นคือความล้มเหลวในการส่งออกข้อมูล และไม่บังคับ
  • escapeXML – เป็นจริงหากหลบหนีอักขระ XML

ตัวอย่าง:

Coretag_jsp1.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP1</title>
</head>
<body>

</body>
</html>

คำอธิบายของรหัส:

Code 3 แนว: คำนำหน้า taglib นี้จำเป็นสำหรับแท็กทั้งหมด และคำนำหน้าที่เพิ่มคือ 'c' ดังนั้นจึงสามารถใช้เป็นคำนำหน้าสำหรับคอร์แท็กทั้งหมดได้

Code 12 แนว: ที่นี่เรากำลังใช้ coretag พร้อมกับคำนำหน้า "c" และส่วนนี้จะพิมพ์ค่าในแท็กนิพจน์ ดังนั้นผลลัพธ์จะเป็นชื่อ

เมื่อคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ต่อไปนี้:

แท็ก JSTL Core - ออก

Output:

  • เราได้รับค่าเป็นชื่อจากแท็กหลัก "out" ซึ่งจะพิมพ์ในสตรีมเอาต์พุต

2. จับ

  • โดยจะตรวจจับข้อยกเว้นที่สามารถโยนได้ซึ่งเกิดขึ้นในร่างกายและแสดงเป็นเอาต์พุต
  • ใช้สำหรับจัดการกับข้อผิดพลาดและตรวจจับข้อผิดพลาด

ไวยากรณ์:

<c:catchvar="">

ในที่นี้ var แสดงถึงชื่อของตัวแปร ซึ่งจะเก็บข้อยกเว้นที่สามารถส่งได้

ตัวอย่าง:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP2</title>
</head>
<body>
<c:catch var="guruException">
   <% int num = 10/0; %>
</c:catch>
The Exception is : ${guruException}
</body>
</html>

คำอธิบายของรหัส:

Code 3 แนว: คำนำหน้า taglib นี้จำเป็นสำหรับแท็กทั้งหมดและคำนำหน้าที่เพิ่มคือ 'c' ดังนั้นจึงสามารถใช้เป็นคำนำหน้าสำหรับ coretags ทั้งหมด

Code บรรทัดที่ 11-13: Coretag catch ใช้เพื่อตรวจจับข้อยกเว้นและพิมพ์ข้อยกเว้น ที่นี่ข้อยกเว้นจะเกิดขึ้นเมื่อ 10/0 และข้อยกเว้นนั้นมีชื่อ "guruException"

Code 14 แนว: เรากำลังพิมพ์ "guruException"

เมื่อคุณรันโค้ด คุณจะได้รับผลลัพธ์ต่อไปนี้:

แท็ก JSTL Core - จับ

Output:

  • เราได้รับ Arithmetic Exception เป็น /by ศูนย์ และมันถูกพิมพ์ในเอาต์พุตโดยใช้ตัวแปร “guruException”

3 นำเข้า

  • เราสามารถนำเข้าเนื้อหาไฟล์อื่นลงในหน้า JSP ได้เหมือนที่เราทำ JSP รวมถึงการดำเนินการ.
  • ที่นี่เราสามารถรวมสิ่งนี้เข้าไปด้วยได้ URL และเนื้อหาจะแสดงบนหน้านั้น

ไวยากรณ์:

<c:importvar="" uri="">

ที่นี่ var คือชื่อตัวแปรซึ่งเป็นตัวระบุที่จะเก็บชื่อไฟล์/uri โดยที่ uri คือชื่อไฟล์สัมพันธ์หรือ uriname

coretag_jsp31.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP 31</title>
</head>
<body>
<c:import var="displayfile" url="coretag_jsp32.jsp">
</c:import>
<c:out value="${displayfile}"/>
</body>
</html>

Coretag_jsp32.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a>The file is diplayed after importing</a>
</body>
</html>

คำอธิบายของรหัส:

Coretag_jsp31.jsp

Code 3 แนว: คำนำหน้า taglib นี้จำเป็นสำหรับแท็กทั้งหมดและคำนำหน้าที่เพิ่มคือ 'c' ดังนั้นจึงสามารถใช้เป็นคำนำหน้าสำหรับ coretags ทั้งหมด

Code บรรทัดที่ 11-12: ที่นี่เรากำลังนำเข้าไฟล์ coretag_jsp32.jsp ลงในไฟล์นี้โดยใช้แท็กนำเข้า

Code บรรทัดที่ 13: ที่นี่เรากำลังพิมพ์ไฟล์ coretag_jsp32.jsp โดยใช้แท็ก out

เมื่อคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้

แท็ก JSTL Core - นำเข้า

Output:

  • Coretag_jsp32 ถูกพิมพ์ในเอาต์พุตเนื่องจากไฟล์นี้ถูกอิมพอร์ตใน coretag_jsp31.jsp

4.สำหรับแต่ละคน

  • ใช้เพื่อวนซ้ำจำนวนองค์ประกอบในชุดคำสั่ง
  • มันเหมือนกับก Java forloop.

ไวยากรณ์:

<c:forEach var="" begin=""  end="">
  • ในที่นี้ var แสดงถึงชื่อตัวแปรที่จะเก็บชื่อตัวนับ
  • Begin แสดงถึงมูลค่าเริ่มต้นของตัวนับ
  • End จะแสดงมูลค่าสิ้นสุด

ตัวอย่าง:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP4</title>
</head>
<body>
<c:forEach var="gurucount" begin="5" end="10">
 <c:out value="${gurucount}"/>
</c:forEach>
</body>
</html>

คำอธิบายของรหัส:

Code 3 แนว: คำนำหน้า taglib นี้จำเป็นสำหรับแท็กทั้งหมดและคำนำหน้าที่เพิ่มคือ 'c' ดังนั้นจึงสามารถใช้เป็นคำนำหน้าสำหรับ coretags ทั้งหมด

Code บรรทัดที่ 11-13: ที่นี่เราใช้ลูป “forEach” โดยที่ชื่อตัวแปรคือ “gurucount” ซึ่งเริ่มนับเป็น 5 และสิ้นสุดนับเป็น 10 เรากำลังพิมพ์ตัวแปร gurucount ซึ่งมีตัวเลขตั้งแต่ 5 ถึง 10

เมื่อคุณรันโค้ด คุณจะได้รับผลลัพธ์ดังต่อไปนี้

แท็ก JSTL Core - forEach

Output:

  • ผลลัพธ์ที่เราได้รับคือเริ่มจาก 5 ถึง 10

5 ถ้า

  • มันถูกใช้สำหรับ การทดสอบ เงื่อนไข
  • หากใช้แท็กเพื่อทดสอบเงื่อนไขว่าเป็นจริงหรือไม่ตามนี้ บล็อกของโค้ดจะถูกดำเนินการ

ไวยากรณ์:

<c:if test="${condition}></c:if>

หากเงื่อนไขเป็นจริง ชุดคำสั่งต่างๆ จะถูกดำเนินการ

ตัวอย่าง:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP5</title>
</head>
<body>
<c:set var="count" value="100"/>
<c:if test="${count == 100}">
   <c:out value="The count is 100"/>
</c:if>
</body>
</html>

คำอธิบายของรหัส:

Code 3 แนว: คำนำหน้า taglib นี้จำเป็นสำหรับแท็กทั้งหมดและคำนำหน้าที่เพิ่มคือ 'c' ดังนั้นจึงสามารถใช้เป็นคำนำหน้าสำหรับ coretags ทั้งหมด

Code 11 แนว: ที่นี่เรากำลังตั้งค่าตัวแปรที่มีชื่อว่านับถึง 100

Code บรรทัดที่ 12-14: ที่นี่เราใช้เงื่อนไข "if" โดยที่เราจะตรวจสอบว่าจำนวนนับเท่ากับ 100 หรือไม่ หากเท่ากับ 100 เราจะได้ผลลัพธ์เป็น "จำนวนนับเท่ากับ 100"

เมื่อคุณรันโค้ดข้างต้น คุณจะได้รับผลลัพธ์ดังต่อไปนี้

แท็ก JSTL Core - ถ้า

Output:

  • เนื่องจากเงื่อนไข "if" เป็นจริง เราจะได้ผลลัพธ์เป็น "จำนวนคือ 100"

6. เปลี่ยนเส้นทาง

  • ใช้สำหรับเปลี่ยนเส้นทางหน้าปัจจุบันไปยังหน้าอื่น URL โดยการให้ญาติ URL ของแท็กนี้
  • รองรับบริบทสัมพันธ์ URLs

ไวยากรณ์:

<c:redirect url="" context=""/>

ที่นี่ url คือ URL ที่เกี่ยวข้องซึ่งจะต้องเปลี่ยนเส้นทางและชื่อบริบทของแอปพลิเคชันเว็บในเครื่อง

ตัวอย่าง:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP6</title>
</head>
<body>
<c:redirect url="/"/>
</body>
</html>

คำอธิบายของรหัส:

Code 3 แนว: คำนำหน้า taglib นี้จำเป็นสำหรับแท็กทั้งหมดและคำนำหน้าที่เพิ่มคือ 'c' ดังนั้นจึงสามารถใช้เป็นคำนำหน้าสำหรับ coretags ทั้งหมด

Code 11 แนว: ที่นี่เราใช้ “แท็กเปลี่ยนเส้นทาง” โดยที่เราระบุชื่อ URL และเมื่อเราคลิกที่หน้านั้น มันจะเปลี่ยนเส้นทางไปยังไซต์ที่ได้รับการกำหนดให้เปลี่ยนเส้นทาง

เมื่อคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้:

แท็ก JSTL Core - เปลี่ยนเส้นทาง

Output:

  • เราได้รับ URL เอาต์พุต guru99.com ซึ่งเปลี่ยนเส้นทางโดย coretag_jsp6.jsp

แท็กที่กำหนดเอง JSTL

  • มันเป็นสิ่งที่ผู้ใช้กำหนด JSP องค์ประกอบภาษา
  • เมื่อ JSP ถูกแปลเป็นเซิร์ฟเล็ต แท็กที่กำหนดเองจะถูกแปลงเป็นคลาสที่ดำเนินการกับอ็อบเจ็กต์ และถูกเรียกว่าเป็นตัวจัดการแท็ก
  • การกระทำเหล่านั้นเมื่อมีการดำเนินการเซิร์ฟเล็ตจะถูกเรียกใช้โดยเว็บคอนเทนเนอร์
  • ในการสร้างแท็กแบบกำหนดเองที่ผู้ใช้กำหนด เราจำเป็นต้องสร้างตัวจัดการแท็กซึ่งจะขยาย SimpleTagSupport และต้องแทนที่เมธอด doTag()
  • เราจำเป็นต้องสร้าง TLD โดยที่เราต้องแมปไฟล์คลาสใน TLD

ข้อดีของแท็กที่กำหนดเองใน JSP

นี่คือข้อดีของแท็กที่กำหนดเองใน JSP:

  • พกพา: การดำเนินการที่อธิบายไว้ในไลบรารีแท็กจะต้องสามารถใช้ได้ในคอนเทนเนอร์ JSP ใดๆ
  • ง่าย: ผู้ใช้ที่ไม่มีความรู้ความสามารถจะต้องสามารถเข้าใจและใช้กลไกนี้ได้ ผู้จำหน่ายฟังก์ชัน JSP จะต้องพบว่าการทำให้กลไกนี้พร้อมใช้งานสำหรับผู้ใช้ในรูปแบบการดำเนินการนั้นเป็นเรื่องง่าย
  • การแสดงออก: กลไกจะต้องรองรับการดำเนินการที่หลากหลาย รวมถึงการดำเนินการซ้อนกัน องค์ประกอบสคริปต์ภายในเนื้อหาการดำเนินการ การสร้าง การใช้งาน และการอัปเดตตัวแปรสคริปต์
  • ใช้งานได้จากภาษาสคริปต์ที่แตกต่างกัน: แม้ว่าข้อกำหนด JSP ในปัจจุบันจะกำหนดเฉพาะความหมายของสคริปต์ใน Java ภาษาการเขียนโปรแกรม เราต้องการปล่อยให้ความเป็นไปได้ของภาษาสคริปต์อื่น ๆ
  • สร้างขึ้นจากแนวคิดและเครื่องจักรที่มีอยู่: เราไม่อยากสร้างสิ่งที่มีอยู่แล้วขึ้นมาใหม่ นอกจากนี้ เรายังต้องการหลีกเลี่ยงความขัดแย้งในอนาคตเมื่อใดก็ตามที่เราสามารถคาดการณ์ได้

ไวยากรณ์:

ลองนึกภาพว่าเรากำลังสร้างการทดสอบGuru เราสามารถใช้คลาส taghandlertestTag ซึ่งจะเขียนทับเมธอด doTag() ได้

<ex:testGuru/>
Class testTag extends SimpleTagSupport{ public void doTag()}

นอกจากนี้ เราจะต้องแมปคลาส testTag นี้ใน TLD (Tag Library Descriptหรือ) เนื่องจากคอนเทนเนอร์ JSP จะสร้างแผนที่โดยอัตโนมัติping ระหว่างไฟล์คลาสและ URI ที่ระบุไว้ในไฟล์ TLD

อินเทอร์เฟซแท็ก JSP

  • คลาสนี้จะต้องขยายคลาส SimpleTagSupport
  • คลาสนี้จะต้องแทนที่เมธอด doTag() ซึ่งเป็นส่วนหนึ่งของคลาส SimpleTagSupport (การแทนที่เป็นเมธอดที่สืบทอดมาจากคลาสพาเรนต์)
  • อินเทอร์เฟซนี้เป็นอินเทอร์เฟซย่อยของอินเทอร์เฟซ JSPTag
  • โดยมีวิธีการดำเนินการที่จุดเริ่มต้นและจุดสิ้นสุดของแท็ก
  • นอกจากนี้ เราจำเป็นต้องแมปคลาสนี้ใน TLD เช่น Tag Library descriptor

เรากำลังพิจารณาตามตัวอย่างด้านล่าง

วิธีการติดต่อแท็ก

  • doTag() เป็นวิธีการที่เราต้องแทนที่ซึ่งจะมีเนื้อหาสำหรับแท็ก
  • ใช้บริบท JSP ปัจจุบันโดยใช้ getJSPContext()

ตัวอย่าง:

กำหนดเองtag_jsp1.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Custom Tag</title>
</head>
<body>
<ex:guruTag/>
</body>
</html>

กำหนดเอง.tld

<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>Test TLD</short-name>
  <tag>
    <name>guruTag</name>
    <tag-class>demotest.guruTag</tag-class>
    <body-content>empty</body-content>
  </tag>
</taglib>

guruTag.java(TagHandler)

package demotest;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class guruTag extends SimpleTagSupport{
	public void doTag() throws JspException,IOException
	{
		JspWriter out = getJspContext().getOut();
		out.println("Guru Tag");
	}

}

คำอธิบายของรหัส:

guruTag.java(TagHandler)

Code 6 แนว:คลาส guruTag กำลังขยายคลาส SimpleTagSupport ที่มีอยู่ใน jar javax.servlet.JSP

Code 7 แนว: ที่นี่เรากำลังเอาชนะเมธอด doTag() ซึ่งส่ง JspException และ IOException

Code บรรทัดที่ 9-10: ในวิธีนี้ โค้ดจะถูกฝังลงในแท็กที่กำหนดเองซึ่งจะถูกเรียกใช้งาน โดยเราจะใช้ object ของ JSP เป็นพารามิเตอร์Writerและนั่นจะพิมพ์ “Guru วัน."

กำหนดเอง.tld

Code 6 แนว: ชื่อของแท็กที่กำหนดเองในที่นี้คือ "guruTag"

Code 7 แนว:คลาสแท็กคือ taghandlerclass เช่น guruTag.java ใช้เส้นทางแบบเต็มของไฟล์ตัวจัดการซึ่งรวมถึงเส้นทางไดเรกทอรีของตำแหน่งของไฟล์

กำหนดเองtag_jsp1.jsp

Code บรรทัดที่ 3 : คำนำหน้า taglib นี้จำเป็นสำหรับแท็กทั้งหมด และคำนำหน้าที่เพิ่มคือ 'ex' ดังนั้นจึงสามารถใช้เป็นคำนำหน้าสำหรับ coretags ทั้งหมดได้ และ uri คือ custom.tld ซึ่งแมปตัวจัดการแท็ก

Code 11 แนว: ที่นี่เรากำลังกำหนดแท็กที่กำหนดเอง "guruTag" ซึ่งจะเรียกเมธอดคลาสตัวจัดการ doTag() และโค้ดภายในนั้นจะถูกดำเนินการ

เมื่อคุณรันโค้ดข้างต้น คุณจะได้รับผลลัพธ์ดังต่อไปนี้

อินเทอร์เฟซแท็ก JSP

Output:

  • เราได้ผลลัพธ์เป็น “GuruTag” จาก guruTag.java เช่น TagHandler ซึ่งเขียนทับเมธอด doTag() และพิมพ์ “Guru แสดงผลลัพธ์เป็น "แท็ก"

คำถามที่พบบ่อย

JSTL มีกลุ่มแท็กห้ากลุ่ม ได้แก่ core, formatting (I18N), SQL, XML และ functions แท็ก core จัดการการวนซ้ำและตรรกะ ในขณะที่แท็ก formatting, SQL, XML และ function ครอบคลุมการแปลภาษา ฐานข้อมูล XML และยูทิลิตี้สตริง

JSTL ใช้แท็กที่อ่านง่ายคล้าย XML สำหรับตรรกะ ในขณะที่สคริปต์เล็ตฝังข้อมูลดิบไว้ Java ใน JSP นั้น JSTL สร้างหน้าเว็บที่สะอาดตา ดูแลรักษาง่ายกว่า และหลีกเลี่ยงการผสมผสานที่ไม่เหมาะสม Java โค้ดที่มีมาร์กอัป HTML

TLD คือไฟล์ XML ที่แมปชื่อแท็กแบบกำหนดเองกับคลาสตัวจัดการ คอนเทนเนอร์ JSP จะอ่าน TLD เพื่อทราบว่าต้องการดำเนินการใด Java คลาสที่จะใช้สำหรับเรียกใช้งานแท็กแบบกำหนดเองแต่ละแท็ก

ผู้ช่วย AI สามารถสร้างแท็ก JSTL เขียนตัวจัดการแท็กแบบกำหนดเอง แปลงสคริปต์เล็ตเป็น JSTL และอธิบายภาษาการแสดงออกได้ ช่วยเร่งความเร็วในการพัฒนา JSP ในขณะที่นักพัฒนาตรวจสอบโค้ดที่สร้างขึ้น

ใช่แล้ว เครื่องมือ AI สามารถวิเคราะห์โค้ดสคริปต์เล็ตและเขียนใหม่โดยใช้แท็กหลัก JSTL และภาษาการแสดงออกที่เทียบเท่ากันได้ping ปรับปรุงหน้าเว็บ JSP เดิมให้ทันสมัยขึ้นโดยยังคงรักษาฟังก์ชันการทำงานไว้

สรุปโพสต์นี้ด้วย: