เซิร์ฟเล็ต เซิร์ฟเล็ต. เรากำลังเขียนเซิร์ฟเล็ตเพื่อตรวจสอบผู้ใช้โซเชียลเน็ตเวิร์กที่คุณป้อน

Java Servlet เป็นโปรแกรมฝั่งเซิร์ฟเวอร์ที่เขียนด้วยภาษาโปรแกรมชื่อเดียวกัน ซึ่งรับสัญญาณจากไคลเอนต์และส่งการตอบสนองกลับไป เป็นองค์ประกอบสำคัญที่สร้าง Java EE ทั่วไป นอกเหนือจาก JSP, EJB, XML และเทคโนโลยีอื่นๆ ที่เกี่ยวข้อง แอปพลิเคชันสามารถรวมเป็นไฟล์ WAR (Web AR chive) เพื่อปรับใช้บนเว็บเซิร์ฟเวอร์ เซิร์ฟเวอร์ที่สามารถรันเซิร์ฟเล็ต Java ได้เรียกว่าคอนเทนเนอร์ โปรแกรมที่ทำงานบนเซิร์ฟเวอร์ดังกล่าวสามารถสร้างเว็บเพจแบบไดนามิกได้

Java Servlet: พื้นฐาน

คอนเทนเนอร์ที่ได้รับความนิยมและใช้กันอย่างแพร่หลายที่สุดคือ Tomcat และ JBoss ในทางเทคนิคแล้ว เซิร์ฟเล็ตเป็นคลาส Java ปกติที่มีส่วนขยายสำหรับ Common Client-Server Protocol หรือ HTTP ในทางปฏิบัติ มันถูกใช้เพื่อประมวลผลคำขอผ่านการแทนที่ HttpServlet GET และ POST ตามลำดับ คอนเทนเนอร์ Java Servlet จัดเตรียม Http.ServletRequest และ Http.ServletResponse ซึ่งเป็นอ็อบเจ็กต์ที่ตอบสนองต่อคำขอ และมักจะใช้ร่วมกับ JSP เพื่อสร้างเนื้อหาแบบไดนามิก

