ในปัจจุบัน เราต่างทราบถึงความจำเป็นในการสร้าง dynamic web page เช่น เว็บที่สามารถเปลี่ยนคอนเทนต์ได้ตามเวลา หรือสร้างคอนเทนต์จากความต้องการของลูกค้า หากคุณชอบการเขียนโปรแกรมใน Java แล้วคุณจะรู้สึกดีใจที่ได้ยินว่ามีวิธีที่ Java สามารถสร้าง dynamic web page วิธีนั้นก็คือ Java Servlet แต่ก่อนที่เราจะไปหัวข้อต่อไป เรามาทำความเข้าใจความจำเป็นสำหรับส่วนขยาย server-side กันก่อน

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

คุณสมบัติของ Servlet

  • Servlet ทำงานบน server-side
  • Servlet สามารถจัดการกับคำขอที่ซับซ้อนจากเว็บเซิร์ฟเวอร์ได้

การดำเนินการของ Servlet

การดำเนินการของ Servlet เกี่ยวข้องกับ  6 ขั้นตอนพื้นฐานดังต่อไปนี้

1. ลูกค้าส่งคำขอจากเว็บเซิร์ฟเวอร์

2. เว็บเซิร์ฟเวอร์ได้รับคำขอ

3. เว็บเซิร์ฟเวอร์ส่งคำขอไปที่ servlet ที่ตรงกัน

4. Servlet ประมวลคำขอนั้นและสร้างการตอบสนองในรูปแบบผลลัพธ์

5. Servlet ส่งคำตอบสนองกลับไปที่เว็บเซิร์ฟเวอร์

6. เว็บเซิร์ฟเวอร์ส่งคำตอบสนองกลับไปที่ลูกค้าและเบราซ์เซอร์ของลูกค้า แสดงผลบนหน้าจอ

Servlet Architecture

จากไดอาแกรมดังกล่าว แสดงให้เห็นถึง Servlet Architecture

ความจำเป็นของส่วนขยาย server-side

ส่วนขยาย server-side เป็นเทคโนโลยีทีใช้ในการสร้าง dynamic web page โดยเฉพาะ อันที่จริงแล้วเป็นการอำนวยความสะดวกให้แก่ dynamic web page เว็บเพจจำเป็นต้องมีคอนเทนเนอร์หรือเว็บเซิร์ฟเวอร์ เพื่อตอบสนองความต้องการนี้ผู้ให้บริการเว็บเซิร์ฟเวอร์อิสระเสนอโซลูชันที่เป็นกรรมสิทธิ์ในรูปแบบของ API (Application Programming Interface)

API ช่วยให้เราสามารถสร้างโปรแกรมที่สามารถทำงานกับเว็บเซิร์ฟเวอร์ ในกรณีนี้ Java Servlet เป็นหนึ่งใน APIs ของ Java Platform Enterprise Edition ซึ่งกำหนดมาตรฐานสำหรับการสร้างเว็บแอปพลิเคชันแบบไดนามิกใน Java

ก่อนที่จะเรียนรู้เกี่ยวกับบางสิ่ง เป็นสิ่งที่สำคัญที่จะต้องรู้ถึงความต้องการของสิ่งนั้นมันไม่ใช่ว่านี่เป็นเทคโนโลยีเดียวที่พร้อมใช้งานสำหรับการสร้าง dynamic web page Servlet คล้ายกับส่วนขยายของเว็บเซิร์ฟเวอร์อื่น ๆ เช่นสคริปต์ Common Gateway Interface (CGI) และ Hypertext Preprocessor (PHP) อย่างไรก็ตาม Java Servlets เป็นที่ยอมรับมากขึ้นเนื่องจากแก้ปัญหาข้อจำกัดของ CGI เช่นประสิทธิภาพต่ำและความยืดหยุ่นในระดับต่ำ

CGI คืออะไร

CGI เป็นแอปพลิเคชันภายนอกที่เขียนขึ้นโดยใช้ภาษาการเขียนโปรแกรมเช่น C หรือ C ++ และรับผิดชอบการประมวลผลคำขอของลูกค้าและสร้างเนื้อหาแบบไดนามิก

ในแอปพลิเคชัน CGI เมื่อลูกค้าทำการส่งคำร้องเพื่อเข้าถึง dynamic web page เว็บเซิร์ฟเวอร์จะดำเนินการดังต่อไปนี้:

  • อันดับแรกจะระบุตำแหน่งหน้าเว็บที่ร้องขอคือแอปพลิเคชัน CGI ที่ต้องการโดยใช้ URL
  • จากนั้นสร้างกระบวนการใหม่เพื่อให้บริการตามคำขอของลูกค้า
  • เรียกใช้แอปพลิเคชัน CGI ภายในกระบวนการและส่งข้อมูลการร้องขอไปยังเซิร์ฟเวอร์
  • รวบรวมการตอบสนองจากแอปพลิเคชัน CGI
  • ทำลายกระบวนการ เตรียมการตอบกลับ HTTP และส่งไปยังลูกค้า

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

