ฉันถูกขอให้ทำงานกับพอร์ตเล็ตและพอร์ทัล
ฉันต้องการทราบความแตกต่างระหว่างพอร์ตเล็ตและ servlet หรือไม่
พอร์ตเล็ตแตกต่างกันอย่างไร (อาจเป็นฟังก์ชัน) จาก servlet
ฉันถูกขอให้ทำงานกับพอร์ตเล็ตและพอร์ทัล
ฉันต้องการทราบความแตกต่างระหว่างพอร์ตเล็ตและ servlet หรือไม่
พอร์ตเล็ตแตกต่างกันอย่างไร (อาจเป็นฟังก์ชัน) จาก servlet
คำตอบ:
พอร์ตเล็ตเป็นส่วนหนึ่งของมาตรฐาน JSR-168 ที่ควบคุมคอนเทนเนอร์พอร์ทัลและคอมโพเนนต์ นี่เป็นมาตรฐานที่แตกต่างจากมาตรฐานสำหรับคอนเทนเนอร์เว็บ (และ servlets) แม้ว่าจะมีความคล้ายคลึงกันอย่างชัดเจนระหว่างสองมาตรฐานนี้ แต่ก็แตกต่างกันในคอนเทนเนอร์ API วงจรชีวิตการกำหนดค่าการปรับใช้ ฯลฯ
ความแตกต่างที่สำคัญระหว่างพอร์ตเล็ตกับเซิร์ฟเล็ตอาจเป็นได้ว่าในขณะที่เซิร์ฟเล็ตเสมอตอบสนองต่อชนิดเดียวของการดำเนินการ - คำขอพอร์ตเล็ต (เนื่องจากลักษณะของวงจรชีวิตของมันและแข็งแรงผูกภาชนะ) จะสามารถตอบสนองต่อทั้งสองประเภทของการดำเนินการ: การแสดงผลและการร้องขอ มีแน่นอนมากกว่านั้น แต่ฉันพบว่านี่เป็นความแตกต่างหลักระหว่างสองสิ่งนี้เมื่อฉันศึกษาการพัฒนาพอร์ทัล
ปรับปรุงจาก Source : Servlets Vs Portlets
ความคล้ายคลึงกัน
Servlets และพอร์ตเล็ตเป็นคอมโพเนนต์บนเว็บที่ใช้ Java สำหรับการนำไปใช้งาน
พอร์ตเล็ตถูกจัดการโดยพอร์ตเล็ตคอนเทนเนอร์เช่นเดียวกับที่ servlet ถูกจัดการโดย servlet container
ทั้งเนื้อหาแบบคงที่และไดนามิกสามารถสร้างได้โดย Portlets และ Servlets
วงจรชีวิตของพอร์ตเล็ตและ servlets ถูกควบคุมโดยคอนเทนเนอร์
โมเดลไคลเอ็นต์ / เซิร์ฟเวอร์ถูกใช้สำหรับทั้ง servlets และพอร์ตเล็ต
บรรจุภัณฑ์และการปรับใช้นั้นเหมือนกันคือ WAR / EAR
Application Session มีอยู่ทั้งในคอนเทนเนอร์ Servlet และ Portlet เป็นวิธีการหนึ่งในการแบ่งปันข้อมูล (การสื่อสารระหว่างพอร์ตเล็ตที่หยาบ) จากเฟสการแสดงผลไปยังเฟสการดำเนินการ (หรือเฟสที่ต่ำกว่า) ในคอนเทนเนอร์พอร์ตเล็ต
ทั้ง Servlets และพอร์ตเล็ตใช้สภาพแวดล้อมเซิร์ฟเวอร์ / VM ที่คล้ายคลึงกันที่รองรับ แม้ว่าอาจจำเป็นต้องมีการกำหนดค่าเพิ่มเติมบางอย่างในกรณีของพอร์ตเล็ตเพื่อให้ทำเครื่องหมาย
เครื่องมือ build / DI นั้นคล้ายคลึงกันสำหรับทั้ง Ant, Maven, Gradle และอื่น ๆ ได้รับการสนับสนุนทั้งหมด ส่วนใหญ่ :) - สิ่งนี้เปลี่ยนไปเล็กน้อยกับ Liferay 7
ความแตกต่าง
Servlets สามารถแสดงผลเว็บเพจที่สมบูรณ์ในขณะที่พอร์ตเล็ตแสดงผลแฟรกเมนต์ html ชิ้นส่วนเหล่านี้รวมโดยพอร์ทัลเป็นหน้าเว็บที่สมบูรณ์
ชนิดเนื้อหาของพอร์ตเล็ต JSR 168 สามารถเป็นได้เฉพาะ cHTML, XHTML, WML ไม่รองรับเนื้อหาประเภทอื่น
ไม่อนุญาตให้พอร์ตเล็ตสร้างโค้ด HTML ที่มีแท็กเช่น body, frame, frameset, head, html หรือ title
พอร์ตเล็ตที่แตกต่างจาก servlet ไม่มี URL ที่แนบมาจึงไม่สามารถเข้าถึงได้โดยตรง การเข้าถึงผ่านทางเพจพอร์ทัลที่เก็บพอร์ตเล็ตเท่านั้น
พอร์ตเล็ตสามารถจัดเตรียมการควบคุมเพื่อจัดการกับสถานะหน้าต่างหรือโหมดพอร์ตเล็ต
สามารถวางหลายอินสแตนซ์ของพอร์ตเล็ตเดียวในเพจเดียวกัน
พอร์ตเล็ตสนับสนุนคอนฟิกูเรชันแบบถาวรและการกำหนดเองข้อมูลโปรไฟล์
พอร์ตเล็ตสามารถมีคำร้องขอได้สองประเภท ได้แก่ แสดงคำขอและคำขอดำเนินการ
พอร์ตเล็ตมีสองขอบเขตภายในเซสชัน ขอบเขตแอ็พพลิเคชันสำหรับการสื่อสารระหว่างพอร์ตเล็ตและขอบเขตพอร์ตเล็ตสำหรับการสื่อสารภายในพอร์ตเล็ต
พอร์ตเล็ตไม่สามารถตั้งค่าการเข้ารหัสชุดอักขระของการตอบสนองและไม่สามารถตั้งค่าส่วนหัวการตอบกลับ HTTP
พอร์ตเล็ตไม่มีสิทธิ์เข้าถึง URL ที่ร้องขอ ดังนั้นจึงไม่สามารถเข้าถึงพารามิเตอร์การค้นหาที่ต่อท้าย URL ได้ พอร์ตเล็ตไม่สามารถตั้งค่าคุกกี้
วิธีการทั่วไปของ API พอร์ตเล็ตมี
doView()
,doEdit()
,doHelp()
และprocessAction()
ขณะที่มี servletservice()
, ,doPost()
doGet()
ข้อมูลจำเพาะของ Servlet - JSR 369 (Servlet 4.0), JSR 340 (Servlet 3.1), JSR 315 (Servlet 3.0), JSR 154 (Servlet 2.5 & 2.4) ข้อมูลจำเพาะของพอร์ตเล็ต - JSR 168 (Portlet Spec v1.0), JSR 286 (Portlet Spec v2.0), JSR 362 (Portlet Spec v3.0)
การปรับใช้พอร์ตเล็ตเกี่ยวข้องกับวิธีการที่แตกต่างจากแอ็พพลิเคชัน Servlet ผู้ให้บริการบางราย (Liferay / Alfresco / WebSphere) สนับสนุนการปรับใช้พอร์ตเล็ตแบบร้อนโดยไม่จำเป็นต้องรีสตาร์ทเซิร์ฟเวอร์ซึ่งเป็นไปไม่ได้ในกรณีของ servlets โดยไม่ต้องโมดูลาร์แอ็พพลิเคชันโดยใช้ไลบรารีพิเศษเช่น OSGi
แก้ไข (จากความคิดเห็น)
คอนเทนเนอร์พอร์ตเล็ตถูกสร้างขึ้นบนคอนเทนเนอร์ Servlet ในที่สุดอาจกล่าวได้ว่าพอร์ตเล็ตทำงานบน Servlet Container แต่ในขณะที่พัฒนาแอปเราจะดูคอนเทนเนอร์พอร์ตเล็ตแยกจากคอนเทนเนอร์ Servlet / Java EE
พอร์ตเล็ตและ servlets ทั้งสองได้รับคำร้องขอ http และส่งคืนการตอบสนองซึ่งโดยทั่วไปแล้ว HTML บางส่วนสามารถแสดงผลได้โดยเบราว์เซอร์ พอร์ตเล็ตถูกใช้ในบริบทของ "พอร์ทัล" ซึ่งเป็นแนวคิดที่ว่าเพจเดียวที่ผู้ใช้มองเห็นมีชิ้นส่วนจำนวนมากคิดว่าไทล์แต่ละอันมาจากพอร์ตเล็ตที่แตกต่างกัน
ตอนนี้คุณจะได้รับเอฟเฟกต์ "ไทล์" จากการให้บริการปกติ (ดู Struts + Tiles สำหรับตัวอย่างของวิธีการ) บิตพิเศษจากพอร์ตเล็ตคือพอร์ตเล็ตอยู่ในสภาพแวดล้อมที่สมบูรณ์ยิ่งขึ้นโดยพอร์ทัลจัดเตรียม API เพิ่มเติมเพื่อให้ สิ่งที่แสดงโดยพอร์ตเล็ตใด ๆ สามารถกำหนดค่าโดยผู้ใช้แต่ละรายตามการกำหนดค่าตามความชอบของตนและ porlets สามารถสื่อสารกันได้ - กดปุ่มในที่เดียวมีบางอย่างเกิดขึ้นในอีกอันหนึ่ง
Servlets มีนิยาม java (แอ็พพลิเคชันที่จัดการคำร้องขอ HTTP GET / POST) ในขณะที่พอร์ตเล็ตมีข้อกำหนดส่วนติดต่อผู้ใช้คอมโพเนนต์ที่ทำหน้าที่เฉพาะที่คล้ายกับวิดเจ็ต windows vista หรือคอมโพเนนต์จำนวนมากที่ใช้ใน stackoverflow ที่นี่ ไม่จำเป็นต้องได้รับการสนับสนุนโดย servlets ทางฝั่งเซิร์ฟเวอร์ แต่มาตรฐานพอร์ตเล็ตได้รับการพัฒนาควบคู่ไปกับ java O'Reilly มีดีกวดวิชา
โดยพื้นฐานแล้ว Servlets จะจัดเตรียมเนื้อหาที่โดยปกติจะใช้ทั้งหน้าในเบราว์เซอร์ (เว้นแต่คุณจะใช้เฟรม) และพอร์ตเล็ตจัดเตรียมเนื้อหาที่ล้อมรอบด้วยหน้าต่าง ด้วยพอร์ตเล็ตคุณสามารถมีหลายพอร์ตเล็ตเคียงข้างกันและแต่ละพอร์ตสามารถจัดเตรียมเนื้อหาและฟังก์ชันการทำงานที่แตกต่างจากพอร์ตเล็ตอื่น ๆ พอร์ตเล็ตสามารถจัดเตรียมการโต้ตอบที่สมบูรณ์สำหรับแอ็พพลิเคชันประเภทหนึ่งในขณะที่อีกพอร์ตเล็ตสามารถจัดเตรียมเนื้อหาสำหรับแอ็พพลิเคชันประเภทอื่น พอร์ทัลสามารถจัดเตรียมฟังก์ชันการรักษาเฮาส์บางส่วนและการเข้าจุดเดียวที่ปลอดภัยให้กับพอร์ตเล็ตทั้งหมดบนเพจ สำหรับรายละเอียด (ความเหมือน / ความแตกต่าง) ระหว่างกันโปรดอ่านต่อ นี่คือความคล้ายคลึงกันบางประการ: