apa perbedaan antara portlet dan servlet?

96

Saya diminta untuk mengerjakan portlet dan portal.

Saya ingin tahu perbedaan antara portlet dan servlet?

Bagaimana / di mana portlet berbeda (mungkin secara fungsional) dari servlet?

Rajesh
sumber

Jawaban:

65

Portlet adalah bagian dari standar JSR-168 yang mengatur wadah dan komponen portal. Ini adalah standar yang berbeda dari standar untuk wadah web (dan servlet). Meskipun jelas ada kesejajaran yang kuat antara kedua standar ini, mereka berbeda dalam wadah, API, siklus hidup, konfigurasi, penerapan, dll.

Perbedaan utama antara portlet vs. servlet adalah sementara servlet selalu merespons satu jenis tindakan - permintaan , portlet (karena sifat siklus hidupnya dan pengikatan kontainer yang lebih kuat) harus merespons dua jenis tindakan: render dan permintaan . Tentu saja ada lebih dari itu tetapi saya menemukan ini sebagai perbedaan inti antara keduanya ketika saya mempelajari pengembangan portal.

topchef
sumber
1
Pembaruan: Portlet 1 adalah JSR 168 , Portlet 2 adalah JSR 286 , dan Portlet 3 adalah JSR 362 .
Basil Bourque
137

Ditingkatkan dari Sumber : Servlets Vs Portlets

Kesamaan

  1. Servlet dan Portlet adalah komponen berbasis web yang menggunakan Java untuk implementasinya.

  2. Portlet dikelola oleh kontainer portlet seperti halnya servlet yang dikelola oleh kontainer servlet.

  3. Konten statis dan dinamis dapat dihasilkan oleh Portlet dan Servlet.

  4. Siklus hidup portlet dan servlet dikendalikan oleh wadah

  5. Model klien / server digunakan untuk servlet dan portlet

  6. Pengemasan dan penerapan pada dasarnya sama, WAR / EAR.

  7. Sesi Aplikasi ada di kontainer Servlet dan Portlet. Ini adalah salah satu cara untuk berbagi data (Komunikasi Antar-Portlet mentah) dari fase render ke fase aksi (atau fase yang lebih rendah) di kontainer portlet.

  8. Baik Servlet maupun Portlet menggunakan lingkungan server / VM serupa yang mendukungnya. Meskipun, beberapa konfigurasi tambahan mungkin diperlukan dalam kasus portlet untuk membuatnya berdetak

  9. Alat build / DI serupa untuk keduanya - Ant, Maven, Gradle, dll semuanya didukung. Kebanyakan :) - Ini telah sedikit berubah dengan Liferay 7.


Perbedaan

  1. Servlet dapat merender halaman web lengkap, sedangkan portlet merender fragmen html. Fragmen ini dikumpulkan oleh portal menjadi halaman web yang lengkap.

  2. Jenis konten portlet JSR 168 hanya dapat berupa cHTML, XHTML, WML. Itu tidak mendukung tipe konten lain.

  3. Portlet tidak diperbolehkan untuk membuat kode HTML yang berisi tag seperti body, frame, frameset, head, html, atau title.

  4. Portlet tidak seperti servlet tidak memiliki URL yang dilampirkan sehingga tidak dapat diakses secara langsung. Akses hanya melalui halaman portal yang menyimpan portlet.

  5. Portlet dapat dilengkapi dengan kontrol untuk memanipulasi status jendela atau mode portletnya.

  6. Beberapa contoh portlet tunggal dapat ditempatkan ke halaman yang sama.

  7. Portlet mendukung konfigurasi dan penyesuaian yang persisten, informasi profil.

  8. Portlet dapat memiliki dua jenis permintaan yaitu. membuat permintaan dan permintaan tindakan.

  9. Portlet memiliki dua cakupan dalam sesi; cakupan aplikasi untuk komunikasi lintas portlet dan cakupan portlet untuk komunikasi intra portlet.

  10. Portlet tidak dapat menyetel penyandiaksaraan kumpulan karakter dari respons juga tidak dapat menyetel header respons HTTP.

  11. Portlet tidak memiliki akses untuk meminta URL. Jadi tidak dapat mengakses parameter kueri yang ditambahkan ke URL. Portlet tidak dapat menyetel cookie.

  12. Metode khas portlet API adalah doView(), doEdit(), doHelp()dan processAction()sementara mereka dari servlet yang service(), doPost(), doGet().

  13. Spesifikasi Servlet - JSR 369 (Servlet 4.0), JSR 340 (Servlet 3.1), JSR 315 (Servlet 3.0), JSR 154 (Servlet 2.5 & 2.4). Spesifikasi Portlet - JSR 168 (Spesifikasi Portlet v1.0), JSR 286 (Spesifikasi Portlet v2.0), JSR 362 (Spesifikasi Portlet v3.0)

  14. Deployment Portlets melibatkan pendekatan yang berbeda dari aplikasi Servlet. Beberapa Penyedia (Liferay / Alfresco / WebSphere) mendukung hot-deploying portlet tanpa perlu me-restart server yang tidak mungkin terjadi dalam kasus servlet tanpa memodulasi aplikasi menggunakan pustaka khusus seperti OSGi.


