Servlets - วงจรชีวิต
วงจรชีวิตของ servlet สามารถกำหนดได้เป็นกระบวนการทั้งหมดตั้งแต่การสร้างจนถึงการทำลายล้าง ต่อไปนี้เป็นเส้นทางตามด้วย servlet
servlet เริ่มต้นโดยการเรียกไฟล์ init() วิธี.
servlet เรียก service() วิธีการดำเนินการตามคำขอของลูกค้า
servlet ถูกยกเลิกโดยการเรียกไฟล์ destroy() วิธี.
สุดท้าย servlet คือขยะที่รวบรวมโดยผู้รวบรวมขยะของ JVM
ตอนนี้ให้เราคุยรายละเอียดวิธีวงจรชีวิต
วิธีการ init ()
วิธีการเริ่มต้นถูกเรียกเพียงครั้งเดียว จะถูกเรียกเมื่อสร้าง servlet เท่านั้นและไม่ถูกเรียกสำหรับคำร้องขอของผู้ใช้ใด ๆ ในภายหลัง ดังนั้นจึงใช้สำหรับการเริ่มต้นเพียงครั้งเดียวเช่นเดียวกับวิธีการเริ่มต้นของแอพเพล็ต
โดยปกติแล้ว servlet จะถูกสร้างขึ้นเมื่อผู้ใช้เรียกใช้ URL ที่สอดคล้องกับ servlet เป็นครั้งแรก แต่คุณยังสามารถระบุว่าจะโหลด servlet เมื่อเซิร์ฟเวอร์เริ่มทำงานครั้งแรก
เมื่อผู้ใช้เรียกใช้ servlet อินสแตนซ์เดียวของแต่ละ servlet จะถูกสร้างขึ้นโดยคำขอของผู้ใช้แต่ละรายการจะส่งผลให้เกิดเธรดใหม่ที่ส่งต่อไปยัง doGet หรือ doPost ตามความเหมาะสม วิธีการ init () เพียงสร้างหรือโหลดข้อมูลบางอย่างที่จะใช้ตลอดอายุการใช้งานของ servlet
นิยามเมธอด init มีลักษณะดังนี้ -
public void init() throws ServletException {
// Initialization code...
}
บริการ () วิธีการ
เมธอด service () เป็นวิธีการหลักในการปฏิบัติงานจริง คอนเทนเนอร์ servlet (เช่นเว็บเซิร์ฟเวอร์) เรียกใช้เมธอด service () เพื่อจัดการคำขอที่มาจากไคลเอนต์ (เบราว์เซอร์) และเขียนการตอบกลับที่จัดรูปแบบกลับไปยังไคลเอนต์
ทุกครั้งที่เซิร์ฟเวอร์ได้รับคำร้องขอ servlet เซิร์ฟเวอร์จะสร้างเธรดใหม่และเรียกใช้บริการ เมธอด service () ตรวจสอบประเภทคำร้องขอ HTTP (GET, POST, PUT, DELETE ฯลฯ ) และเรียกใช้ doGet, doPost, doPut, doDelete เป็นต้นตามความเหมาะสม
นี่คือลายเซ็นของวิธีนี้ -
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
}
เมธอด service () ถูกเรียกโดย container และ service method เรียกใช้ doGet, doPost, doPut, doDelete ฯลฯ ตามความเหมาะสม ดังนั้นคุณจึงไม่มีส่วนเกี่ยวข้องกับเมธอด service () แต่คุณจะแทนที่ doGet () หรือ doPost () ขึ้นอยู่กับประเภทของคำขอที่คุณได้รับจากไคลเอนต์
doGet () และ doPost () เป็นวิธีการที่ใช้บ่อยที่สุดในคำขอบริการแต่ละรายการ นี่คือลายเซ็นของสองวิธีนี้
วิธี doGet ()
คำขอ GET เป็นผลลัพธ์จากคำขอปกติสำหรับ URL หรือจากรูปแบบ HTML ที่ไม่มีการระบุ METHOD และควรจัดการโดย doGet () เมธอด
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}
doPost () วิธีการ
คำขอ POST เป็นผลลัพธ์จากรูปแบบ HTML ที่แสดงรายการ POST เป็น METHOD โดยเฉพาะและควรจัดการโดย doPost () วิธีการ
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}
วิธีการทำลาย ()
เมธอด destroy () ถูกเรียกเพียงครั้งเดียวเมื่อสิ้นสุดวงจรชีวิตของ servlet วิธีนี้เปิดโอกาสให้ servlet ของคุณปิดการเชื่อมต่อฐานข้อมูลหยุดเธรดพื้นหลังเขียนรายการคุกกี้หรือจำนวนการกดลงดิสก์และดำเนินกิจกรรมการล้างข้อมูลอื่น ๆ ดังกล่าว
หลังจากเรียกเมธอด destroy () วัตถุ servlet จะถูกทำเครื่องหมายสำหรับการรวบรวมขยะ นิยามวิธีการทำลายมีลักษณะดังนี้ -
public void destroy() {
// Finalization code...
}
แผนภาพสถาปัตยกรรม
รูปต่อไปนี้แสดงสถานการณ์วงจรชีวิตของ servlet ทั่วไป
ขั้นแรกการร้องขอ HTTP ที่มาถึงเซิร์ฟเวอร์จะถูกมอบหมายให้กับคอนเทนเนอร์ servlet
คอนเทนเนอร์ servlet โหลด servlet ก่อนที่จะเรียกใช้เมธอด service ()
จากนั้นคอนเทนเนอร์ servlet จะจัดการการร้องขอหลายรายการโดยการวางไข่หลายเธรดโดยแต่ละเธรดจะเรียกใช้เมธอด service () ของอินสแตนซ์เดียวของ servlet