กลับไปหน้าบทความ

อ่าน 7 นาที

จาการ์ตาเซอร์ฟเล็ต

Jakarta Servlet หรือที่รู้จักกันในชื่อเดิมว่า Java Servlet เป็น ส่วนประกอบซอฟต์แวร์ ของ Java ที่ขยายขีดความสามารถของ เซิร์ฟเวอร์ แม้ว่า Servlet จะสามารถตอบสนองต่อคำขอได้หลายประเภท...

จาการ์ตาเซอร์ฟเล็ต

(Learn how and when to remove this message)
จาการ์ตาเซอร์ฟเล็ต
ผู้เขียนต้นฉบับปาวนี ดิวันจี
นักพัฒนามูลนิธิอีคลิปส์
ปล่อยธันวาคม พ.ศ. 2539 (1996-12)
เวอร์ชันเสถียร
6.1 / 28 มีนาคม 2567 (2024-03-28)
เขียนเป็นชวา
แพลตฟอร์มจาการ์ตา อีอี
ขนาด2.56 MB
พิมพ์ส่วนประกอบซอฟต์แวร์สำหรับWeb API
ใบอนุญาตใบอนุญาตสาธารณะของ Eclipse
เว็บไซต์jakarta.ee/specifications/servlet/
ที่เก็บข้อมูล
  • github.com/jakartaee/servlet
วงจรชีวิตของไฟล์JSP

Jakarta Servletหรือที่รู้จักกันในชื่อเดิมว่าJava Servletเป็นส่วนประกอบซอฟต์แวร์ของ Java ที่ขยายขีดความสามารถของเซิร์ฟเวอร์แม้ว่า Servlet จะสามารถตอบสนองต่อคำขอได้หลายประเภท แต่โดยทั่วไปแล้วจะใช้เป็นเว็บคอนเทนเนอร์สำหรับโฮสต์เว็บแอ ปพลิเคชัน บนเว็บเซิร์ฟเวอร์จึงจัดเป็นเว็บ API ฝั่งเซิร์ฟเวอร์ เว็บ Servlet เหล่านี้เป็น คู่ ขนาน ของเทคโนโลยี เนื้อหาเว็บแบบไดนามิกอื่น ๆเช่นPHPและASP.NET

การแนะนำ

Jakarta Servletคือคลาส Java [ 1 ]ในJakarta EEที่สอดคล้องกับ Jakarta Servlet API [ 2 ] ซึ่ง เป็นมาตรฐานสำหรับการใช้งานคลาส Java ที่ตอบสนองต่อคำขอ โดยหลักการแล้ว Servlet สามารถสื่อสารผ่าน โปรโตคอล ไคลเอ็นต์-เซิร์ฟเวอร์ ใดก็ได้ แต่ส่วนใหญ่จะใช้กับHTTPโดยหลักการแล้ว Servlet ใดๆ ก็สามารถขยายGenericServletคลาสได้ อย่างไรก็ตาม ในความเป็นจริงแล้ว Servlet ทุกตัวจะขยายHttpServletคลาส[ 3 ]ดังนั้น "servlet" จึงมักใช้เป็นคำย่อสำหรับ "HTTP servlet" [ 4 ]ด้วยเหตุนี้ Servlet จึงสามารถใช้เพื่อเพิ่มเนื้อหาแบบไดนามิกให้กับเว็บเซิร์ฟเวอร์โดยใช้แพลตฟอร์ม Javaได้[ 5 ]เนื้อหาที่สร้างขึ้นโดยทั่วไปคือHTMLแต่ก็อาจเป็นข้อมูลอื่นๆ เช่นXMLและที่พบได้บ่อยกว่าคือ JSON

Jakarta Servlet API ได้ถูกแทนที่ด้วยเทคโนโลยี Java มาตรฐานสองอย่างสำหรับเว็บเซอร์วิสไปบ้างแล้ว:

Servlet Servletคืออ็อบเจ็กต์ที่รับคำขอและสร้างการตอบสนองตามคำขอนั้นServletแพ็กเกจพื้นฐานกำหนดอ็อบเจ็กต์ Java เพื่อแสดงคำขอและการตอบสนองของ Servlet รวมถึงอ็อบเจ็กต์ที่สะท้อนถึงพารามิเตอร์การกำหนดค่าและสภาพแวดล้อมการทำงานของ Servlet ด้วย

