วงจรชีวิตของ JSP

วงจรชีวิตของเจเอสพี

JSP LifeCycle คืออะไร?

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

ระยะต่างๆ ของวงจรชีวิตของ JSP

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

กระบวนการรวบรวมหน้า JSP ประกอบด้วยสามขั้นตอน:

  • การแยกวิเคราะห์ JSP
  • เปลี่ยน JSP ให้เป็นเซิร์ฟเล็ต
  • กำลังรวบรวมเซิร์ฟเล็ต

แผนภาพวงจรชีวิตของ JSP

JSP Lifecycle แสดงในแผนภาพด้านล่าง

วงจรชีวิตของ JSP

ขั้นตอนต่อไปนี้จะอธิบายวงจรชีวิตของ JSP:

  1. คำแปลหน้า JSP
  2. การรวบรวมหน้า JSP (การรวบรวมหน้า JSP เป็น _jsp.java)
  3. การโหลดคลาส (_jsp.java ถูกแปลงเป็นไฟล์คลาส _jsp.class)
  4. การสร้างอินสแตนซ์ (วัตถุของเซิร์ฟเล็ตที่สร้างขึ้นถูกสร้างขึ้น)
  5. การเริ่มต้น(_jspinit() วิธีการถูกเรียกใช้โดยคอนเทนเนอร์)
  6. คำขอดำเนินการ(_jspservice() วิธีการถูกเรียกใช้โดยคอนเทนเนอร์)
  7. ทำลาย (_jspDestroy() วิธีการเรียกใช้โดยคอนเทนเนอร์)

ให้เรามีบทสรุปโดยละเอียดเพิ่มเติมเกี่ยวกับประเด็นข้างต้น:

1) การแปลหน้า JSP:

A Java ไฟล์เซิร์ฟเล็ตถูกสร้างขึ้นจากไฟล์ต้นฉบับ JSP นี่เป็นก้าวแรกของวงจรชีวิต JSP ในขั้นตอนการแปล คอนเทนเนอร์จะตรวจสอบความถูกต้องทางวากยสัมพันธ์ของหน้า JSP และไฟล์แท็ก

  • คอนเทนเนอร์ JSP ตีความคำสั่งและการดำเนินการมาตรฐานและการดำเนินการแบบกำหนดเองที่อ้างอิงถึงไลบรารีแท็ก (ทั้งหมดเป็นส่วนหนึ่งของหน้า JSP และจะกล่าวถึงในหัวข้อถัดไป) ที่ใช้ในหน้า JSP นี้
  • ในคำอธิบายรูปภาพข้างต้น demo.jsp จะถูกแปลเป็น demo_jsp.java ในขั้นตอนแรก
  • ลองมาตัวอย่างของ “demo.jsp” ดังที่แสดงด้านล่าง:

สาธิต.jsp

<html>
<head>
<title>Demo JSP</title>
</head>
<%
int demvar=0;%>
<body>
Count is:
<% Out.println(demovar++); %>
<body>
</html>

คำอธิบายรหัสสำหรับ Demo.jsp

รหัสบรรทัด 1: แท็กเริ่มต้น html

รหัสบรรทัด 2: ป้ายหัว

รหัสบรรทัด 3 - 4: Title Tag เช่น Demo JSP และแท็กปิด head

รหัสบรรทัด 5 - 6: แท็ก Scriptlet ซึ่งเริ่มต้นการสาธิตตัวแปร

รหัสบรรทัด 7 - 8: ในแท็ก body ข้อความที่จะพิมพ์ในเอาต์พุต (จำนวนคือ: )

รหัสบรรทัด 9: แท็กสคริปต์ที่พยายามพิมพ์ตัวแปรเดโมวาร์ด้วยค่าที่เพิ่มขึ้น

รหัสบรรทัด 10 - 11: ปิดแท็กเนื้อหาและ HTML แล้ว

หน้า Demo JSP จะถูกแปลงเป็นเซิร์ฟเล็ต demo_jsp ในโค้ดด้านล่าง

วงจรชีวิตของ JSP

คำอธิบายโค้ดสำหรับ Demo_jsp.java

รหัสบรรทัด 1: คลาส Servlet demo_jsp กำลังขยายคลาสพาเรนต์ HttpServlet

รหัสบรรทัด 2 - 3: การแทนที่วิธีการบริการของ jsp เช่น _jspservice ซึ่งมีวัตถุ HttpServletRequest และ HttpServletResponse เป็นพารามิเตอร์

รหัสบรรทัด 4: วิธีการเปิด

รหัสบรรทัด 5: การเรียกวิธีการ getWriter() ของวัตถุตอบสนองเพื่อรับ PrintWriterobject (พิมพ์การแสดงการจัดรูปแบบของวัตถุไปยังสตรีมเอาต์พุตข้อความ)

รหัสบรรทัด 6: การเรียกเมธอด setContentType ของวัตถุตอบสนองเพื่อตั้งค่าประเภทเนื้อหา

รหัสบรรทัด 7: การใช้ write() วิธีการของวัตถุ PrintWriter พยายามแยกวิเคราะห์ html

รหัสบรรทัด 8: กำลังเริ่มต้นตัวแปร demovar เป็น 0

รหัสบรรทัด 9: โทร write() วิธีการของวัตถุ PrintWriter เพื่อแยกวิเคราะห์ข้อความ

รหัสบรรทัด 10: โทร print() เมธอดของอ็อบเจ็กต์ PrintWriter เพื่อเพิ่มตัวแปร demovar จาก 0+1=1 ดังนั้นเอาต์พุตจะเป็น 1

