กุญแจสำคัญในการทำความเข้าใจฟังก์ชันการทำงานของ JSP คือการเข้าใจวงจรชีวิตที่ JSP ยึดถือ
วงจรชีวิต JSP เป็นกระบวนการทั้งหมดตั้งแต่การสร้างจนถึงการทำลาย ซึ่งคล้ายกับวงจรชีวิตเซิร์ฟเล็ต ข้อแตกต่างคือวงจรชีวิต JSP ยังรวมถึงการคอมไพล์ไฟล์ JSP ลงในเซิร์ฟเล็ตด้วย
ต่อไปนี้เป็นขั้นตอนที่วงจรชีวิต JSP ดำเนินไป:
ขั้นตอนการรวบรวม:
คอนเทนเนอร์เซิร์ฟเล็ตรวบรวมไฟล์ต้นฉบับของเซิร์ฟเล็ตและสร้างคลาสเซิร์ฟเล็ต
ขั้นตอนการเริ่มต้น:
โหลดคลาสเซิร์ฟเล็ตที่สอดคล้องกับ JSP สร้างอินสแตนซ์ และเรียกใช้วิธีการเริ่มต้น
ขั้นตอนการดำเนินการ:
เรียกวิธีการบริการของอินสแตนซ์เซิร์ฟเล็ตที่สอดคล้องกับ JSP
ระยะการทำลายล้าง:
เรียกวิธีการทำลายของอินสแตนซ์เซิร์ฟเล็ตที่สอดคล้องกับ JSP แล้วทำลายอินสแตนซ์เซิร์ฟเล็ต
แน่นอนว่า สี่ขั้นตอนหลักของวงจรชีวิต JSP นั้นคล้ายคลึงกับวงจรชีวิตเซิร์ฟเล็ตมาก ดังที่แสดงด้านล่าง:
เมื่อเบราว์เซอร์ร้องขอเพจ JSP เอ็นจิ้น JSP จะตรวจสอบก่อนว่าจำเป็นต้องคอมไพล์ไฟล์หรือไม่ หากไฟล์นี้ไม่ได้รับการคอมไพล์ หรือมีการเปลี่ยนแปลงตั้งแต่การคอมไพล์ครั้งล่าสุด ให้คอมไพล์ไฟล์ JSP
กระบวนการรวบรวมประกอบด้วยสามขั้นตอน:
แยกไฟล์ JSP
แปลงไฟล์ JSP เป็นเซิร์ฟเล็ต
คอมไพล์เซิร์ฟเล็ต
หลังจากที่คอนเทนเนอร์โหลดไฟล์ JSP แล้ว จะเรียกใช้เมธอด jspInit() ก่อนที่จะให้บริการใดๆ แก่คำขอ หากคุณต้องการดำเนินการงานการกำหนดค่าเริ่มต้น JSP แบบกำหนดเอง เพียงแทนที่เมธอด jspInit() เช่นนี้:
โมฆะสาธารณะ jspInit () {// รหัสเริ่มต้น}
โดยทั่วไปแล้ว โปรแกรมจะถูกเตรียมใช้งานเพียงครั้งเดียว และเช่นเดียวกันกับเซิร์ฟเล็ต โดยปกติคุณสามารถเริ่มต้นการเชื่อมต่อฐานข้อมูล เปิดไฟล์ และสร้างตารางแบบสอบถามในเมธอด jspInit()
ขั้นตอนนี้อธิบายการโต้ตอบที่เกี่ยวข้องกับคำขอทั้งหมดในวงจรชีวิต JSP จนกว่าจะถูกทำลาย
เมื่อเว็บเพจ JSP เสร็จสิ้นการเตรียมใช้งาน เอ็นจิ้น JSP จะเรียกใช้เมธอด _jspService()
วิธีการ _jspService() ต้องใช้วัตถุ HttpServletRequest และวัตถุ HttpServletResponse เป็นพารามิเตอร์ ดังต่อไปนี้:
ถือเป็นโมฆะ _jspService (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse) {// รหัสประมวลผลฝั่งเซิร์ฟเวอร์}
เมธอด _jspService() ถูกเรียกหนึ่งครั้งในแต่ละคำขอ และมีหน้าที่สร้างการตอบกลับที่สอดคล้องกัน และยังรับผิดชอบในการสร้างการตอบกลับสำหรับวิธี HTTP ทั้ง 7 วิธี เช่น GET, POST, DELETE เป็นต้น
ระยะการทำลายล้างของวงจรชีวิต JSP อธิบายถึงสิ่งที่เกิดขึ้นเมื่อเว็บเพจ JSP ถูกลบออกจากคอนเทนเนอร์
วิธีการ jspDestroy() ใน JSP เทียบเท่ากับวิธีการทำลายในเซิร์ฟเล็ต แทนที่เมธอด jspDestroy() เมื่อคุณต้องการดำเนินการล้างข้อมูล เช่น ปล่อยการเชื่อมต่อฐานข้อมูลหรือปิดโฟลเดอร์ เป็นต้น
รูปแบบของเมธอด jspDestroy() เป็นดังนี้:
โมฆะสาธารณะ jspDestroy () {// รหัสล้าง}
ตัวอย่างของโค้ดวงจรชีวิต JSP เป็นดังนี้:
<%@ ภาษาหน้า = "java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>life.jsp</title></head <body><%! ส่วนตัว intVar=0; int serviceVar=0 ส่วนตัว;%> <%! System.out.println("jspInit(): JSP ได้รับการเตรียมใช้งาน "+initVar+" ครั้ง"); } public void jspDestroy(){ destroyVar++; System.out.println("jspDestroy(): JSP ถูกทำลาย"+destroyVar+ "times"); }%><% serviceVar++; System.out.println("_jspService(): JSP ตอบกลับคำขอ "+serviceVar+" ทั้งหมด"); String content1="จำนวนการเริ่มต้น: "+initVar; String content2="จำนวนการตอบสนองต่อคำขอของลูกค้า: "+serviceVar; String content3="จำนวนการทำลายล้าง: " +destroyVar;%> <h1>ตัวอย่างการทดสอบ JSP บทช่วยสอน w3cschool</h1><p><%=content1 %></p><p><%=content2 %></p><p><%=content3 %></p></body></html>