APIของ Servlet ซึ่งบรรจุอยู่ในลำดับชั้นของแพ็กเกจ Javajavax.servletจะกำหนดปฏิสัมพันธ์ที่คาดหวังระหว่างเว็บคอนเทนเนอร์และเซิร์ฟเล็ต[ 4 ]

แพ็กเกจนี้javax.servlet.httpกำหนด คลาสย่อยเฉพาะสำหรับ HTTPของGenericServlet. แพ็กเกจนี้ประกอบด้วยอ็อบเจ็กต์การจัดการเซสชันที่ติดตามคำขอและการตอบกลับหลายรายการระหว่างเว็บเซิร์ฟเวอร์และไคลเอ็นต์

เซิร์ฟเล็ตสามารถรักษาสถานะใน ตัวแปร เซสชันระหว่างการทำธุรกรรมเซิร์ฟเวอร์หลายครั้งโดยใช้คุกกี้ HTTPหรือ การแม ปURL [ 6 ]มีหลายวิธีในการสร้างเซิร์ฟเล็ตและใช้การแมป URL กับเซิร์ฟเล็ต ก่อนข้อกำหนดเซิร์ฟเล็ต 3.0 (Tomcat 7.0) การกำหนดค่า web.xml เพื่อแมปเซิร์ฟเล็ตกับ URL เป็นเพียงตัวเลือกเดียว สำหรับแอปพลิเคชันที่ใช้ข้อกำหนดเซิร์ฟเล็ต 3.0 หรือเวอร์ชันที่ใหม่กว่า@WebServletสามารถใช้คำอธิบายประกอบเพื่อแมปเซิร์ฟเล็ตใดๆ กับรูปแบบ URL หนึ่งรูปแบบหรือมากกว่าได้

Servlet อาจถูกบรรจุในไฟล์ WARเป็นเว็บแอปพลิเคชัน[ 7 ]

จำเป็นต้องใช้ เว็บคอนเทนเนอร์ในการปรับใช้และเรียกใช้เซิร์ฟเล็ต เว็บคอนเทนเนอร์ (หรือที่รู้จักกันในชื่อเซิร์ฟเล็ตคอนเทนเนอร์) โดยพื้นฐานแล้วคือส่วนประกอบของเว็บเซิร์ฟเวอร์ที่โต้ตอบกับเซิร์ฟเล็ต[ 1 ]เว็บคอนเทนเนอร์มีหน้าที่จัดการวงจรชีวิตของเซิร์ฟเล็ต แมป URL กับเซิร์ฟเล็ตเฉพาะ และตรวจสอบให้แน่ใจว่าผู้ร้องขอ URL มีสิทธิ์เข้าถึงที่ถูกต้อง

เซอร์ฟเล็ตสามารถสร้างขึ้นโดยอัตโนมัติจากJakarta Server Pages (JSP) โดยคอมไพเลอร์ Jakarta Server Pagesความแตกต่างระหว่างเซอร์ฟเล็ตและ JSP คือ เซอร์ฟเล็ตมักจะฝัง HTML ไว้ในโค้ด Java ในขณะที่ JSP ฝังโค้ด Java ไว้ใน HTML โดยทั่วไปแล้ว เมื่อใช้ JSP การฝังโค้ด Java ไว้ใน JSP ถือเป็นวิธีปฏิบัติที่ไม่ดี[ 8 ]แทนที่จะเป็นเช่นนั้น วิธีที่ดีกว่าคือการย้ายตรรกะแบ็กเอนด์จาก JSP ไปยังโค้ด Java ในServlet[ 8 ] วิธีนี้ทำให้มั่นใจได้ว่าServlet[ ] มีหน้าที่รับผิดชอบเฉพาะการประมวลผล และ JSP มีหน้าที่รับผิดชอบเฉพาะการแสดง HTML [ 8 ]ทำให้เกิดการแยกความรับผิดชอบ ที่ชัดเจน และสอดคล้องกับหลักการความรับผิดชอบเดียว