สถานการณ์จำลองทั่วไป:

  • JSP นำเสนอแบบฟอร์มสำหรับผู้ใช้ในการป้อนข้อมูล
  • เซิร์ฟเล็ตรับอินพุต ประมวลผล และส่งการตอบกลับ
  • สำหรับงานคุณภาพสูงจะใช้ฟิลเตอร์พิเศษ
  • Java Servlet Filters เป็นส่วนประกอบปลั๊กอิน Java ที่ใช้ในการสกัดกั้นและประมวลผลคำขอก่อนที่จะถูกส่งไปยังเซิร์ฟเล็ตและตอบสนองหลังจากโค้ดเสร็จสมบูรณ์ และก่อนที่คอนเทนเนอร์จะส่งการตอบกลับไปยังไคลเอนต์

    งานทั่วไปที่ดำเนินการกับตัวกรอง:

  • การลงทะเบียนพารามิเตอร์คำขอสำหรับการลงทะเบียนไฟล์
  • การรับรองความถูกต้องและการอนุญาตคำขอทรัพยากร
  • การจัดรูปแบบเนื้อหาคำขอหรือส่วนหัวก่อนที่จะส่งไปยังเซิร์ฟเล็ต
  • บีบอัดข้อมูลตอบกลับที่ส่งไปยังไคลเอนต์
  • เปลี่ยนคำตอบเพิ่มคุกกี้บางส่วน
  • ข้อมูลส่วนหัว Java Servlet
  • มีการเชื่อมต่อตัวกรองและกำหนดค่าในไฟล์ตัวอธิบายการปรับใช้ (web.xml) เซิร์ฟเล็ตและตัวกรองไม่รู้จักกัน ดังนั้นคุณจึงสามารถเพิ่มหรือลบตัวกรองได้ง่ายๆ โดยแก้ไข web.xml เป็นไปได้ที่จะมีหลายตัวกรองสำหรับทรัพยากรเดียว หรือสร้างกลุ่มตัวกรองสำหรับ web.xml หรือรันตัวกรอง Java Servlet โดยใช้อินเทอร์เฟซ javax.servlet.Filter

    คำขอแบบขนานไปยังเซิร์ฟเวอร์ได้รับการประมวลผลโดยเธรด ซึ่งมีคุณสมบัติที่สำคัญของเว็บ - มัลติเธรดและการทำงานแบบขนาน

    ฟังก์ชั่นหลัก:

  • การพกพา เนื่องจาก Java เป็นแพลตฟอร์มที่ไม่ขึ้นกับใคร เซิร์ฟเล็ตก็เช่นเดียวกัน เช่น คุณสามารถสร้างมันขึ้นมาในห้องผ่าตัดได้ ระบบวินโดวส์เพื่อให้นักพัฒนา GlassFish ใช้เป็นเว็บเซิร์ฟเวอร์และสามารถรันบนระบบปฏิบัติการอื่น ๆ เช่น Unix, Linux พร้อมเว็บเซิร์ฟเวอร์ apache Java Servlet คุณสมบัตินี้ทำให้พกพาได้ และนี่คือข้อได้เปรียบหลักเหนือ CGI
  • ประสิทธิภาพและความสามารถในการขยายขนาด เมื่อ Servlet ถูกปรับใช้และโหลดลงบนเว็บเซิร์ฟเวอร์ ก็สามารถเริ่มดำเนินการตามคำขอของลูกค้าได้ทันที มันถูกเรียกโดยเธรดที่มีน้ำหนักเบาเพื่อให้สามารถกรอกคำขอไคลเอนต์หลายรายการพร้อมกันได้โดยใช้คุณสมบัติมัลติเธรดของ Java ต่างจาก CGI ที่เซิร์ฟเวอร์เริ่มต้น กระบวนการใหม่สำหรับทุกคำขอของลูกค้า
  • ความน่าเชื่อถือ ด้วยการสืบทอดคุณสมบัติเด่นของ Java เช่น การรวบรวมขยะ การจัดการข้อยกเว้น ตัวจัดการความปลอดภัย Java และอื่นๆ จะช่วยลดความเสี่ยงต่อปัญหาการจัดการและการรั่วไหลของหน่วยความจำ ทำให้การพัฒนาแอปพลิเคชันในนั้นปลอดภัยและปราศจากข้อผิดพลาด
  • ความจำเป็นในการใช้หน้าเว็บแบบไดนามิก

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

    ผู้ใช้จำนวนมากมีประสบการณ์ในการใช้เทคโนโลยี Java เพื่อสร้างบริการเว็บที่ใช้ CGI แต่ Java Servlets นั้นมีประสิทธิภาพมากกว่า ทรงพลังกว่า ใช้งานง่ายกว่า และราคาถูกกว่าทางเลือก CGI แบบดั้งเดิม

    ข้อดีของ Java Servlets:

  • ประสิทธิภาพ. ใน CGI แบบดั้งเดิม แต่ละคำขอ HTTP จะเริ่มต้นกระบวนการ CGI ใหม่ แม้ว่าโค้ดจะถูกนำไปใช้อย่างสมบูรณ์แบบ แต่มักจะมีค่าใช้จ่ายจำนวนมากไม่เพียงแต่เมื่อกระบวนการเริ่มต้นเท่านั้น แต่ยังรวมถึงระหว่างการดำเนินการด้วย เมื่อใช้เซิร์ฟเล็ต JVM จะยังคงโหลดอยู่ในหน่วยความจำ และแต่ละคำขอจะถูกประมวลผลโดยเธรด Java ตามตัวอย่างของ Java Servlet หากในโมเดล CGI ดั้งเดิมมีจำนวนคำขอพร้อมกัน X นั่นหมายความว่าโค้ดสำหรับโปรแกรมถูกโหลดลงในหน่วยความจำ X จำนวนครั้ง สิ่งนี้กลายเป็นภาระมากเกินไปบนเว็บเซิร์ฟเวอร์ อย่างไรก็ตาม ในสภาพแวดล้อมเซิร์ฟเล็ต มีเธรด X ที่รันคลาสเพียงสำเนาเดียวเท่านั้น ส่งผลให้มีประสิทธิภาพและความสามารถในการปรับขนาดเพิ่มขึ้นในหลายแพลตฟอร์ม
  • ความสะดวก. เมื่อใช้โปรแกรม ไม่มีประโยชน์ที่จะเรียนรู้ภาษาใหม่ เช่น Perl เพียงเพื่อใช้งานฟังก์ชั่น CGI นอกจากนี้ เซิร์ฟเล็ตยังมีโครงสร้างพื้นฐานที่สมบูรณ์สำหรับงานที่เกี่ยวข้องกับ HTML มากมาย ซึ่งช่วยเร่งกระบวนการพัฒนาได้อย่างมาก
  • พลัง - น่าเสียดายที่สคริปต์ CGI แบบดั้งเดิมยังเป็นที่ต้องการอยู่มาก ตัวอย่างเช่น โปรแกรมทั่วไปไม่สามารถสื่อสารกับเว็บเซิร์ฟเวอร์ได้โดยตรง ซึ่งหมายความว่าจะต้องสร้างอินเทอร์เฟซทั้งหมดขึ้นมา เซิร์ฟเล็ตสามารถสื่อสารโดยตรงกับเว็บเซิร์ฟเวอร์ ช่วยลดความซับซ้อนในการดำเนินการที่ต้องมีการเข้าถึงที่เก็บข้อมูลโดยตรง นอกจากนี้ยังมีเอกลักษณ์เฉพาะตัวเนื่องจากสามารถสื่อสารกับเซิร์ฟเล็ตอื่นๆ และรักษาข้อมูลระหว่างคำขอต่างๆ ทำให้การติดตามเซสชันเป็นเรื่องง่ายมาก
  • ความสะดวกในการพกพาของ Java ขยายไปยังเซิร์ฟเล็ตโดยตรง ในความเป็นจริง เว็บเซิร์ฟเวอร์หลักเกือบทุกแห่งที่ใช้อยู่ในปัจจุบันรองรับ Java Servlets ทั้งโดยตรงหรือผ่านปลั๊กอิน
  • เศรษฐกิจ. จากมุมมองของการพัฒนา การใช้เซิร์ฟเล็ตมีราคาถูกกว่าตัวเลือกอื่นๆ ที่ต้องใช้การเขียนโค้ดแบบกำหนดเองเพื่อโต้ตอบกับเว็บเซิร์ฟเวอร์อย่างถูกต้อง การเปลี่ยนเส้นทาง Java Servlet พร้อมใช้งานและสามารถลดต้นทุนทางธุรกิจได้โดยไม่ต้องเสียสละประโยชน์ของเนื้อหาแบบไดนามิก
  • เซิร์ฟเล็ตเป็นโปรแกรมจาวาที่ทำงานบนฝั่งเซิร์ฟเวอร์ของเว็บแอปพลิเคชัน เช่นเดียวกับแอปเพล็ตที่ขยายแบบไดนามิก ฟังก์ชั่นเซิร์ฟเล็ตของเว็บเบราว์เซอร์ขยายการทำงานของเว็บเซิร์ฟเวอร์แบบไดนามิก

    งาน เซิร์ฟเล็ต"และสามารถอธิบายได้ดังต่อไปนี้: เมื่อคำขอมาถึงจากไคลเอนต์ เว็บเซิร์ฟเวอร์โดยใช้ไฟล์การกำหนดค่าพิเศษ สามารถกำหนดได้ว่าเซิร์ฟเล็ตใดที่จำเป็นต้องดำเนินการ หลังจากนี้ เว็บเซิร์ฟเวอร์จะเปิดตัว JVM ซึ่งจะดำเนินการ servlet Servlet ประมวลผลคำขอและถ่ายโอนเนื้อหาไปยังเว็บ - ไปยังเซิร์ฟเวอร์ (อาจอยู่ในรูปแบบของหน้า HTML) เว็บเซิร์ฟเวอร์ส่งการตอบกลับไปยังไคลเอนต์ (หน้า HTML ที่สร้างโดยเซิร์ฟเล็ต)

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

    Servlet ในสถาปัตยกรรมแอปพลิเคชันเว็บ

    ด้วยพลังและความยืดหยุ่นของมัน เซิร์ฟเล็ต"สามารถมีบทบาทสำคัญในสถาปัตยกรรมระบบ พวกเขาสามารถทำงานแอปพลิเคชันสำหรับมิดเดิลแวร์ ทำหน้าที่เป็นพร็อกซีสำหรับไคลเอนต์ และแม้แต่ปรับปรุงการทำงานของมิดเดิลแวร์โดยเพิ่มการรองรับโปรโตคอลใหม่และคุณสมบัติอื่น ๆ มิดเดิลแวร์ ทำหน้าที่เป็นเซิร์ฟเวอร์แอปพลิเคชันในระบบที่เรียกว่าระบบไคลเอ็นต์-เซิร์ฟเวอร์สามระดับ และตั้งอยู่ระหว่างไคลเอ็นต์แบบไลท์เวท เช่น เว็บเบราว์เซอร์ และแหล่งข้อมูล

    Servlet เป็นพร็อกซีเซิร์ฟเวอร์

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

    ชั่วคราวและถาวร เซิร์ฟเล็ต"ส

    Servlets สามารถเริ่มต้นและหยุดได้สำหรับคำขอของลูกค้าแต่ละราย นอกจากนี้ยังสามารถเปิดใช้งานได้เมื่อเว็บเซิร์ฟเวอร์เริ่มทำงานและมีอยู่จนกว่าจะหยุดทำงาน ชั่วคราว เซิร์ฟเล็ต"ถูกโหลดตามความต้องการและเสนอวิธีที่ดีในการประหยัดทรัพยากรเซิร์ฟเวอร์สำหรับฟังก์ชันที่ไม่ค่อยได้ใช้ เซิร์ฟเล็ตแบบถาวรจะถูกโหลดเมื่อเว็บเซิร์ฟเวอร์เริ่มทำงานและคงอยู่จนกว่าจะหยุดทำงาน เซิร์ฟเล็ตจะถูกติดตั้งเป็นส่วนขยายถาวรไปยังเซิร์ฟเวอร์หากค่าใช้จ่ายในการรัน ซึ่งมีค่าสูงมาก (เช่น การสร้างการเชื่อมต่อฐานข้อมูล) หากมีฟังก์ชันการทำงานฝั่งเซิร์ฟเวอร์อย่างต่อเนื่อง (เช่น บริการ RMI) หรือในกรณีที่จำเป็นต้องตอบสนองต่อคำขอของลูกค้าโดยเร็วที่สุด ไม่มีรหัสเฉพาะเจาะจง กำหนด. เซิร์ฟเล็ต"และถาวรหรือชั่วคราว นี่เป็นหน้าที่ในการตั้งค่าเว็บเซิร์ฟเวอร์

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

    Servlets ทำงานบนแพลตฟอร์มเว็บเซิร์ฟเวอร์โดยเป็นส่วนหนึ่งของกระบวนการเดียวกันกับเว็บเซิร์ฟเวอร์ เว็บเซิร์ฟเวอร์มีหน้าที่รับผิดชอบในการเริ่มต้น เรียกใช้ และทำลายแต่ละอินสแตนซ์เซิร์ฟเล็ต เว็บเซิร์ฟเวอร์โต้ตอบกับเซิร์ฟเล็ตผ่านอินเทอร์เฟซที่เรียบง่าย: javax.servlet.Servlet.

    อินเทอร์เฟซ javax.servlet.Servlet มีสามวิธีหลัก:

    • เริ่มต้น()
    • บริการ()
    • ทำลาย()

    และตัวช่วยสองวิธี:

    • getServletConfig()
    • getServletInfo()

    ความคล้ายคลึงกันระหว่างอินเทอร์เฟซ เซิร์ฟเล็ต"และ Java applet นั้นชัดเจน นั่นเป็นวิธีการออกแบบอย่างแน่นอน! Java servlets นั้นสำหรับเว็บเซิร์ฟเวอร์ว่าแอพเพล็ตคืออะไรสำหรับเว็บเบราว์เซอร์ แอพเพล็ตทำงานในเว็บเบราว์เซอร์โดยดำเนินการตามคำขอผ่านอินเทอร์เฟซพิเศษ servlet ทำ สิ่งเดียวกันเมื่อทำงานบนเว็บเซิร์ฟเวอร์

    การเริ่มต้นเซิร์ฟเล็ต, init() วิธีการ

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

    รับรองได้เลยว่าวิธีการ เริ่มต้น()จะสิ้นสุดก่อนการเรียกเซิร์ฟเล็ตอื่น ๆ - เช่นการเรียกเมธอด บริการ()- โปรดทราบว่า เริ่มต้น()จะถูกเรียกเพียงครั้งเดียว มันจะไม่ถูกเรียกจนกว่าเซิร์ฟเล็ตจะยกเลิกการโหลดแล้วโหลดโดยเซิร์ฟเวอร์อีกครั้ง

    วิธี เริ่มต้น()รับหนึ่งอาร์กิวเมนต์ - การอ้างอิงถึงวัตถุ ServletConfigซึ่งมีอาร์กิวเมนต์เพื่อเริ่มต้นเซิร์ฟเล็ต วัตถุนี้มีวิธีการ getServletContext ()ส่งคืนวัตถุ ServletContextซึ่งมีข้อมูลเกี่ยวกับสภาพแวดล้อมของเซิร์ฟเล็ต

    Servlet core วิธีการบริการ ()

    วิธี บริการ()คือหัวใจของเซิร์ฟเล็ต แต่ละคำขอจากไคลเอนต์ส่งผลให้มีการเรียกเมธอดเดียว บริการ()- วิธีการนี้อ่านคำขอและสร้างข้อความตอบกลับโดยใช้สองอาร์กิวเมนต์ ServletRequest และ ServletResponse:

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

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

    ยกเลิกการโหลดเซิร์ฟเล็ต, ทำลาย () วิธีการ

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

    สิ่งสำคัญคือต้องทำให้วิธีการเป็นทางการ ทำลาย()ในลักษณะที่จะหลีกเลี่ยงการปิดทรัพยากรที่จำเป็นจนกว่าจะมีการโทรทั้งหมด บริการ()จะไม่เสร็จสิ้น

    การกำหนดค่าเซิร์ฟเล็ต, เมธอด getServletConfig()

    วิธี getServletConfig()ส่งคืนการอ้างอิงไปยังวัตถุที่ใช้อินเทอร์เฟซ ServletConfig- ออบเจ็กต์นี้ให้การเข้าถึงข้อมูลเกี่ยวกับการกำหนดค่าเซิร์ฟเล็ต เช่น เข้าถึงพารามิเตอร์การเริ่มต้นเซิร์ฟเล็ตและวัตถุบริบทเซิร์ฟเล็ต ServletContextซึ่งให้การเข้าถึงเซิร์ฟเล็ตและสภาพแวดล้อม

    ข้อมูลเซิร์ฟเล็ต, เมธอด getServletInfo()

    วิธี getServletInfo()กำหนดโดยโปรแกรมเมอร์ที่สร้างเซิร์ฟเล็ตเพื่อส่งคืนสตริงที่มีข้อมูลเกี่ยวกับเซิร์ฟเล็ต เช่น ผู้สร้างและเวอร์ชันของเซิร์ฟเล็ต

    อินเทอร์เฟซ ServletRequest

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

    ต่อไป ตัวอย่างเซิร์ฟเล็ตแสดงวิธีรับข้อมูลจากพารามิเตอร์ ขอวิธี บริการ():

    เครื่องอ่าน BufferedReader; สตริงพารามิเตอร์1; สตริง param2; บริการโมฆะสาธารณะ (คำขอ ServletRequest, การตอบสนอง ServletResponse) ( reader = request.getReader(); param1 = request.getParameter("First"); param2 = request.getParameter("Second"); )

    ข้อมูลเพิ่มเติมเกี่ยวกับการร้องขอมีอยู่ในเซิร์ฟเล็ตผ่านวิธีการ ซึ่งหลักๆ จะแสดงอยู่ในตารางต่อไปนี้:

    รับแอตทริบิวต์() ส่งกลับค่าของแอตทริบิวต์ที่ระบุของคำขอนี้
    getContentLength () ขนาดคำขอหากทราบ
    getContentType() ส่งกลับประเภท MIME ของเนื้อหาคำขอ
    getInputStream () ส่งคืน InputStream สำหรับการอ่านข้อมูลไบนารีจากเนื้อหาคำขอ
    รับชื่อพารามิเตอร์() ส่งกลับอาร์เรย์ของสตริงที่มีชื่อของพารามิเตอร์ทั้งหมด
    รับค่าพารามิเตอร์ () ส่งกลับอาร์เรย์ของค่าสำหรับพารามิเตอร์ที่ระบุ
    รับโปรโตคอล() ส่งกลับโปรโตคอลและเวอร์ชันสำหรับการร้องขอเป็นสตริงของแบบฟอร์ม /..
    รับReader() ส่งกลับ BufferedReader เพื่อดึงข้อความจากเนื้อหาคำขอ
    รับ RealPath() ส่งคืนเส้นทางจริงสำหรับเส้นทางเสมือนที่ระบุ
    getRemoteAddr() ที่อยู่ IP ของไคลเอ็นต์ที่ส่งคำขอนี้
    getRemoteHost() ชื่อโฮสต์ เครื่องไคลเอนต์ที่ส่งคำขอนี้
    รับโครงการ() ส่งคืนรูปแบบที่ใช้ใน URL ของคำขอนี้ (เช่น https, http, ftp เป็นต้น)
    รับชื่อเซิร์ฟเวอร์() ชื่อโฮสต์ของเซิร์ฟเวอร์ที่ยอมรับคำขอนี้
    getServerPort() ส่งกลับหมายเลขพอร์ตที่ใช้ในการรับคำขอนี้

    อินเทอร์เฟซ ServletResponse

    อินเทอร์เฟซ ServletResponseเป็นเครื่องมือในการส่งข้อมูลไปยังไคลเอนต์ วิธีการทั้งหมดของเครื่องมือนี้ใช้เพื่อแก้ไขปัญหานี้โดยเฉพาะ:

    สาธารณะ java.lang.String getCharacterEncoding() โมฆะสาธารณะ setLocale(java.util.Locale loc) สาธารณะ java.util.Locale getLocale()

    วิธีแรกส่งคืนประเภทการเข้ารหัส MIME (เช่น UTF8) ซึ่งข้อมูลที่จะแสดง สองวิธีที่สองยังใช้ได้กับชุดอักขระด้วย ระบุภาษาที่ใช้ในเอกสาร (เช่น รัสเซีย)

    สาธารณะ ServletOutputStream getOutputStream() พ่น java.io.IOException

    เมธอด getOutputStream ส่งคืนสตรีมเอาต์พุตสำหรับเซิร์ฟเล็ต ตัวอย่างเช่น สตรีมนี้ใช้เพื่อส่งออกไฟล์ไบนารี ข้อมูลข้อความสามารถส่งออกได้โดยใช้ java.io.Writer:

    java.io.PrintWriter getWriter() สาธารณะพ่น java.io.IOException

    เมธอด getWriter() จะแปลงสตริงเป็นชุดอักขระที่ระบุในเมธอด getCharacterEncoding() และ getLocale() โดยอัตโนมัติ

    โมฆะสาธารณะ setContentLength (int len)

    วิธีการ setContentLength ตั้งค่าของฟิลด์ส่วนหัว HTTP "Content-Length"

    โมฆะสาธารณะ setContentType (ประเภทสตริง)

    เมธอด setContentType ใช้เพื่อส่งประเภทเนื้อหา MIME ของเอกสาร ฟิลด์ส่วนหัว HTTP "ประเภทเนื้อหา"

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

    โมฆะสาธารณะ setBufferSize (ขนาด int) int สาธารณะ getBufferSize () โมฆะสาธารณะ flushBuffer () พ่น java.io.IOException โมฆะสาธารณะ resetBuffer ()

    วิธีการ 4 วิธีข้างต้นช่วยให้คุณสามารถกำหนดขนาดของบัฟเฟอร์การส่ง รับขนาดของมัน เริ่มต้นการส่งเนื้อหาของบัฟเฟอร์ไปยังไคลเอนต์ตามลำดับโดยไม่ต้องรอให้เต็ม และยังล้างบัฟเฟอร์ข้อมูลนี้ด้วย

    บูลีนสาธารณะ isCommission()

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

    โมฆะสาธารณะรีเซ็ต()

    หากยังไม่ได้ส่งส่วนหัว HTTP วิธีการรีเซ็ตจะ "รีเซ็ต" ส่วนหัว HTTP เป็นค่าเริ่มต้น

    แผนภูมิ JFreeChart ในเซิร์ฟเล็ต

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

    Servlet พร้อมไลบรารีกราฟิก Chart.js

    JNI ในเซิร์ฟเล็ต

    ในบางกรณี อาจจำเป็นต้องใช้ JNI ในเว็บแอปพลิเคชัน มีการนำเสนอตัวอย่างของการใช้ JNI ในเซิร์ฟเล็ต

    ข้อความ JMS ในเซิร์ฟเล็ต

    Servlet สามารถใช้ในการสื่อสาร เจเอ็มเอสข้อความระหว่างแอปพลิเคชัน ตัวอย่างของการใช้เซิร์ฟเล็ตเพื่อส่งและอ่านข้อความ JMS ในคอนเทนเนอร์ JBoss จะถูกนำเสนอ

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

    • โครงสร้างของโครงการเว็บคืออะไร?

    • คอนเทนเนอร์เซิร์ฟเล็ตคืออะไร? วงจรชีวิตของเซิร์ฟเล็ต

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

    • งานและฟังก์ชันการทำงานของคอนเทนเนอร์เซิร์ฟเล็ตคืออะไร?

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

    • sendRedirect() และ forward() แตกต่างกันอย่างไร?

    ในการเรียก JSP โดยใช้พาธสัมพัทธ์ จะใช้เมธอด sendRedirect() ในการเข้าถึง JSP โดยใช้พาธสัมบูรณ์ ความแตกต่างระหว่างเมธอดเหล่านี้ก็คือ เมื่อใช้เมธอด forward() ออบเจ็กต์คำขอที่มีอยู่แล้วจะถูกส่งผ่าน และเมื่อมีการเรียกใช้เมธอด sendRedirect() คำขอใหม่จะถูกสร้างขึ้น ในกรณีหลังนี้ ข้อมูลควรถูกส่งไปยังวัตถุอื่น นอกจากนี้ เมธอด forward() ยังทำงานได้เร็วกว่าอีกด้วย

    • คุณรู้อะไรเกี่ยวกับตัวกรองเซิร์ฟเล็ต

    การใช้อินเทอร์เฟซตัวกรองทำให้คุณสามารถสร้างออบเจ็กต์ที่ดักฟังคำขอและสามารถเปลี่ยนส่วนหัวและเนื้อหาของคำขอไคลเอ็นต์ได้ ตัวกรองไม่ได้สร้างคำขอหรือการตอบกลับ แต่เพียงแก้ไขเท่านั้น ตัวกรองดำเนินการ ก่อนการรักษาร้องขอก่อนที่จะถึงเซิร์ฟเล็ต ตามด้วย (หากจำเป็น) โดยประมวลผลการตอบสนองที่มาจากเซิร์ฟเล็ต ตัวกรองสามารถโต้ตอบกับ ประเภทต่างๆโดยเฉพาะอย่างยิ่ง ทั้งเซิร์ฟเล็ตและเพจ JSP ตัวกรองเซิร์ฟเล็ตสามารถ:

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

    ตัวกรองเซิร์ฟเล็ตสามารถกำหนดค่าให้ทำงานบนเซิร์ฟเล็ตเดียวหรือกลุ่มของเซิร์ฟเล็ตได้ พื้นฐานสำหรับการสร้างตัวกรองคืออินเทอร์เฟซ javax.servlet.Filter ซึ่งใช้สามวิธี:

    • เป็นโมฆะ init (การกำหนดค่า FilterConfig) พ่น ServletException;
    • โมฆะทำลาย();
    • เป็นโมฆะ doFilter (คำขอ ServletRequest, การตอบสนอง ServletResponse, ห่วงโซ่ FilterChain) พ่น IOException, ServletException;

    มีการเรียกเมธอด init() ก่อนที่ตัวกรองจะเริ่มทำงานและตั้งค่าออบเจ็กต์การกำหนดค่าของตัวกรอง วิธีการ doFilter จะทำงานจริงของตัวกรอง ดังนั้น เซิร์ฟเวอร์จะเรียก init() หนึ่งครั้งเพื่อเริ่มตัวกรอง จากนั้นจึงเรียก doFilter() หลายครั้งตามที่ร้องขอไปยังตัวกรองนี้โดยตรง หลังจากที่ตัวกรองทำงานเสร็จสิ้นแล้ว จะเรียกเมธอด destroy()

    • เหตุใดเราจึงต้องมีผู้ฟังในเซิร์ฟเล็ต?

    Listener บริบทและเซสชันคือคลาสที่สามารถติดตามเมื่อบริบทหรือเซสชันถูกเตรียมใช้งาน หรือติดตามว่าเมื่อใดควรถูกทำลาย และเมื่อใดที่คุณลักษณะถูกเพิ่มหรือลบออกจากบริบทหรือเซสชัน Servlet 2.4 ขยายโมเดลตัวฟังคำขอโดยอนุญาตให้คุณติดตามวิธีการสร้างและทำลายคำขอ และวิธีเพิ่มและลบคุณลักษณะออกจากเซิร์ฟเล็ต Servlet 2.4 เพิ่มคลาสต่อไปนี้:

    • ServletRequestListener
    • ServletRequestEvent
    • ServletRequestAttributeListener
    • ServletRequestAttributeEvent

    • วิธีจัดการกับข้อยกเว้นที่เกิดจากเซิร์ฟเล็ตอื่นในแอปพลิเคชัน

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

    • ตัวอธิบายการปรับใช้คืออะไร?

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

    ไฟล์การกำหนดค่านี้ระบุตัวเลือกการปรับใช้สำหรับโมดูลหรือแอปพลิเคชันที่มีการตั้งค่าเฉพาะ ตัวเลือกความปลอดภัย และอธิบายข้อกำหนดการกำหนดค่าเฉพาะ ไวยากรณ์สำหรับไฟล์ตัวอธิบายการปรับใช้ใช้ XML

    • จะใช้การเปิดตัวเซิร์ฟเล็ตด้วยการเปิดตัวแอปพลิเคชันได้อย่างไร

    โดยปกติคอนเทนเนอร์เซิร์ฟเล็ตจะโหลดเซิร์ฟเล็ตตามคำขอแรกของไคลเอ็นต์ แต่บางครั้งจำเป็นต้องโหลดเซิร์ฟเล็ตทันทีที่จุดเริ่มต้นของแอปพลิเคชัน (เช่น หากเซิร์ฟเล็ตมีขนาดใหญ่และจะใช้เวลานานในการโหลด) เมื่อต้องการทำเช่นนี้ คุณต้องใช้องค์ประกอบ load-on-startup ในตัวอธิบาย (หรือหมายเหตุประกอบ loadOnStartup) ซึ่งจะระบุว่าควรโหลดเซิร์ฟเล็ตเมื่อเริ่มต้นหรือไม่

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

    • วัตถุ ServletConfig คืออะไร

    อินเทอร์เฟซ javax.servlet.ServletConfig ใช้เพื่อส่งข้อมูลการกำหนดค่าไปยังเซิร์ฟเล็ต แต่ละเซิร์ฟเล็ตมีอ็อบเจ็กต์ ServletConfig ของตัวเอง ซึ่งคอนเทนเนอร์เซิร์ฟเล็ตมีหน้าที่ในการสร้างอินสแตนซ์ หากต้องการตั้งค่าพารามิเตอร์การกำหนดค่า ให้ใช้พารามิเตอร์ init ใน web.xml (หรือคำอธิบายประกอบ WebInitParam) เมธอด getServletConfig() ใช้เพื่อรับอ็อบเจ็กต์ ServletConfig ของเซิร์ฟเล็ตที่กำหนด

    • วัตถุ ServletContext คืออะไร

    อินเทอร์เฟซ javax.servlet.ServletContext กำหนดชุดวิธีการที่เซิร์ฟเล็ตใช้เพื่อสื่อสารกับคอนเทนเนอร์เซิร์ฟเล็ต ตัวอย่างเช่น การรับประเภท MIME ของไฟล์ การส่งคำขอ หรือการเขียนลงในไฟล์บันทึก ออบเจ็กต์ ServletContext มีลักษณะเฉพาะและพร้อมใช้งานสำหรับเซิร์ฟเล็ตทั้งหมดในแอปพลิเคชันเว็บ เราสามารถใช้วัตถุ ServletContext เมื่อเราต้องการให้การเข้าถึงเซิร์ฟเล็ตอย่างน้อยหนึ่งรายการกับพารามิเตอร์เริ่มต้นของเว็บแอปพลิเคชัน องค์ประกอบนี้ใช้สำหรับสิ่งนี้ ใน web.xml สามารถรับออบเจ็กต์ ServletContext ได้โดยใช้เมธอด getServletContext() บนอินเทอร์เฟซ ServletConfig

    คอนเทนเนอร์เซิร์ฟเล็ตยังสามารถจัดเตรียมวัตถุบริบทที่ไม่ซ้ำกับกลุ่มของเซิร์ฟเล็ต แต่ละกลุ่มจะเชื่อมโยงกับชุด URL เส้นทางโฮสต์ของตนเอง

    ServletContext ได้รับการขยายในข้อกำหนด Servlet 3 และจัดให้มี การเพิ่มซอฟต์แวร์ผู้ฟังและตัวกรองในแอปพลิเคชัน อินเทอร์เฟซนี้ยังมีวิธีการที่มีประโยชน์มากมาย เช่น getMimeType(), getResourceAsStream() เป็นต้น

    • ความแตกต่างระหว่าง ServletContext และ ServletConfig คืออะไร?

    ด้านล่างนี้คือข้อแตกต่างบางประการ:

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

    • อินเทอร์เฟซ ServletResponse

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

    • อินเทอร์เฟซ ServletRequest

    อินเทอร์เฟซ ServletRequest เป็นเครื่องมือสำหรับรับพารามิเตอร์คำขอ HTTP อินเทอร์เฟซนี้มีวิธีการบางอย่างเหมือนกันในชื่อและวัตถุประสงค์ของ ServletContext

    • Request Dispatcher คืออะไร?

    อินเทอร์เฟซ RequestDispatcher ใช้เพื่อส่งคำขอไปยังทรัพยากรอื่น (ซึ่งอาจเป็น HTML, JSP หรือเซิร์ฟเล็ตอื่นในแอปพลิเคชันเดียวกัน) เราสามารถใช้สิ่งนี้เพื่อเพิ่มเนื้อหาจากแหล่งข้อมูลอื่นในการตอบกลับ อินเทอร์เฟซนี้ใช้สำหรับการสื่อสารภายในระหว่างเซิร์ฟเล็ตในบริบทเดียวกัน อินเทอร์เฟซใช้สองวิธี:

    • ถือเป็นโมฆะไปข้างหน้า(ServletRequest var1, ServletResponse var2) - ส่งต่อคำขอจากเซิร์ฟเล็ตไปยังทรัพยากรอื่น (ไฟล์เซิร์ฟเล็ต, JSP หรือ HTML) บนเซิร์ฟเวอร์
    • เป็นโมฆะรวม(ServletRequest var1, ServletResponse var2) - รวมเนื้อหาของทรัพยากร (servlet, JSP หรือ หน้า HTML) เพื่อตอบสนอง

    อินเทอร์เฟซสามารถเข้าถึงได้โดยใช้เมธอด ServletContext getRequestDispatcher(String s) เส้นทางต้องขึ้นต้นด้วย / ซึ่งจะถูกตีความโดยสัมพันธ์กับเส้นทางรูทบริบทปัจจุบัน

    • คุณจะสร้างการหยุดชะงักในเซิร์ฟเล็ตได้อย่างไร?

    การหยุดชะงักสามารถรับได้โดยการใช้การเรียกเมธอดแบบวนซ้ำ ตัวอย่างเช่น โดยการเรียกเมธอด doPost() ในเมธอด doGet() และการเรียก doGet() ในเมธอด doPost()

    • จะรับที่อยู่ของเซิร์ฟเล็ตบนเซิร์ฟเวอร์ได้อย่างไร?

    หากต้องการรับเส้นทางเซิร์ฟเล็ตจริงบนเซิร์ฟเวอร์ คุณสามารถใช้โครงสร้างนี้: getServletContext().getRealPath(request.getServletPath())

    • จะรับข้อมูลเซิร์ฟเวอร์จากเซิร์ฟเล็ตได้อย่างไร?

    ข้อมูลเซิร์ฟเวอร์สามารถรับได้โดยใช้วัตถุ ServletContext โดยใช้เมธอด getServerInfo() เหล่านั้น. getServletContext().getServerInfo()

    • จะรับที่อยู่ IP ของลูกค้าบนเซิร์ฟเวอร์ได้อย่างไร

    ใช้ request.getRemoteAddr() เพื่อรับ IP ของไคลเอ็นต์ในเซิร์ฟเล็ต

    • คุณรู้อะไรเกี่ยวกับคลาสของ servlet wrapper?

    Servlet HTTP API มีคลาส wrapper สองคลาส - HttpServletRequestWrapper และ HttpServletResponseWrapper ช่วยให้นักพัฒนานำการใช้งานคำขอและประเภทการตอบกลับของเซิร์ฟเล็ตมาใช้เอง เราสามารถขยายคลาสเหล่านี้และแทนที่เฉพาะวิธีการที่จำเป็นเพื่อใช้การตอบสนองและประเภทออบเจ็กต์คำขอของเราเอง คลาสเหล่านี้ไม่ได้ใช้ในการเขียนโปรแกรมเซิร์ฟเล็ตมาตรฐาน

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

    การสร้างแอปพลิเคชัน Java ด้วย Servlets

    ดังนั้นเราจึงได้สร้างไว้แล้ว ไฟล์การกำหนดค่าการใช้งาน อย่างไรก็ตาม ในสถานะปัจจุบัน มันไม่ได้ทำอะไรเลยอย่างแท้จริง เราต้องการให้ลูกค้าสามารถลงทะเบียนโดยใช้แบบฟอร์ม HTML ได้ ดังนั้นสิ่งต่อไปที่เราต้องทำคือสร้างไฟล์ JSP ที่จะแสดงแบบฟอร์มด้านบนและรายละเอียดลูกค้าเมื่อการลงทะเบียนเสร็จสมบูรณ์ นี่คือสิ่งที่เราจะทำตอนนี้

    เรากำลังดำเนินการเกี่ยวกับรูปลักษณ์ภายนอก

    ลักษณะที่ปรากฏของแอปพลิเคชันจะถูกกำหนดโดยไฟล์ JSP สองไฟล์ - ในบริบท MVC ไฟล์เหล่านี้เรียกว่ามุมมอง คนแรกจะต้องรับผิดชอบในการแสดงแบบฟอร์มลงทะเบียนและ ข้อผิดพลาดที่เป็นไปได้เรียกว่าหลังจากตรวจสอบข้อมูลที่ป้อนแล้ว ส่วนที่สองจะเป็นหน้าต้อนรับปกติที่จะแสดงรายละเอียดที่ลูกค้าป้อนหลังจากกระบวนการลงทะเบียนเสร็จสมบูรณ์

    นี่คือไฟล์ JSP ไฟล์แรก:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> การลงทะเบียน

    การลงทะเบียน

    $(การละเมิด)