รหัสบรรทัด 11: การใช้ write() วิธีการของวัตถุ PrintWriter พยายามแยกวิเคราะห์ html

Output:

วงจรชีวิตของ JSP

  • ที่นี่คุณจะเห็นว่าในภาพหน้าจอเอาต์พุตคือ 1 เนื่องจาก demvar เริ่มต้นเป็น 0 แล้วเพิ่มขึ้นเป็น 0+1=1

ในตัวอย่างข้างต้น

  • demo.jsp คือ JSP ที่ตัวแปรหนึ่งถูกเตรียมใช้งานและเพิ่มขึ้น JSP นี้ถูกแปลงเป็นเซิร์ฟเล็ต (demo_jsp.class ) โดยที่เอ็นจิ้น JSP โหลดเพจ JSP และแปลงเป็นเนื้อหาเซิร์ฟเล็ต
  • เมื่อการแปลงเกิดขึ้น ข้อความเทมเพลตทั้งหมดจะถูกแปลงเป็น println() งบและทั้งหมด องค์ประกอบเจเอสพี ถูกแปลงเป็น Java รหัส.

นี่คือวิธีการแปลเพจ JSP แบบธรรมดาเป็นคลาสเซิร์ฟเล็ต

2) การรวบรวมเพจ JSP

  • ไฟล์ Java servlet ที่สร้างขึ้นจะถูกคอมไพล์เป็นคลาส Java servlet
  • การแปลเพจต้นฉบับของ Java ไปเป็นคลาสการใช้งานสามารถเกิดขึ้นได้ตลอดเวลาระหว่างการนำเพจ JSP ไปใช้งานในคอนเทนเนอร์และการประมวลผลเพจ JSP
  • ในคำอธิบายภาพด้านบน demo_jsp.java ถูกคอมไพล์เป็นไฟล์คลาส demo_jsp.class

3) การโหลดคลาส

  • ขณะนี้คลาส Servlet ที่โหลดจากแหล่ง JSP ถูกโหลดลงในคอนเทนเนอร์แล้ว

4) การสร้างอินสแตนซ์

  • ในขั้นตอนนี้ ออบเจ็กต์คืออินสแตนซ์ของคลาสจะถูกสร้างขึ้น
  • คอนเทนเนอร์จัดการอินสแตนซ์ของคลาสนี้ตั้งแต่หนึ่งรายการขึ้นไปเพื่อตอบสนองต่อคำขอและเหตุการณ์อื่น ๆ โดยทั่วไปแล้ว คอนเทนเนอร์ JSP จะถูกสร้างขึ้นโดยใช้คอนเทนเนอร์เซิร์ฟเล็ต คอนเทนเนอร์ JSP เป็นส่วนขยายของคอนเทนเนอร์เซิร์ฟเล็ต เนื่องจากทั้งคอนเทนเนอร์รองรับ JSP และเซิร์ฟเล็ต
  • อินเทอร์เฟซ JSPPage ซึ่งจัดทำโดยคอนเทนเนอร์จัดเตรียมไว้ init() และ destroy() วิธีการ
  • มีอินเทอร์เฟซ HttpJSPPage ซึ่งให้บริการคำขอ HTTP และยังมีวิธีบริการอีกด้วย

5) การเริ่มต้น

public void jspInit()
{
	//initializing the code
}
  • _jspinit() เมธอดจะเริ่มต้นอินสแตนซ์เซิร์ฟเล็ตซึ่งสร้างจาก JSP และจะถูกเรียกใช้โดยคอนเทนเนอร์ในเฟสนี้
  • เมื่อสร้างอินสแตนซ์แล้ว วิธีการ init จะถูกเรียกใช้ทันทีหลังจากนั้น
  • มันถูกเรียกเพียงครั้งเดียวในระหว่างวงจรชีวิต JSP วิธีการเริ่มต้นจะถูกประกาศดังที่แสดงด้านบน

6) การประมวลผลคำขอ

void _jspservice(HttpServletRequest request HttpServletResponse response)
{
	//handling all request and responses
}
  • _jspservice() เมธอดถูกเรียกใช้โดยคอนเทนเนอร์สำหรับคำขอทั้งหมดที่เพจ JSP สร้างขึ้นในระหว่างวงจรการใช้งาน
  • สำหรับระยะนี้ จะต้องผ่านขั้นตอนข้างต้นทั้งหมด จากนั้นจึงจะเรียกใช้ได้เฉพาะวิธีการบริการเท่านั้น
  • มันส่งผ่านออบเจ็กต์การร้องขอและการตอบกลับ
  • วิธีการนี้ไม่สามารถแทนที่ได้
  • วิธีการที่แสดงไว้ด้านบน: มีหน้าที่สร้างวิธี HTTP ทั้งหมด เช่น GET, POST เป็นต้น

7) ทำลาย

public void _jspdestroy()
{
            //all clean up code
}
  • _jspdestroy() คอนเทนเนอร์ก็เรียกใช้เมธอดเช่นกัน
  • วิธีการนี้เรียกว่าเมื่อคอนเทนเนอร์ตัดสินใจว่าไม่ต้องการอินสแตนซ์เซิร์ฟเล็ตเพื่อให้บริการคำขออีกต่อไป
  • เมื่อทำการเรียกวิธีการทำลาย เซิร์ฟเล็ตก็พร้อมสำหรับการรวบรวมขยะ
  • นี่คือจุดสิ้นสุดของวงจรชีวิต
  • เราสามารถแทนที่ได้ jspdestroy() วิธีการเมื่อเราทำการล้างข้อมูลใดๆ เช่น การปล่อยการเชื่อมต่อฐานข้อมูลหรือการปิดไฟล์ที่เปิดอยู่