แม้ว่าการใช้งานเซิร์ฟเล็ตโดยตรงเพื่อสร้าง HTML (ดังแสดงในตัวอย่างด้านล่าง) จะพบได้น้อยแล้ว แต่เฟรมเวิร์กเว็บ MVC ระดับสูงใน Jakarta EE ( Faces ) ยังคงใช้เทคโนโลยีเซิร์ฟเล็ตอย่างชัดเจนสำหรับการจัดการคำขอ/การตอบสนองระดับต่ำผ่านทางFacesServlet.

การใช้งานที่ค่อนข้างเก่ากว่านั้นคือการใช้เซิร์ฟเล็ตควบคู่กับ JSP ในรูปแบบที่เรียกว่า " Model 2 " ซึ่งเป็นรูปแบบหนึ่งของโมเดล-วิว-คอนโทรลเลอร์

ประวัติศาสตร์

Java Servlet API ได้รับการประกาศต่อสาธารณะครั้งแรกในงาน ประชุม JavaOne ครั้งแรก ในเดือนพฤษภาคม พ.ศ. 2539 [ 9 ] [ 10 ]ประมาณสองเดือนหลังจากการประกาศในงานประชุม การใช้งานสาธารณะครั้งแรกก็มีให้บริการบนเว็บไซต์ JavaSoft นี่คือเวอร์ชันอัลฟ่าแรกของ Java Web Server (JWS; ในขณะนั้นรู้จักกันในชื่อรหัสJeeves ) [ 11 ]ซึ่งในที่สุดจะถูกจัดส่งเป็นผลิตภัณฑ์ในวันที่ 5 มิถุนายน พ.ศ. 2540 [ 12 ]

ในบล็อกของเขาบนjava.net Jim Driscoll ผู้เชี่ยวชาญของ Sun และ หัวหน้า GlassFishได้อธิบายรายละเอียดเกี่ยวกับประวัติของเทคโนโลยีเซิร์ฟเล็ต[ 13 ] James Goslingเป็นคนแรกที่คิดถึงเซิร์ฟเล็ตในช่วงแรกๆ ของJavaแต่แนวคิดนี้ไม่ได้กลายเป็นผลิตภัณฑ์จนกระทั่งเดือนธันวาคม 1996 เมื่อ Sun วางจำหน่าย JWS [ 14 ] [ 15 ] [ 16 ]นี่เป็นช่วงเวลาก่อนที่สิ่งที่ปัจจุบันคือJakarta EEจะถูกกำหนดให้เป็นข้อกำหนด

ข้อกำหนด Servlet1 ถูกสร้างขึ้นโดย Pavni Diwanji [ 17 ] [ 18 ]ขณะที่เธอทำงานอยู่ที่Sun Microsystems โดยเวอร์ชัน 1.0 ได้ รับการสรุปในเดือนมิถุนายน พ.ศ. 2540 ตั้งแต่เวอร์ชัน 2.2 เป็นต้นไป ข้อกำหนดนี้ได้รับการพัฒนาภายใต้Java Community Process

