เปิดตัวพระเอกครับ คุณจะได้รู้ว่าเค้าเป็นใครกันแน่
โครงสร้างพื้นฐาน
Servlet คือ Java Class ที่สืบทอดมาจาก HttpServlet ครับ
ซึ่ง HttpServlet นั้นมี method ทีเป็นพระเอกหลักๆ ได้แก่
init() อันนี้เป็นเมธอดที่ถูกเรียกต้อง servlet ถูกสร้างขึ้นมาครับ โดยเรียกครั้งเดียวเท่านั้นต่อ Web Container
service(HttpServletRequest request, HttpServletResponse response) เป็นเมธอดที่ถูกเรียกทุกครั้งที่มี Request เข้ามาครับ ซึ่งมันจะทำหน้าที่ดูว่า request นั้นเป็นประเภทไหน และทำการส่งต่อไปยัง method ที่รับหน้าที่นั้นๆ ต่อไปครับ ที่ดังๆ ก็คือ GET,POST ซึ่งจะถูกส่งเข้า doGet และ doPost ตามลำดับครับ
destroy() เป็นเมธอดที่ถูกเรียกตอนที่ Servlet ตายครับซึ่งจะเป็นตอนที่ Web Container ถูกปิดตัวลงนั่นเอง ส่วนใหญ่ใช้เพื่อเก็บ state ของ servlet ไว้ เวลาเปิดใหม่จะได้สามารถดึงค่าเก่ามาไว้ได้เหมือนเดิมครับ
พฤติกรรมของ Servlet (Servlet Behavior)
Servlet นั้นจะถูกสร้างเพียงครั้งเดียวเท่านั้น และจะมีเพียง Object เดียวต่อ Container เท่านั้น ซึ่งเวลามี request เข้ามาจะเกิดการสร้าง thread เพื่อใช้สำหรับติดต่อกับ instance ของ Servlet ซึ่งมีเพียงตัวเดียวเท่านั้น ซึ่งช่วยในการลดการใช้ memory
นั่นแสดงว่า หากคุณสร้างตัวแปรไว้เป็นระดับ instance ของ class แล้ว เมื่อมีการติดต่อหรือเปลี่ยนแปลงค่า ทุกคนที่เข้ามาก็จะเป็นการเข้าถึงตัวแปรเดียวกัน ซึ่งทุกคนก็จะเห็นค่าเดียวกันซึ่งเป็นค่าล่าสุดครับ
Life Cycle
เริ่มจาก init() ครับ คราวนี้ Servlet เราก็เกิดเรียบร้อย
ต่อมาเมื่อมี request เข้ามาก็จะทำการเรียก doService และ forward ไปยัง doGet และ doPost เพื่อประมวลผลและตอบกลับ ซึ่งจะเป็นอย่างนี้ไปเรื่อยๆ จนกว่าจะปิด Web Container
สุดท้าย destroy() เกิดตอน Servlet ตายครับ ลอง System.out.println("destroy") แล้วลอง start tomcat และเล่นๆๆๆๆ จนปิด tomcat ดูครับ คุณจะเห็น destroy ตอนปิด tomcat นั้นเอง
สรุปวันนี้
1. ใครอยากเป็น Servlet ก็ extends HttpServlet ซะ
2. ค่าไหนอยากกำหนดเริ่มต้นก็ใส่ใน init() โล้ด
3. ค่าไหนที่ไม่อยากแชร์ให้ชาวบ้านรู้ก็อย่าประกาศเป็น instance ของคลาสนะครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น