คำสั่ง JSP

คำสั่ง JSP คืออะไร?

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

ไวยากรณ์ของคำสั่ง:

<%@ directive attribute="" %>

ประเภทของคำสั่งใน JSP

มีคำสั่งสามประเภทใน JSP:

  1. คำสั่งหน้า
  2. รวมคำสั่ง
  3. คำสั่ง Taglib

แต่ละรายการมีการอธิบายโดยละเอียดด้านล่างพร้อมตัวอย่าง:

1) คำสั่งหน้า JSP

ไวยากรณ์ของคำสั่งหน้า:

<%@ page…%>
  • โดยจัดเตรียมแอ็ตทริบิวต์ที่นำไปใช้กับเพจ JSP ทั้งหมด
  • กำหนดแอตทริบิวต์ที่ขึ้นอยู่กับหน้า เช่น ภาษาสคริปต์ หน้าแสดงข้อผิดพลาด และข้อกำหนดการบัฟเฟอร์
  • ใช้เพื่อให้คำแนะนำแก่คอนเทนเนอร์ที่เกี่ยวข้องกับเพจ JSP ปัจจุบัน

ต่อไปนี้คือรายการคุณลักษณะที่เกี่ยวข้องกับคำสั่งหน้า:

  1. ภาษา
  2. ขยาย
  3. นำเข้า
  4. ชนิดของเนื้อหา
  5. ข้อมูล
  6. เซสชั่น
  7. คือThreadSafe
  8. ล้างอัตโนมัติ
  9. กันชน
  10. IsErrorPage
  11. การเข้ารหัสหน้า
  12. errorPage
  13. คือELIgonored

รายละเอียดเพิ่มเติมเกี่ยวกับคุณลักษณะแต่ละอย่าง

1) ภาษา: มันกำหนด ภาษาโปรแกรม (ภาษาพื้นฐาน) ที่ใช้ในเพจ

ไวยากรณ์ของภาษา:

<%@ page language="value" %>

ค่านี้คือภาษาการเขียนโปรแกรม (ภาษาพื้นฐาน)

ตัวอย่าง:

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

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

2) ขยาย: คุณลักษณะนี้ใช้เพื่อขยาย (สืบทอด) คลาสเหมือนกับที่ JAVA ทำ

ไวยากรณ์ของการขยาย:

<%@ page extends="value" %>

ในที่นี้ค่าแสดงถึงคลาสที่จะต้องสืบทอด

ตัวอย่าง:

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

<%@ page extends="demotest.DemoClass" %>

คำอธิบายของรหัส: ในโค้ดด้านบน JSP กำลังขยาย DemoClass ซึ่งอยู่ภายในแพ็คเกจ demotest และจะขยายฟีเจอร์คลาสทั้งหมด

3) นำเข้า: แอ็ตทริบิวต์นี้เป็นแอ็ตทริบิวต์ที่ใช้มากที่สุดในแอ็ตทริบิวต์คำสั่งเพจ ใช้เพื่อบอกให้คอนเทนเนอร์นำเข้าคลาส Java, อินเทอร์เฟซ, enums ฯลฯ ในขณะที่สร้างโค้ดเซิร์ฟเล็ต ซึ่งคล้ายกับคำสั่งนำเข้าในคลาส Java และอินเทอร์เฟซ

ไวยากรณ์ของการนำเข้า:

<%@ page import="value" %>

ค่านี้ระบุคลาสที่ต้องนำเข้า

ตัวอย่าง:

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

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

ในโค้ดด้านบน เราจะนำเข้าคลาส Date จากแพ็กเกจ java.util (คลาสยูทิลิตี้ทั้งหมด) และสามารถใช้เมธอดทั้งหมดของคลาสต่อไปนี้ได้

4) ประเภทเนื้อหา:

  • จะกำหนดรูปแบบการเข้ารหัสอักขระ เช่น ใช้เพื่อกำหนดประเภทเนื้อหาและชุดอักขระของการตอบสนอง
  • ชนิดเริ่มต้นของ contentType คือ "text/html; charset=ISO-8859-1".

ไวยากรณ์ของเนื้อหาประเภท:

<%@ page contentType="value" %>

ตัวอย่าง:

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

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

ในโค้ดข้างต้น ประเภทเนื้อหาจะถูกตั้งค่าเป็น text/html โดยจะตั้งค่าการเข้ารหัสอักขระสำหรับ JSP และสำหรับหน้าตอบกลับที่สร้างขึ้น

5) ข้อมูล

  • มันกำหนดสตริงที่สามารถเข้าถึงได้โดยเมธอด getServletInfo()
  • แอ็ตทริบิวต์นี้ใช้เพื่อตั้งค่าคำอธิบายเซิร์ฟเล็ต

ไวยากรณ์ของข้อมูล:

<%@ page info="value" %>

ในที่นี้ ค่าแสดงถึงข้อมูลเซิร์ฟเล็ต

ตัวอย่าง:

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

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

ในโค้ดด้านบน สตริง “Guru Directive JSP” สามารถดึงข้อมูลได้โดยอินเทอร์เฟซเซิร์ฟเล็ตโดยใช้ getServletInfo()

6) เซสชัน

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

ไวยากรณ์ของเซสชัน:

<%@ page session="true/false"%>

ในกรณีนี้แอตทริบิวต์เซสชันสามารถตั้งค่าเป็นจริงหรือเท็จได้

ตัวอย่าง:

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

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

ในตัวอย่างข้างต้น แอตทริบิวต์เซสชันถูกตั้งค่าเป็น "false" ดังนั้นเราจึงระบุว่าเราไม่ต้องการสร้างเซสชันใดๆ ใน JSP นี้

7) เป็นThreadSafe:

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

ไวยากรณ์ของ isThreadSafe:

<% @ page isThreadSafe="true/false" %>

ที่นี่ true หรือ false แสดงว่าหากมีการซิงโครไนซ์ ให้ตั้งค่าเป็นจริง และตั้งค่าเป็นเท็จ

ตัวอย่าง:

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

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

ในโค้ดด้านบน isThreadSafe จะถูกตั้งค่าเป็น “true” ดังนั้นการซิงโครไนซ์จึงเกิดขึ้นและสามารถใช้เธรดหลายเธรดได้

8) ออโต้ฟลัช:

แอตทริบิวต์นี้ระบุว่าเอาต์พุตบัฟเฟอร์ควรถูกฟลัชโดยอัตโนมัติหรือไม่ และค่าเริ่มต้นของแอตทริบิวต์นั้นคือ true หากตั้งค่าเป็น false บัฟเฟอร์จะไม่ถูกฟลัชโดยอัตโนมัติ และหากบัฟเฟอร์เต็ม เราจะได้รับข้อยกเว้น เมื่อบัฟเฟอร์เป็น none แสดงว่า false ไม่ถูกต้อง และไม่มีการบัฟเฟอร์ ดังนั้นจึงจะถูกฟลัชโดยอัตโนมัติ

ไวยากรณ์ของ autoFlush:

<% @ page autoFlush="true/false" %>

ที่นี่ true/false แสดงว่าจำเป็นต้องบัฟเฟอร์หรือไม่

ตัวอย่าง:

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

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

ในโค้ดด้านบน การล้างข้อมูลอัตโนมัติถูกตั้งค่าเป็น false ดังนั้นจึงไม่สามารถทำการบัฟเฟอร์ได้ และจะต้องล้างเอาต์พุตด้วยตนเอง

9) Buffer:

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

รูปแบบของบัฟเฟอร์:

<%@ page buffer="value" %>

ค่านี้แสดงขนาดของบัฟเฟอร์ที่ต้องกำหนด หากไม่มีบัฟเฟอร์ เราสามารถเขียนเป็น none ได้ และหากไม่ได้ระบุค่าใดๆ ค่าเริ่มต้นจะเป็น 8KB

ตัวอย่าง:

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

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

ในโค้ดด้านบน ระบุขนาดบัฟเฟอร์เป็น 16KB โดยที่บัฟเฟอร์จะมีขนาดเท่านี้

10) isErrorPage:

  • บ่งชี้ว่าเพจ JSP ที่มี errorPage จะถูกตรวจสอบในหน้า JSP อื่น
  • ไฟล์ JSP ใดๆ ที่ประกาศด้วยแอตทริบิวต์ "isErrorPage" จะสามารถรับข้อยกเว้นจากเพจ JSP อื่นๆ ที่มีหน้าข้อผิดพลาดได้
  • มีข้อยกเว้นสำหรับเพจเหล่านี้เท่านั้น
  • ค่าเริ่มต้นเป็นเท็จ

ไวยากรณ์ของ isErrorPage:

<%@ page isErrorPage="true/false"%>

ตัวอย่าง:

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

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

ในโค้ดข้างต้น isErrorPage ถูกตั้งค่าเป็นจริง ดังนั้น จะตรวจสอบว่า JSP อื่นๆ มีชุดแอตทริบิวต์ errorPage (อธิบายไว้ในแอตทริบิวต์ถัดไป) และสามารถจัดการข้อยกเว้นได้

11) การเข้ารหัสหน้า:

แอตทริบิวต์ “pageEncoding” กำหนดการเข้ารหัสอักขระสำหรับหน้า JSP โดยค่าเริ่มต้นจะระบุเป็น “ISO-8859-1” หากไม่ได้ระบุค่าอื่นใด

ไวยากรณ์ของการเข้ารหัสหน้า:

<%@ page pageEncoding="vaue" %>

ค่าที่นี่ระบุค่าชุดอักขระสำหรับ JSP

ตัวอย่าง:

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

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

ในโค้ดด้านบน “pageEncoding” ได้รับการตั้งค่าเป็นชุดอักขระเริ่มต้น ISO-8859-1

12) หน้าข้อผิดพลาด:

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

ไวยากรณ์ของ errorPage:

<%@ page errorPage="value" %>

ค่าที่นี่แสดงถึงค่าหน้า JSP ของข้อผิดพลาด

ตัวอย่าง:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    errorPage="errorHandler.jsp"%>

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

ในโค้ดด้านบน เพื่อจัดการกับข้อยกเว้น เรามี errroHandler.jsp

13) ถูกละเว้น:

  • IsELIGnored เป็นแอตทริบิวต์แฟล็กที่เราต้องตัดสินใจว่าจะละเว้นแท็ก EL หรือไม่
  • ประเภทข้อมูลของมันคือ java enum และค่าเริ่มต้นเป็นเท็จ ดังนั้น EL จึงเปิดใช้งานตามค่าเริ่มต้น

ไวยากรณ์ของ isELignored:

<%@ page isELIgnored="true/false" %>

ในที่นี้ จริง/เท็จ แสดงถึงค่าของ EL ว่าควรละเว้นหรือไม่

ตัวอย่าง:

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

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

ในโค้ดข้างต้น isELignored เป็นจริงและด้วยเหตุนี้ ภาษานิพจน์ (EL) จะถูกละเว้นที่นี่ ในตัวอย่างด้านล่าง เราใช้แอตทริบิวต์สี่รายการ (บรรทัดโค้ด 1-2)

ตัวอย่างที่มีสี่แอตทริบิวต์

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isELIgnored="false"%>
 <%@page import="java.util.Date" %>
    
<!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>Directive Guru JSP1</title>
</head>
<body>
<a>Date is:</a>
<%= new java.util.Date() %>
</body>
</html>

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

รหัสบรรทัด 1-2: ที่นี่เราได้กำหนดคุณลักษณะไว้สี่ประการ ได้แก่

  • ภาษา: มันถูกตั้งค่าเป็น Java เป็นภาษาโปรแกรม
  • contentType: ตั้งค่าเป็น text/html เพื่อบอกคอมไพลเลอร์ว่า html จะต้องอยู่ในรูปแบบ
  • pageEncoding: ชุดอักขระเริ่มต้นถูกตั้งค่าไว้ในแอตทริบิวต์นี้
  • isELignored: แท็กนิพจน์เป็นเท็จ ดังนั้นจึงไม่ถูกละเลย

รหัสบรรทัด 3: ที่นี่เราใช้แอตทริบิวต์นำเข้า และกำลังนำเข้า "คลาสวันที่" ซึ่งมาจาก Java util และเราพยายามแสดงวันที่ปัจจุบันในโค้ด

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

คำสั่งหน้า JSP

เอาท์พุต:

  • วันที่คือ: วันที่ปัจจุบันโดยใช้วิธีวันที่ของคลาสวันที่