ประวัติ API ของ Servlet
เวอร์ชัน Servlet APIปล่อยแล้วข้อกำหนดแพลตฟอร์มการเปลี่ยนแปลงที่สำคัญ
จาการ์ตาเซอร์ฟเล็ต 6.128 มีนาคม 25676.1จาการ์ตา อีอี 11ปรับปรุงการรองรับรหัสสถานะ HTTP และการเข้ารหัสอักขระ
จาการ์ตาเซอร์ฟเล็ต 6.031 พฤษภาคม 25656.0จาการ์ตา อีอี 10ลบฟีเจอร์ที่ล้าสมัยและนำฟีเจอร์ที่ได้รับการร้องขอมาใช้
จาการ์ตา เซอร์ฟเล็ต 5.09 ตุลาคม 25635.0จาการ์ตา อีอี 9API ถูกย้ายจากแพ็กเกจjavax.servletไปยังjakarta.servlet
จาการ์ตาเซอร์ฟเล็ต 4.0.310 กันยายน 25624.0จาการ์ตา อีอี 8เปลี่ยนชื่อจากเครื่องหมายการค้า "Java"
จาวา เซอร์ฟเล็ต 4.0กันยายน 2560เจเอสอาร์ 369Java EE 8HTTP/2
จาวา เซอร์ฟเล็ต 3.1พฤษภาคม 2556เจเอสอาร์ 340Java EE 7การรับส่งข้อมูลแบบไม่บล็อก กลไกการอัปเกรดโปรโตคอล HTTP ( WebSocket ) [ 19 ]
จาวา เซอร์ฟเล็ต 3.0ธันวาคม พ.ศ. 2552 [ 20 ]เจเอสอาร์ 315Java EE 6ความสามารถในการเสียบปลั๊ก, ความง่ายในการพัฒนา, เซอร์ฟเล็ตแบบอะซิงโครนัส, ความปลอดภัย, การอัปโหลดไฟล์
จาวา เซอร์ฟเล็ต 2.5กันยายน พ.ศ. 2548 [ 21 ]เจเอสอาร์ 154Java EE 5ต้องใช้ Java SE 5 และรองรับการใช้ Annotation
จาวา เซอร์ฟเล็ต 2.4พฤศจิกายน พ.ศ. 2546 [ 22 ]เจเอสอาร์ 154เจ2อีอี 1.4ไฟล์ web.xml ใช้ XML Schema
จาวา เซอร์ฟเล็ต 2.3สิงหาคม พ.ศ. 2544 [ 23 ]เจเอสอาร์ 53เจ2อีอี 1.3การเพิ่มเติมFilter
จาวา เซอร์ฟเล็ต 2.2สิงหาคม พ.ศ. 2542 [ 24 ]เจเอสอาร์ 902 , เจเอสอาร์ 903เจ2อีอี 1.2กลายเป็นส่วนหนึ่งของ J2EE และนำเสนอแอปพลิเคชันเว็บอิสระในไฟล์ .war
จาวา เซอร์ฟเล็ต 2.1พฤศจิกายน พ.ศ. 2541 [ 25 ]2.1กไม่ระบุข้อมูลจำเพาะอย่างเป็นทางการฉบับแรก เพิ่มเข้ามาRequestDispatcherแล้วServletContext
จาวา เซอร์ฟเล็ต 2.0ธันวาคม พ.ศ. 2540ไม่มีข้อมูลเจดีเค 1.1ส่วนหนึ่งของชุดพัฒนา Java Servlet 2.0 เดือนเมษายน พ.ศ. 2541 [ 26 ]
จาวา เซอร์ฟเล็ต 1.0ธันวาคม พ.ศ. 2539ไม่มีข้อมูลส่วนหนึ่งของ Java Servlet Development Kit (JSDK) 1.0 เดือนมิถุนายน พ.ศ. 2540 [ 14 ]

วงจรชีวิตของเซิร์ฟเล็ต

เมธอดหลักสามอย่างมีความสำคัญต่อวงจรชีวิตของเซิร์ฟเล็ต ได้แก่init(), service(), และdestroy()เมธอดเหล่านี้ถูกใช้งานโดยเซิร์ฟเล็ตทุกตัวและถูกเรียกใช้โดยเซิร์ฟเวอร์ในเวลาที่กำหนด

  • ในระหว่างขั้นตอนการเริ่มต้นของ วงจรชีวิตของเซิร์ฟเล็ตคอนเทนเนอร์เว็บจะเริ่มต้นอินสแตนซ์ของเซิร์ฟเล็ตโดยการเรียกinit()เมธอด[ 27 ] โดย ส่งออบเจ็กต์ที่ใช้งานอินเทอร์javax.servlet.ServletConfigเฟซ ออบเจ็กต์การกำหนดค่านี้อนุญาตให้เซิร์ฟเล็ตเข้าถึง พารามิเตอร์การเริ่มต้นแบบ ชื่อ-ค่าจากเว็บแอปพลิเคชัน
  • หลังจากเริ่มต้นการทำงานแล้ว อินสแตนซ์ของเซิร์ฟเล็ตสามารถให้บริการคำขอจากไคลเอ็นต์ได้คำขอ แต่ละรายการ จะได้รับการประมวลผลในเธรดแยกต่างหาก เว็บคอนเทนเนอร์จะเรียกservice()เมธอดของเซิร์ฟเล็ตสำหรับทุกคำขอservice()เมธอดจะตรวจสอบประเภทของคำขอที่ส่งมาและส่งต่อไปยังเมธอดที่เหมาะสมเพื่อจัดการคำขอนั้น ผู้พัฒนาเซิร์ฟเล็ตต้องจัดเตรียมการใช้งานสำหรับเมธอดเหล่านี้ หากมีการร้องขอเมธอดที่เซิร์ฟเล็ตไม่ได้ใช้งาน เมธอดของคลาสแม่จะถูกเรียก ซึ่งโดยทั่วไปจะส่งผลให้เกิดข้อผิดพลาดส่งกลับไปยังผู้ร้องขอ
  • สุดท้าย เว็บคอนเทนเนอร์จะเรียกdestroy()เมธอดที่นำเซิร์ฟเล็ตออกจากระบบ เมธอดนี้destroy()เช่นเดียวกับเมธอดอื่นinit()ๆ จะถูกเรียกเพียงครั้งเดียวในวงจรชีวิตของเซิร์ฟเล็ต