ความแตกต่างระหว่าง Servlet และ CGI

Servlet CGI (Common Gateway Interface)
Servlet เป็นแบบพกพาและมีประสิทธิภาพไม่เป็นแบบพกพา
ใน Servlet สามารถแชร์ข้อมูลได้ ใน CGI ไม่สามารถแชร์ข้อมูลได้
Servlet สามารถสื่อสารได้โดยตรงกับเว็บเซิร์ฟเวอร์ CGI ไม่สามารถสื่อสารได้โดยตรงกับเว็บเซิร์ฟเวอร์
Servlet มีราคาถูกว่า CGI CGI มีราคาแพงกว่า Servlet
Servlet สามารถจัดการกับ cookie ได้ CGI ไม่สามารถจัดการกับ cookie ได้

Servlet API’s:

Servlet สร้างมาจากสองแพ็จเกจคือ

  • javax.servlet(พื้นฐาน)
  • javax.servlet.http(ขั้นสูง)

Class และ Interface ต่างๆที่แสดงอยู่ในแพ็จเกจเหล่านี้:

COMPONENTTYPEPACKAGE
ServletInterfacejavax.servlet.*
ServletRequestInterfacejavax.servlet.*
ServletResponseInterfacejavax.servlet.*
GenericServletClassjavax.servlet.*
HttpServletClassjavax.servlet.http.*
HttpServletRequestInterfacejavax.servlet.http.*
HttpServletResponseInterfacejavax.servlet.http.*
FilterInterfacejavax.servlet.*
ServletConfigInterfacejavax.servlet.*

ข้อได้เปรียบของ Java Servlet

  • Servlet เร็วกว่า CGI เนื่องจากไม่เกี่ยวข้องกับการสร้างกระบวนการใหม่สำหรับทุกคำขอใหม่ที่ได้รับ
  • Servlets ที่เขียนใน Java เป็นแพลตฟอร์มอิสระ
  • ตัดค่าใช้จ่ายในการสร้างกระบวนการใหม่สำหรับแต่ละคำขอ เนื่องจาก Servlet ไม่ได้ทำงานในกระบวนการที่แยกจากกัน มีเพียงอินสแตนซ์เดียวเท่านั้นที่จัดการคำขอทั้งหมดพร้อมกัน สิ่งนี้จะบันทึกหน่วยความจำและอนุญาตให้ Servlet จัดการสถานะลูกค้าได้อย่างง่ายดาย
  • เป็นองค์ประกอบของ server-side ดังนั้น Servlet จึงมีความปลอดภัยที่ได้รับจากเว็บเซิร์ฟเวอร์
  • API ที่ออกแบบมาสำหรับ Java Servlet จะได้รับข้อดีของแพลตฟอร์ม Java โดยอัตโนมัติ เช่นแพลตฟอร์มที่เป็นอิสระและพกพาได้ นอกจากนี้ยังสามารถใช้ API ที่สร้างบนแพลตฟอร์ม Java เช่น JDBC เพื่อเข้าถึงฐานข้อมูลได้

Servlet Container

Servlet container หรือที่เรียกว่า Servlet engine เป็นชุดรวมของออบเจ็กต์ที่ให้สภาพแวดล้อมแบบรันไทม์สำหรับองค์ประกอบ Java Servlet

กล่าวง่ายๆก็คือระบบที่จัดการส่วนประกอบ Java Servlet ที่ด้านบนของเว็บเซิร์ฟเวอร์เพื่อจัดการการร้องขอเว็บของลูกค้า

บริการที่จัดทำโดย Servlet container:

บริการเครือข่าย: โหลด Servlet class การโหลดอาจมาจากระบบไฟล์ local ระบบไฟล์ระยะไกลหรือบริการเครือข่ายอื่น ๆ Servlet container ให้บริการเครือข่ายที่ส่งคำขอและตอบกลับ

ถอดรหัสและเข้ารหัสข้อความที่ใช้ MIME: ให้บริการถอดรหัสและเข้ารหัสข้อความที่ใช้ MIME

จัดการ Servlet container: จัดการ Life cycle ของ Servlet

การจัดการทรัพยากร: จัดการทรัพยากรคงที่และแบบไดนามิก เช่น ไฟล์ HTML, Servlets และเพจ JSP

บริการรักษาความปลอดภัย: จัดการสิทธิ์และการรับรองความถูกต้องของการเข้าถึงทรัพยากร

การจัดการเซสชั่น: รักษาเซสชั่นโดยการผนวก ID เซสชั่นกับเส้นทาง URL

บทความแปลจากเว็บไซต์: geeksforgeeks

ตอนนี้เรามีแคมป์สอน Java หลักสูตรเข้มข้นราคาไม่แพง ลองกดดูรายละเอียดจากลิงค์ด้านล่างได้เลยครับ
https://bit.ly/2G3eIDc