Edit (Dari komentar)

Wadah Portlet dibuat di atas wadah Servlet. Jadi pada akhirnya dapat dikatakan bahwa portlet berjalan pada Servlet Container. Namun saat mengembangkan aplikasi, kami melihat container portlet secara terpisah dari container Servlet / Java EE.

Ashok Goli
sumber
Jadi, aplikasi portal berjalan dalam wadah servlet / JEE dan berbicara ke wadah portlet secara terpisah? Mesin klien (browser) tidak mengetahui kontainer portlet atau portlet seperti yang saya pahami, Selain tampilan pada halaman yang ditangani melalui JavaScript dan penyegaran sebagian halaman.
Andy
2
Wadah Portlet dibuat di atas wadah Servlet. Anda dapat mengatakan bahwa kontainer Portlet adalah kontainer Servlet tingkat lanjut dengan banyak 'fitur'. Tapi untuk menjawab pertanyaan Anda dengan terus terang, ya. Saat mengembangkan aplikasi, kami melihat wadah portlet secara terpisah dari wadah Servlet / JEE.
Ashok Goli
4
Cara termudah untuk memikirkan hal ini adalah servlet merender seluruh halaman web, dan portlet merender bagian persegi panjang tertentu (subbagian) dari halaman web. Misalnya, bilah iklan di sisi kanan halaman berita dapat ditampilkan sebagai portlet. Tetapi Anda tidak akan menerapkan satu bidang edit sebagai portlet, karena itu terlalu terperinci. Pada dasarnya jika Anda memecah halaman web menjadi area penampang utama, itu adalah kandidat yang baik untuk dijadikan portlet.
@ClayFerguson "portlet merender bagian persegi panjang tertentu (subbagian) dari halaman web", jadi ini seperti bingkai, atau <div> ...
Tom Brito
@TomBrito - Sebagian benar. Ini seperti bingkai atau div, yang memiliki siklus hidupnya sendiri dan dapat berbagi data dengan bingkai atau div lain.
Ashok Goli
8

Baik portlet maupun servlet menerima permintaan http dan mengembalikan respons, yang biasanya berupa HTML yang dapat dirender oleh browser. Portlet digunakan dalam konteks "Portal", idenya adalah bahwa satu halaman yang dilihat oleh pengguna memiliki banyak bagian, pikirkan ubin, masing-masing berasal dari portlet yang berbeda.

Sekarang, Anda bisa mendapatkan efek "ubin" dari servet normal (Lihat Struts + Tiles untuk contoh bagaimana) bit tambahan dari portlet adalah portlet berada di lingkungan yang lebih kaya yang disediakan oleh Portal, API tambahan disediakan sehingga apa yang ditampilkan oleh portlet apa pun dapat dikonfigurasi oleh pengguna individu dengan preferensi mereka, dan porlet dapat berkomunikasi satu sama lain - tekan tombol di satu, sesuatu terjadi di yang lain.

djna
sumber
6

Servlet memiliki definisi java (aplikasi yang menangani permintaan HTTP GET / POST), sedangkan portlet memiliki definisi antarmuka pengguna. Komponen yang menjalankan fungsi tertentu mirip dengan widget windows vista atau banyak komponen yang digunakan dalam stackoverflow di sini. Mereka tidak perlu didukung oleh servlet di sisi server. Tetapi standar Portlet dikembangkan bersama java. O'Reilly memiliki tutorial yang bagus .

whatnick
sumber
4

Pada dasarnya, Servlet menyediakan konten yang biasanya menempati seluruh halaman di browser (kecuali Anda menggunakan bingkai), dan portlet menyediakan konten yang dibungkus oleh jendela. Dengan portlet, Anda dapat memiliki beberapa portlet secara berdampingan satu sama lain dan masing-masing dapat menyediakan konten dan fungsionalitas yang berbeda dari yang lain. Portlet dapat menyediakan interaksi lengkap untuk satu jenis aplikasi, sedangkan portlet lain dapat menyediakan konten untuk jenis aplikasi lain. Portal dapat menyediakan beberapa fungsionalitas pemeliharaan rumah dan mengamankan satu titik masuk ke semua portlet di halaman. Adapun keterangannya (persamaan / perbedaan) di antara keduanya, silakan lanjutkan membaca. Berikut beberapa persamaannya:

Liyakath
sumber