ต่อไปนี้เป็นสถานการณ์การใช้งานทั่วไปของวิธีการเหล่านี้

  1. สมมติว่าผู้ใช้ร้องขอที่จะเข้าชมURLหนึ่ง
    • จากนั้นเบราว์เซอร์จะสร้างคำขอ HTTP สำหรับ URL นี้
    • จากนั้นคำขอจะถูกส่งไปยังเซิร์ฟเวอร์ที่เหมาะสม
  2. เว็บเซิร์ฟเวอร์จะรับคำขอ HTTP และส่งต่อไปยังคอนเทนเนอร์เซิร์ฟเล็ต
    • คอนเทนเนอร์จะแมปคำขอ1นี้ไปยังเซิร์ฟเล็ตเฉพาะตัวหนึ่ง
    • เซิร์ฟเล็ตจะถูกเรียกใช้งานและโหลดเข้าสู่พื้นที่หน่วยความจำของคอนเทนเนอร์แบบไดนามิก
  3. คอนเทนเนอร์จะเรียกใช้init()เมธอดของเซิร์ฟเล็ต
    • เมธอดนี้จะถูกเรียกใช้เฉพาะเมื่อเซิร์ฟเล็ตถูกโหลดเข้าสู่หน่วยความจำครั้งแรกเท่านั้น
    • สามารถส่งพารามิเตอร์เริ่มต้นไปยังเซิร์ฟเล็ตเพื่อให้เซิร์ฟเล็ตสามารถตั้งค่าตัวเองได้
  4. คอนเทนเนอร์จะเรียกใช้service()เมธอดของเซิร์ฟเล็ต
    • เมธอดนี้ใช้สำหรับประมวลผลคำขอ HTTP
    • เซิร์ฟเล็ตอาจอ่านข้อมูลที่ได้รับมาในคำขอ HTTP
    • เซิร์ฟเล็ตอาจสร้างการตอบสนอง HTTP สำหรับไคลเอ็นต์ได้เช่นกัน
  5. เซิร์ฟเล็ตยังคงอยู่ในพื้นที่แอดเดรสของคอนเทนเนอร์และพร้อมที่จะประมวลผลคำขอ HTTP อื่นๆ ที่ได้รับจากไคลเอ็นต์
    • เมธอด นี้service()จะถูกเรียกใช้สำหรับทุกคำขอ HTTP
  6. ในบางจุด คอนเทนเนอร์อาจตัดสินใจลบเซิร์ฟเล็ตออกจากหน่วยความจำของมัน
    • อัลกอริทึมที่ใช้ในการตัดสินใจนี้จะแตกต่างกันไปตามแต่ละคอนเทนเนอร์
  7. คอนเทนเนอร์จะเรียกdestroy()เมธอดของเซิร์ฟเล็ตเพื่อปล่อยทรัพยากรใดๆ เช่น ตัวจัดการไฟล์ที่จัดสรรไว้สำหรับเซิร์ฟเล็ต ข้อมูลสำคัญอาจถูกบันทึกไว้ในที่เก็บข้อมูลถาวร
  8. จากนั้นหน่วยความจำที่จัดสรรให้กับเซิร์ฟเล็ตและอ็อบเจ็กต์ของเซิร์ฟเล็ตจะถูกเก็บกวาดโดยระบบจัดการหน่วยความจำ (garbage collection)

