Jawaban:
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.
Ditingkatkan dari Sumber : Servlets Vs Portlets
Kesamaan
Servlet dan Portlet adalah komponen berbasis web yang menggunakan Java untuk implementasinya.
Portlet dikelola oleh kontainer portlet seperti halnya servlet yang dikelola oleh kontainer servlet.
Konten statis dan dinamis dapat dihasilkan oleh Portlet dan Servlet.
Siklus hidup portlet dan servlet dikendalikan oleh wadah
Model klien / server digunakan untuk servlet dan portlet
Pengemasan dan penerapan pada dasarnya sama, WAR / EAR.
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.
Baik Servlet maupun Portlet menggunakan lingkungan server / VM serupa yang mendukungnya. Meskipun, beberapa konfigurasi tambahan mungkin diperlukan dalam kasus portlet untuk membuatnya berdetak
Alat build / DI serupa untuk keduanya - Ant, Maven, Gradle, dll semuanya didukung. Kebanyakan :) - Ini telah sedikit berubah dengan Liferay 7.
Perbedaan
Servlet dapat merender halaman web lengkap, sedangkan portlet merender fragmen html. Fragmen ini dikumpulkan oleh portal menjadi halaman web yang lengkap.
Jenis konten portlet JSR 168 hanya dapat berupa cHTML, XHTML, WML. Itu tidak mendukung tipe konten lain.
Portlet tidak diperbolehkan untuk membuat kode HTML yang berisi tag seperti body, frame, frameset, head, html, atau title.
Portlet tidak seperti servlet tidak memiliki URL yang dilampirkan sehingga tidak dapat diakses secara langsung. Akses hanya melalui halaman portal yang menyimpan portlet.
Portlet dapat dilengkapi dengan kontrol untuk memanipulasi status jendela atau mode portletnya.
Beberapa contoh portlet tunggal dapat ditempatkan ke halaman yang sama.
Portlet mendukung konfigurasi dan penyesuaian yang persisten, informasi profil.
Portlet dapat memiliki dua jenis permintaan yaitu. membuat permintaan dan permintaan tindakan.
Portlet memiliki dua cakupan dalam sesi; cakupan aplikasi untuk komunikasi lintas portlet dan cakupan portlet untuk komunikasi intra portlet.
Portlet tidak dapat menyetel penyandiaksaraan kumpulan karakter dari respons juga tidak dapat menyetel header respons HTTP.
Portlet tidak memiliki akses untuk meminta URL. Jadi tidak dapat mengakses parameter kueri yang ditambahkan ke URL. Portlet tidak dapat menyetel cookie.
Metode khas portlet API adalah
doView()
,doEdit()
,doHelp()
danprocessAction()
sementara mereka dari servlet yangservice()
,doPost()
,doGet()
.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)
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.
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.
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 .
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: