คำสั่ง JSP
คำสั่ง JSP คืออะไร?
- คำสั่ง JSP คือข้อความไปยังคอนเทนเนอร์ JSP พวกเขาให้ข้อมูลทั่วโลกเกี่ยวกับเพจ JSP ทั้งหมด
- คำสั่ง JSP ใช้เพื่อให้คำแนะนำพิเศษแก่คอนเทนเนอร์สำหรับการแปล JSP เป็นโค้ดเซิร์ฟเล็ต
- ในเฟสวงจรชีวิตของ JSP นั้น JSP จะต้องถูกแปลงเป็นเซิร์ฟเล็ตซึ่งเป็นเฟสการแปล
- พวกเขาให้คำแนะนำแก่คอนเทนเนอร์เกี่ยวกับวิธีการจัดการบางแง่มุมของการประมวลผล JSP
- คำสั่งสามารถมีแอตทริบิวต์ได้หลายรายการโดยคั่นด้วยเครื่องหมายจุลภาคเป็นคู่คีย์-ค่า
- ใน JSP ไดเรกทิฟอธิบายไว้ใน
<%@ %>
แท็ก
ไวยากรณ์ของคำสั่ง:
<%@ directive attribute="" %>
ประเภทของคำสั่งใน JSP
มีคำสั่งสามประเภทใน JSP:
- คำสั่งหน้า
- รวมคำสั่ง
- คำสั่ง Taglib
แต่ละรายการมีการอธิบายโดยละเอียดด้านล่างพร้อมตัวอย่าง:
1) คำสั่งหน้า JSP
ไวยากรณ์ของคำสั่งหน้า:
<%@ page…%>
- โดยจัดเตรียมแอ็ตทริบิวต์ที่นำไปใช้กับเพจ JSP ทั้งหมด
- กำหนดแอตทริบิวต์ที่ขึ้นอยู่กับหน้า เช่น ภาษาสคริปต์ หน้าแสดงข้อผิดพลาด และข้อกำหนดการบัฟเฟอร์
- ใช้เพื่อให้คำแนะนำแก่คอนเทนเนอร์ที่เกี่ยวข้องกับเพจ JSP ปัจจุบัน
ต่อไปนี้คือรายการคุณลักษณะที่เกี่ยวข้องกับคำสั่งหน้า:
- ภาษา
- ขยาย
- นำเข้า
- ชนิดของเนื้อหา
- ข้อมูล
- เซสชั่น
- คือThreadSafe
- ล้างอัตโนมัติ
- กันชน
- IsErrorPage
- การเข้ารหัสหน้า
- errorPage
- คือ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 และเราพยายามแสดงวันที่ปัจจุบันในโค้ด
เมื่อคุณรันโค้ดข้างต้นคุณจะได้รับผลลัพธ์ดังต่อไปนี้
เอาท์พุต:
- วันที่คือ: วันที่ปัจจุบันโดยใช้วิธีวันที่ของคลาสวันที่
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 แล้วเพิ่มขึ้น ซึ่งจะให้ผลลัพธ์ในไฟล์หลักดังที่แสดงด้านล่าง
เมื่อคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้:
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” คือแท็กที่กำหนดเองซึ่งกำหนดไว้และนำไปใช้ได้ทุกที่