2) JSP รวมคำสั่ง

  • JSP “include directive” (codeline 8 ) ใช้เพื่อรวมไฟล์หนึ่งไปยังอีกไฟล์หนึ่ง
  • ไฟล์ที่รวมไว้นี้สามารถเป็น HTML, JSP, ไฟล์ข้อความ ฯลฯ
  • นอกจากนี้ยังมีประโยชน์ในการสร้างเทมเพลตโดยให้ผู้ใช้ดูและแบ่งหน้าออกเป็นการดำเนินการส่วนหัวและส่วนท้ายและแถบด้านข้าง
  • รวมถึงไฟล์ระหว่างขั้นตอนการแปล

ไวยากรณ์ของคำสั่งรวม:

<%@ include….%>

ตัวอย่าง:

Directive_jsp2.jsp (ไฟล์หลัก)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ include file="directive_header_jsp3.jsp" %>
<!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>Guru Directive JSP2</title>
</head>
<body>
<a>This is the main file</a> 
</body>
</html>

Directive_header_jsp3.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">

</head>
<body>
<a>Header file : </a>
<%int count =1; count++;
out.println(count);%> :
</body>
</html>

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

Directive_jsp2.jsp:

รหัสบรรทัด 3: ในโค้ดนี้ เราใช้แท็กรวมโดยที่เรารวมไฟล์ directive_header_jsp3.jsp ลงในไฟล์หลัก (_jsp2.jsp) และรับเอาต์พุตของทั้งไฟล์หลักและไฟล์ที่รวมอยู่

Directive_header_jsp3.jsp:

รหัสบรรทัด 11-12: เราได้นำการนับตัวแปรเริ่มต้นเป็น 1 แล้วเพิ่มขึ้น ซึ่งจะให้ผลลัพธ์ในไฟล์หลักดังที่แสดงด้านล่าง

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

JSP รวมคำสั่ง

Output:

  • ผลลัพธ์คือไฟล์ส่วนหัว: 2 : นี่คือไฟล์หลัก
  • เอาต์พุตจะถูกดำเนินการจากไฟล์ directive_jsp2.jsp ในขณะที่ไฟล์ที่รวม directive_header_jsp3.jsp จะถูกคอมไพล์ก่อน
  • หลังจากที่ไฟล์ที่รวมไว้เสร็จสิ้น ไฟล์หลักจะถูกดำเนินการ และเอาต์พุตจะมาจากไฟล์หลัก “นี่คือไฟล์หลัก” ดังนั้นคุณจะได้ผลลัพธ์เป็น “ไฟล์ส่วนหัว: 2” จาก _jsp3.jsp และ “นี่คือไฟล์หลัก” จาก _jsp2.jsp

3) คำสั่ง JSP Taglib

  • คำสั่ง taglib ของ JSP ใช้เพื่อกำหนดไลบรารีแท็กด้วย "taglib" เป็นคำนำหน้า ซึ่งเราสามารถใช้ได้ JSP.
  • รายละเอียดเพิ่มเติมจะกล่าวถึงในส่วนแท็กที่กำหนดเองของ JSP
  • คำสั่ง taglib ของ JSP ถูกใช้ในหน้า JSP โดยใช้ไลบรารีแท็กมาตรฐาน JSP
  • ใช้ชุดแท็กที่กำหนดเอง ระบุตำแหน่งของไลบรารี และจัดเตรียมวิธีการระบุแท็กที่กำหนดเองในหน้า JSP

ไวยากรณ์ของคำสั่ง taglib:

<%@ taglib uri="uri" prefix="value"%>

ที่นี่แอตทริบิวต์ "uri" เป็นตัวระบุที่ไม่ซ้ำกันในตัวอธิบายไลบรารีแท็กและแอตทริบิวต์ "คำนำหน้า" คือชื่อแท็ก

ตัวอย่าง:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="gurutag" 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>Guru Directive JSP</title>
<gurutag:hello/>
</head>
<body>
</body>
</html>

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

รหัสบรรทัด 3: ที่นี่ “taglib” ถูกกำหนดด้วยแอตทริบิวต์ uri และคำนำหน้า

รหัสบรรทัด 9: “gurutag” คือแท็กที่กำหนดเองซึ่งกำหนดไว้และนำไปใช้ได้ทุกที่