ตัวอย่าง

เซิร์ฟเล็ตตัวอย่างต่อไปนี้จะแสดงจำนวนครั้งที่service()เมธอดของมันถูกเรียกใช้งาน

โปรดทราบว่าHttpServletเป็นคลาสย่อยของ ซึ่งGenericServletเป็นการใช้งานอินเทServletอร์เฟซ

เมธอดservice()ของHttpServletคลาสจะส่งคำขอไปยังเมธอดต่างๆ เช่นdoGet(), doPost(), doPut(), doDelete(), และอื่นๆ ตามคำขอ HTTP ในตัวอย่างด้านล่างนี้ เมธอดservice()ถูกเขียนทับและไม่ได้แยกแยะว่ามันให้บริการเมธอดคำขอ HTTP ใด

แพ็คเกจorg.wikipedia.examples ;import java.io.IOException ;import jakarta.servlet.ServletConfig ; import jakarta.servlet.ServletException ; import jakarta.servlet.http.HttpServlet ; import jakarta.servlet.http.HttpServletRequest ; import jakarta.servlet.http.HttpServletResponse ;public class ServletLifeCycleExample extends HttpServlet { private Integer sharedCounter ;@Override public void init ( final ServletConfig config ) throws ServletException { super.init ( config ); getServletContext (). log ( " init () called" ) ; sharedCounter = 0 ; }@Override protected void service ( final HttpServletRequest request , final HttpServletResponse response ) throws ServletException , IOException { getServletContext (). log ( "service() called" ); int localCounter ; synchronized ( sharedCounter ) { sharedCounter ++ ; localCounter = sharedCounter ; } response . getWriter (). write ( "Incrementing the count to " + localCounter ); // เข้าถึงตัวแปรโลคอลresponse . getWriter (). flush (); // ล้างการตอบสนอง}@Override public void destroy () { getServletContext (). log ( "destroy() called" ); } }

เซิร์ฟเวอร์คอนเทนเนอร์

ข้อกำหนดสำหรับเทคโนโลยี Servlet ได้ถูกนำไปใช้ในผลิตภัณฑ์หลายอย่างแล้ว ดูรายการการนำไปใช้ได้ในหน้า เว็บคอนเทนเนอร์

นอกจาก นี้ ยังมีคอนเทนเนอร์เซิร์ฟเล็ตประเภทอื่นๆ อีก เช่น คอนเทนเนอร์สำหรับเซิร์ฟเล็ต SIP ตัวอย่างเช่นSailFin

ดูเพิ่มเติม

การอ้างอิง

  1. ^ a b Murach & Urban 2014 , หน้า 170–171, §2 ทักษะที่จำเป็นของเซิร์ฟเล็ตและ JSP - มุมมอง - สรุป
  2. ^ "Servlet (Java(TM) EE 7 Specification APIs)" . oracle.com . สืบค้นเมื่อ2018-07-25 .
  3. ^ Murach & Urban 2014 , หน้า 128–129, §2 ทักษะสำคัญเกี่ยวกับเซิร์ฟเล็ตและ JSP - วิธีการสร้างและแมปเซิร์ฟเล็ต
  4. ^ a b "พื้นฐานของ Servlet - บทที่ 1" . novocode.com . เก็บถาวรจากต้นฉบับเมื่อ 2017-12-18
  5. ^ Murach & Urban 2014 , หน้า 40–42, §1 เริ่มต้นให้ถูกต้อง - เซอร์ฟเล็ตสำหรับการประมวลผลฝั่งแบ็กเอนด์
  6. ^ Murach & Urban 2014 , หน้า 87, §2 ทักษะที่จำเป็นเกี่ยวกับเซิร์ฟเล็ตและ JSP
  7. ^ Murach & Urban 2014 , หน้า 74, §1 เริ่มต้นให้ถูกต้อง - ทักษะอื่นๆ สำหรับการทำงานกับเว็บแอปพลิเคชัน
  8. ^ a b c Murach & Urban 2014 , หน้า 46–47, §1 เริ่มต้นให้ถูกต้อง - JSP สำหรับหน้าสอง
  9. ^ฟรีดแมน, แมตต์ (26 มิถุนายน 1996). "รายงานการประชุม JavaOne" . JavaWorld . เก็บถาวรจากต้นฉบับเมื่อ 2018-07-26 . เรียกดูเมื่อ2018-07-25 .
  10. ^ Diwanji, Pavani; Connelly, Dave; Wagle, Prasad (29 พฤษภาคม 1996). "Java Server and Servlets" (PDF) . เซิร์ฟเวอร์และส่วนขยายเซิร์ฟเวอร์ . JavaOne 1996. เก็บถาวร(PDF)จากต้นฉบับเมื่อ 16 สิงหาคม 2000. เรียกดูเมื่อ1 กุมภาพันธ์ 2020 .
  11. ^ Chang, Phil Inje (1 กรกฎาคม 1997). "บทสัมภาษณ์: ทีม Java Web Server เผยข้อมูลสำคัญ" . JavaWorld . เก็บถาวรจากต้นฉบับเมื่อ 2018-07-26 . เรียกดูเมื่อ2018-07-25 .
  12. ^ Chang, Phil Inje (1 มิถุนายน 1997). "Java Web Server เปิดตัวแล้ว!" . JavaWorld . เก็บถาวรจากต้นฉบับเมื่อ 2018-07-26 . เรียกดูเมื่อ2018-07-25 .
  13. ^ "ประวัติ Servlet | community.oracle.com" . Weblogs.java.net. 10 ธันวาคม 2005. เก็บถาวรจากต้นฉบับเมื่อ 15 สิงหาคม 2020. เรียกดูเมื่อ14 มิถุนายน 2013 .
  14. ^ a b Hunter, Jason (มีนาคม 2000). "ไทม์ไลน์ของเซิร์ฟเล็ต" . นอกเหนือจากการเขียนโปรแกรมเซิร์ฟเล็ตด้วย Java . การประชุม O'Reilly เกี่ยวกับ Java. O'Reilly Media – ผ่าน SlidePlayer.com.
  15. ^ "Java Web Server" . Javasoft . Sun Microsystems . เก็บถาวรจากต้นฉบับเมื่อ 11 มกราคม 1998 . เรียกดูเมื่อ 1 กุมภาพันธ์ 2020 .
  16. ^ "Java Web Server" . Sun Microsystems . เก็บถาวรจากต้นฉบับเมื่อ 2002-02-06 . เรียกดูเมื่อ2020-02-01 .
  17. ^ "Pavni Diwanji" . สถาบันความปลอดภัยออนไลน์สำหรับครอบครัว . เก็บถาวรจากต้นฉบับเมื่อวันที่ 26 กรกฎาคม 2018 . เรียกดูเมื่อวันที่ 12 พฤศจิกายน 2016 .
  18. ^ สิทธิบัตรสหรัฐอเมริกาหมายเลข 5928323 , Gosling, James A.; Diwanji, Pavni และ Connelly, David W., "อุปกรณ์และวิธีการสร้างข้อมูลแบบไดนามิกด้วยวัตถุซอฟต์แวร์ฝั่งเซิร์ฟเวอร์", เผยแพร่เมื่อ 27 กรกฎาคม 1999, ออกให้เมื่อ 27 กรกฎาคม 1999, มอบสิทธิ์ให้แก่Sun Microsystems 
  19. ^ "มีอะไรใหม่ใน Servlet 3.1 ? - Java EE 7 กำลังก้าวไปข้างหน้า (Arun Gupta, ยังมีอีกหลายไมล์ที่ต้องพัฒนา...)" . oracle.com . สืบค้นเมื่อ22 พฤศจิกายน 2016 .
  20. ^ Liu, Xinyu (19 กุมภาพันธ์ 2552). "การสนับสนุนการประมวลผลแบบอะซิงโครนัสใน Servlet 3.0" . InfoWorld . สืบค้นเมื่อ27 ธันวาคม 2568 .
  21. ^ Hunter, Jason (2 มกราคม 2549). "คุณสมบัติใหม่ที่เพิ่มเข้ามาใน Servlet 2.5" . InfoWorld . สืบค้นเมื่อ27 ธันวาคม 2568 .
  22. ^ Hunter, Jason (28 มีนาคม 2546). "Servlet 2.4: มีอะไรใหม่บ้าง" . InfoWorld . สืบค้นเมื่อ27 ธันวาคม 2568 .
  23. ^ Hunter, Jason (26 มกราคม 2544). "Servlet 2.3: เผยคุณสมบัติใหม่" . InfoWorld . สืบค้นเมื่อ27 ธันวาคม 2568 .
  24. ^ Hunter, Jason (15 ตุลาคม 1999). "มีอะไรใหม่ใน Java Servlet API 2.2?" . InfoWorld . สืบค้นเมื่อ 27 ธันวาคม 2025 .
  25. ^ Hunter, Jason (1 ธันวาคม 1998). "แนะนำ Servlet API 2.1 ใหม่" . InfoWorld . สืบค้นเมื่อ27 ธันวาคม 2025 .
  26. ^ Crawford, William; Hunter, Jason (พฤศจิกายน 1998). "คำนำ". การเขียนโปรแกรม Java Servlet (ฉบับพิมพ์ครั้งที่ 1). O'Reilly Media . หน้า ix–x. ISBN 978-1-56592-391-1เราจะกล่าวถึง Servlet API เวอร์ชัน 2.0 ซึ่งเปิดตัวเป็นส่วนหนึ่งของ Java Web Server 1.1 ในเดือนธันวาคม 1997 และได้รับการอธิบายเพิ่มเติมโดยการเปิดตัว Java Servlet Development Kit 2.0 ในเดือนเมษายน 1998
  27. ^ Murach & Urban 2014 , หน้า 160–163, §15 วิธีการพัฒนาเซิร์ฟเล็ต - ทักษะเพิ่มเติมสำหรับการทำงานกับเซิร์ฟเล็ต

บทช่วยสอน

  • วิธีเริ่มต้นใช้งาน Servlet ใน Jakarta EE 10 | Jakarta EE | มูลนิธิ Eclipse
  • อธิบาย Jakarta Servlet, Jakarta Faces และ Jakarta Server Pages | จาการ์ตา EE | มูลนิธิคราส
  • Jakarta Servlet :: Jakarta EE Tutorial :: เอกสาร Jakarta EE
  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
  • Servlets.com ถูกเก็บถาวรเมื่อวันที่ 25 กรกฎาคม 2018 ที่Wayback Machine
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Jakarta_Servlet&oldid=1335543657 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ จาการ์ตาเซอร์ฟเล็ต

Jakarta Servlet หรือที่รู้จักกันในชื่อเดิมว่า Java Servlet เป็น ส่วนประกอบซอฟต์แวร์ ของ Java ที่ขยายขีดความสามารถของ เซิร์ฟเวอร์ แม้ว่า Servlet จะสามารถตอบสนองต่อคำขอได้หลายประเภท...

การแนะนำ

Jakarta Servlet คือ คลาส Java [ 1 ] ใน Jakarta EE ที่สอดคล้องกับ Jakarta Servlet API [ 2 ] ซึ่ง เป็นมาตรฐานสำหรับการใช้งานคลาส Java ที่ตอบสนองต่อคำขอ โดยหลักการแล้ว Servlet สามารถสื่อสารผ่าน โปรโตคอล ไคลเอ็นต์-เซิร์ฟเวอร์ ใดก็ได้ แต่ส่วนใหญ่จะใช้กับ HTTP...

ประวัติศาสตร์

Java Servlet API ได้รับการประกาศต่อสาธารณะครั้งแรกในงาน ประชุม JavaOne ครั้งแรก ในเดือนพฤษภาคม พ.ศ.

วงจรชีวิตของเซิร์ฟเล็ต

เมธอดหลักสามอย่างมีความสำคัญต่อวงจรชีวิตของเซิร์ฟเล็ต ได้แก่ init() , service() , และ destroy() เมธอดเหล่านี้ถูกใช้งานโดยเซิร์ฟเล็ตทุกตัวและถูกเรียกใช้โดยเซิร์ฟเวอร์ในเวลาที่กำหนด