40 Pertanyaan dan Jawaban Wawancara Servlet Teratas (2026)

Bersiap untuk a Java Wawancara daring berarti mengantisipasi konsep servlet apa yang sebenarnya diuji oleh perusahaan. Panduan ini menjelaskan mengapa. Wawancara Servlet Pertanyaan itu penting dan pemahaman yang lebih mendalam yang diungkapkannya secara profesional.
Pengetahuan yang kuat tentang servlet membuka peluang bagi para profesional pemula, tingkat menengah, dan senior yang bekerja di bidang ini saat ini. Perekrut menghargai pengalaman teknis, keahlian di bidang tertentu, dan keterampilan analisis yang diperoleh melalui proyek nyata. Hal ini membantu tim, manajer, dan senior mengevaluasi kedalaman keterampilan di berbagai pertanyaan dan jawaban, mulai dari yang dasar, lanjutan, hingga teknis, selama jalur pertumbuhan profesional jangka panjang. Baca lebih banyak…
👉 Unduh PDF Gratis: Pertanyaan & Jawaban Wawancara Servlet
Pertanyaan dan Jawaban Wawancara Servlet Terpopuler
1) Apa itu a Java Servlet?
A Java Servlet adalah komponen sisi server yang ditulis dalam Java yang berjalan di dalam wadah web (seperti Apache Tomcat, Jetty, atau Glassfish) dan memproses permintaan HTTP yang masuk untuk menghasilkan respons dinamis. Servlet menjembatani komunikasi antara permintaan klien (biasanya dari browser) dan sumber daya backend seperti basis data atau logika bisnis. Seperti halnya yang lain, servlet juga menjembatani komunikasi antara permintaan klien (biasanya dari browser) dan sumber daya backend seperti basis data atau logika bisnis. Java Kelas dan servlet mendapatkan keuntungan dari independensi platform, keamanan, dan fitur-fitur yang tangguh. Java ekosistem.
Contoh: Servlet dapat menangani formulir login pengguna dengan mengambil parameter nama pengguna dan kata sandi dari permintaan, memeriksanya terhadap basis data, dan kemudian mengembalikan halaman HTML berdasarkan hasil login.
2) Apa saja keunggulan Servlet dibandingkan CGI?
Servlet menawarkan beberapa keunggulan utama dibandingkan dengan Antarmuka Gerbang Umum (CGI) program:
| Fitur | Servlet | CGI |
|---|---|---|
| Proses | Menangani permintaan menggunakan thread. | Membuat proses baru untuk setiap permintaan. |
| Performance | High | Rendah |
| Portabilitas | Javaberbasis dan independen platform | Bergantung pada biner asli |
| Memory Usage | Efisien | High |
Servlet ringan dan mudah diskalakan karena tidak membuat proses baru untuk setiap permintaan. Sebaliknya, skrip CGI membuat proses terpisah setiap kali, sehingga mengakibatkan beban kerja yang signifikan.
3) Jelaskan Siklus Hidup Servlet
The Siklus hidup servlet mendefinisikan tahapan yang dilalui servlet dari pembuatan hingga penghancuran di dalam container:
- Pemuatan dan InstansiasiKontainer memuat servlet dan memanggil konstruktor.
- Inisialisasi:
init()Dipanggil sekali untuk melakukan konfigurasi awal. - Penanganan Permintaan: Para
service()Metode ini dipanggil untuk setiap permintaan dan mendelegasikan ke metode sepertidoGet()ordoPost(). - Pengrusakan:
destroy()Dipanggil sebelum servlet dihapus, sehingga memungkinkan pembersihan.
Siklus hidup ini memastikan penggunaan sumber daya yang efisien dan penanganan permintaan yang konsisten.
4) Apa Perbedaan Antara GenericServlet dan HttpServlet?
GenericServlet dan HttpServlet keduanya merupakan abstraksi untuk membangun servlet:
- GenerikServlet: Sebuah kelas abstrak yang tidak bergantung pada protokol dan menangani pola permintaan/respons generik.
- HttpServlet: Subkelas dari
GenericServletdirancang khusus untuk Protokol HTTP, menyediakan metode sepertidoGet(),doPost(), Dll
Karena sebagian besar aplikasi web menggunakan HTTP, HttpServlet dalam praktiknya jauh lebih umum.
5) Bagaimana Servlet Menangani Permintaan HTTP GET dan POST?
Servlet menggunakan metode yang berbeda di dalam HttpServlet Kelas untuk menangani permintaan HTTP:
doGet(HttpServletRequest req,HttpServletResponse res) dipanggil untuk permintaan GET (biasanya untuk mengambil data).doPost(HttpServletRequest req,HttpServletResponse res) digunakan untuk permintaan POST (biasanya digunakan untuk pengiriman formulir atau memodifikasi status server).
The service() metode dalam HttpServlet Secara otomatis mengarahkan permintaan ke penangan yang sesuai berdasarkan metode HTTP.
6) Apa Tujuan dari web.xml dalam Servlet?
The web.xml deskriptor penyebaran adalah file konfigurasi yang ditempatkan di direktori WEB-INF dari sebuah aplikasi web. File ini memetakan kelas servlet ke URL, mengatur parameter inisialisasi, mengkonfigurasi filter dan listener, serta mendefinisikan halaman kesalahan.
Sebagai contoh:
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/path</url-pattern>
</servlet-mapping>
Ini memberi tahu kontainer untuk menangani permintaan ke /path menggunakan MyServlet.
7) Apa Itu Parameter Inisialisasi dalam Servlet?
Servlet seringkali memerlukan data konfigurasi (seperti string koneksi basis data). Data ini dapat diberikan melalui parameter inisialisasi baik di web.xml atau menggunakan anotasi seperti @WebInitParam.
Anda dapat memperoleh parameter ini menggunakan:
ServletConfig config = getServletConfig();
String paramValue = config.getInitParameter("paramName");
Hal ini memungkinkan penyesuaian perilaku servlet tanpa perlu mengkompilasi ulang kode.
8) Mendemonstrasikan Manajemen Sesi Servlet
HTTP pada dasarnya tidak memiliki status (stateless). Manajemen sesi Memungkinkan pemeliharaan status di berbagai permintaan. Teknik umum meliputi:
- Cookie – Data kecil yang disimpan di browser klien, dikirim bersama setiap permintaan.
- Penulisan Ulang URL – Menambahkan ID sesi ke URL saat cookie dinonaktifkan.
- API HTTPSession – Manajemen sesi bawaan menggunakan
HttpSessionobyek.
Contoh:
HttpSession session = request.getSession();
session.setAttribute("user", userObject);
Ini akan membuat objek sesi yang terikat pada klien.
9) Apa Perbedaan Antara Pengkodean URL dan Penulisan Ulang URL?
Keduanya merupakan teknik manajemen sesi:
- Pengkodean URL Menyesuaikan URL untuk menyertakan karakter khusus demi transfer yang aman.
- Penulisan Ulang URL Menambahkan ID sesi ke URL ketika cookie tidak tersedia.
Contoh:
response.encodeURL("dashboard");
Ini memastikan pelacakan sesi tetap berlaku meskipun cookie dinonaktifkan.
10) Apakah Servlet Aman untuk Thread? Bagaimana Cara Mencapai Keamanan Thread?
Secara default, instance servlet menangani banyak permintaan menggunakan thread. Oleh karena itu, Servlet pada dasarnya tidak aman untuk multi-threading. kecuali jika dirancang dengan cermat.
Strategi untuk keamanan benang:
- Hindari penggunaan variabel instance tanpa sinkronisasi.
- Gunakan variabel lokal di dalam metode permintaan.
- SyncLakukan kronisasi akses ke sumber daya bersama jika diperlukan.
Contoh:
public void doGet(...) {
int localVar = computeValue();
}
Penggunaan variabel lokal menghindari masalah berbagi status.
11) Apa Itu Filter Servlet dan Kasus Penggunaannya?
A Filter Servlet Filter mencegat permintaan sebelum mencapai servlet (atau respons sebelum mencapai klien). Filter menangani tugas-tugas seperti:
- Otentikasi
- Logging
- Kompresi
- Validasi masukan
Contoh: Gunakan filter untuk memeriksa apakah permintaan telah diautentikasi sebelum diteruskan ke halaman yang aman.
12) Apa Itu Listener Servlet?
Pendengar adalah penangan peristiwa yang merespons peristiwa siklus hidup dalam aplikasi web. Antarmuka pendengar umum meliputi:
ServletContextListener— Peristiwa memulai/menghentikan aplikasi.HttpSessionListener— Pembuatan dan penghapusan sesi.ServletRequestListener— Meminta peristiwa siklus hidup.
Listener membantu mengelola alokasi sumber daya atau pembersihan sebagai respons terhadap aktivitas aplikasi.
13) Bagaimana Cara Anda Meneruskan Permintaan ke Sumber Daya Lain?
Untuk meneruskan permintaan secara internal:
RequestDispatcher rd = request.getRequestDispatcher("/otherServlet");
rd.forward(request, response);
Untuk mengalihkan ke URL baru:
response.sendRedirect("newURL");
Perbedaan:
forward()ditangani secara internal tanpa pengalihan klien.sendRedirect()Menginstruksikan klien untuk membuat permintaan baru.
14) Jelaskan perbedaan antara ServletContext dan ServletConfig
| Fitur | ServletContext |
ServletConfig |
|---|---|---|
| Cakupan | Di seluruh aplikasi | Khusus untuk satu servlet |
| digunakan Untuk | Sumber daya bersama, parameter inisialisasi global | Parameter inisialisasi servlet individual |
| Lifetime | Sampai aplikasi dibongkar | Sampai servlet dihancurkan |
ServletContext menyediakan data bersama di semua servlet dalam aplikasi web, sementara ServletConfig bersifat spesifik untuk satu instance servlet.
15) Apa itu HttpSession dan bagaimana cara penggunaannya?
The HttpSession Objek ini merepresentasikan sesi pengguna di berbagai permintaan dan respons HTTP. Objek ini menawarkan beberapa manfaat, seperti:
- Menyimpan data khusus pengguna
- Manajemen waktu habis sesi
- Melacak status login
Contoh:
HttpSession session = request.getSession(true);
session.setAttribute("cart", shoppingCart);
Ini mempertahankan data di antara permintaan.
16) Bagaimana Cara Mengunggah File Menggunakan Servlet?
Untuk mengunggah file:
- Konfigurasi
<multipart-config>inweb.xml. - penggunaan
ServletFileUploadatau anotasi servlet 3.0. - Proses bagian-bagian file di
doPost().
Skenario ini umum terjadi dalam aplikasi nyata seperti pengunggahan foto profil.
17) Jelaskan Cara Menangani Pengecualian di Servlet
Servlet dapat menangani pengecualian dengan dua cara:
- Blok try-catch dalam kode servlet.
- Menetapkan
<error-page>inweb.xmluntuk memetakan pengecualian ke halaman debug khusus.
Contoh:
<error-page> <exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
Hal ini meningkatkan keandalan dan pengalaman pengguna.
18) Apa Peran Anotasi dalam Servlet (Servlet 3.0+)?
Sejak Servlet 3.0, anotasi dapat menggantikan web.xml:
@WebServlet("/path")@WebFilter@WebListener
Contoh:
@WebServlet("/hello")
public class HelloServlet extends HttpServlet { ... }
Hal ini menyederhanakan konfigurasi dan penerapan.
19) Apa itu Beban Saat Startup?
<load-on-startup> in web.xml mengontrol kapan sebuah servlet diinisialisasi:
- Nilai positif → dimuat saat aplikasi dimulai dalam urutan yang ditentukan.
- Negatif atau tidak ada → muat pada permintaan pertama.
Contoh:
<load-on-startup>1</load-on-startup>
Hal ini memastikan servlet siap sebelum permintaan apa pun tiba.
20) Bagaimana Servlet Mendukung Layanan RESTful?
Servlet dapat mengimplementasikan REST dengan menangani berbagai kata kerja HTTP (GET, POST, PUT, DELETE) dalam metode permintaan dan menghasilkan respons JSON/XML menggunakan PrintWriter atau aliran data. Endpoint REST tipikal memvalidasi URL dan berinteraksi dengan logika bisnis sesuai kebutuhan.
21) Jelaskan perbedaan antara sendRedirect() dan forward() pada Servlet
Perbedaan antara sendRedirect() dan forward() terletak di bagaimana kontrol permintaan dialihkan dan di mana pengalihan terjadiKedua mekanisme tersebut digunakan untuk mengarahkan pengguna antar sumber daya, tetapi keduanya memiliki tujuan arsitektur yang berbeda.
sendRedirect() adalah pengalihan sisi klienServlet tersebut menginstruksikan browser untuk mengirimkan permintaan HTTP baru ke URL yang berbeda. Akibatnya, bilah alamat browser berubah, dan atribut permintaan hilang. Pendekatan ini berguna saat mengalihkan ke sumber daya eksternal atau menghindari masalah pengiriman ulang formulir.
forward() adalah operasi sisi server ditangani oleh kontainer menggunakan RequestDispatcherObjek permintaan dan respons yang sama diteruskan secara internal, sehingga atribut permintaan tetap terjaga dan kinerja meningkat.
| Aspek | kirimRedirect() | maju() |
|---|---|---|
| Jenis Pengalihan | Sisi klien | Sisi server |
| Perubahan URL | Ya | Tidak |
| Objek Permintaan | New | Sama |
| Performance | Lebih lambat | Lebih cepat |
22) Apa saja berbagai jenis mekanisme pelacakan sesi Servlet?
Servlet mendukung mekanisme pelacakan beberapa sesi untuk mengelola status pengguna dalam protokol HTTP yang pada dasarnya tidak memiliki status. Pilihannya bergantung pada kompatibilitas browser, persyaratan keamanan, dan kebutuhan skalabilitas.
Pendekatan yang paling umum adalah Cookie, di mana pengidentifikasi sesi disimpan di sisi klien dan dikirim bersama setiap permintaan. Cookie efisien tetapi dapat dinonaktifkan oleh pengguna.
Penulisan Ulang URL Menambahkan ID sesi ke URL dan berguna ketika cookie tidak tersedia, meskipun hal ini mengekspos data sesi dalam riwayat browser.
Bidang Formulir Tersembunyi Menyematkan informasi sesi dalam formulir HTML, tetapi metode ini hanya berfungsi dengan navigasi berbasis formulir.
Solusi yang paling andal adalah HttpSession, yang mengabstraksikan mekanisme ini dan memungkinkan pengembang untuk menyimpan data sesi di sisi server.
| metode | Kelebihan | Kekurangan |
|---|---|---|
| Cookie | Efisien, transparan | Dapat dinonaktifkan |
| Penulisan Ulang URL | Berfungsi tanpa cookie | Risiko keamanan |
| Bidang Tersembunyi | Sederhana | Navigasi terbatas |
| Sesi Http | Aman, fleksibel | Penggunaan memori server |
23) Bagaimana cara kerja siklus hidup HttpSession di Servlet?
The HttpSession Siklus hidup dimulai ketika klien pertama kali membuat permintaan yang memerlukan pelacakan sesi. Kontainer servlet membuat objek sesi dan menetapkan ID sesi unik padanya. ID ini biasanya disimpan dalam cookie bernama JSESSIONID.
Sesi tetap aktif selama permintaan terus berlanjut dalam periode waktu tunggu yang telah dikonfigurasi. Pengembang dapat mengontrol hal ini menggunakan setMaxInactiveInterval() or web.xml konfigurasi. Sesi dapat berakhir karena waktu habis, pembatalan eksplisit menggunakan invalidate()atau penghentian aplikasi.
Suatu peristiwa penting dalam siklus hidup terjadi ketika sesi dibuat atau dihancurkan, yang dapat dipantau menggunakan HttpSessionListenerIni berguna untuk audit atau pembersihan sumber daya.
Contoh: Pelacakan pengguna yang masuk dengan menaikkan penghitung saat sesi dibuat dan menurunkannya saat sesi dihancurkan memastikan metrik konkurensi yang akurat.
24) Apa peran ServletContext dalam aplikasi web?
ServletContext mewakili seluruh aplikasi web dan menyediakan mekanisme komunikasi bersama di seluruh servlet, filter, dan listener. Objek ini dibuat sekali saat aplikasi dimulai dan dihancurkan saat aplikasi dimatikan.
Pengembang menggunakan ServletContext untuk menyimpan atribut global, membaca parameter inisialisasi di seluruh aplikasi, dan mengakses sumber daya seperti file konfigurasi. Tidak seperti HttpSession, ini bukan masalah khusus pengguna.
Sebagai contoh, kumpulan koneksi basis data yang diinisialisasi saat startup dapat disimpan di dalam ServletContext dan digunakan kembali di beberapa servlet, sehingga meningkatkan kinerja dan mengurangi beban sumber daya.
| Fitur | Konteks Servlet |
|---|---|
| Cakupan | Di seluruh aplikasi |
| Lifetime | Seluruh aplikasi |
| Data Bersama | Ya |
| Khusus Pengguna | Tidak |
25) Bagaimana cara kerja Servlet Filter dan apa saja keuntungannya?
Filter Servlet bertindak sebagai pencegat Proses ini memproses permintaan dan respons sebelum atau setelah eksekusi servlet. Proses ini umumnya digunakan untuk hal-hal yang bersifat lintas fungsional (cross-cutting concerns) yang seharusnya tidak disematkan dalam logika bisnis.
Filter sangat ideal untuk otentikasi, otorisasi, pencatatan log, kompresi, dan validasi permintaan. Filter dapat memodifikasi parameter permintaan, header, atau bahkan memblokir akses sebelum mencapai servlet.
Beberapa filter dapat dirangkai bersama, membentuk alur pemrosesan. Hal ini mendorong modularitas dan pemisahan tanggung jawab.
Contoh: Filter otentikasi memeriksa kredensial pengguna sebelum mengizinkan akses ke sumber daya yang diamankan, memastikan penegakan keamanan yang konsisten di seluruh aplikasi.
26) Jelaskan model threading Servlet dan penanganan konkurensi.
Servlet mengikuti model eksekusi multi-utas di mana satu instance servlet menangani banyak permintaan secara bersamaan menggunakan thread terpisah. Meskipun ini meningkatkan skalabilitas, hal ini menimbulkan risiko konkurensi.
Variabel instance dibagi di antara thread, sehingga membuat servlet secara inheren tidak aman untuk multi-threadingUntuk mengelola konkurensi, pengembang harus mengandalkan variabel lokal, objek yang tidak dapat diubah (immutable), atau blok yang disinkronkan (synchronized blocks) saat mengakses sumber daya bersama.
Penggunaan sinkronisasi secara sembarangan dapat menurunkan kinerja, sehingga keamanan thread harus dicapai melalui desain yang cermat, bukan dengan penguncian yang berlebihan.
Contoh: Servlet yang menggunakan penghitung bersama harus menyinkronkan pembaruan atau menggunakan variabel atomik untuk mencegah kondisi persaingan (race condition).
27) Apa perbedaan antara metode GET dan POST pada Servlet?
GET dan POST adalah metode HTTP yang paling umum digunakan dalam Servlet, tetapi keduanya memiliki tujuan yang berbeda.
GET dirancang untuk penerimaan data dan menambahkan parameter ke URL. URL ini dapat di-cache dan ditambahkan sebagai bookmark, tetapi dapat mengekspos data sensitif.
POST ditujukan untuk pengajuan data dan mengirimkan parameter dalam isi permintaan. Metode ini lebih aman dan cocok untuk operasi yang memodifikasi status server.
| Aspek | DAPATKAN | POST |
|---|---|---|
| Visibilitas Data | URL | Badan permintaan |
| Security | Rendah | Tertinggi |
| Idempoten | Ya | Tidak |
| Use Case | Ambil data | Kirim data |
28) Bagaimana pengecualian ditangani dalam aplikasi berbasis Servlet?
Penanganan pengecualian dalam Servlet dapat dikelola secara terprogram atau deklaratif. Penanganan terprogram menggunakan blok try-catch untuk menangkap dan memproses masalah runtime langsung dalam kode.
Penanganan deklaratif memanfaatkan web.xml Untuk memetakan pengecualian atau kode status HTTP ke halaman kesalahan khusus. Pendekatan ini meningkatkan kemudahan pemeliharaan dan pengalaman pengguna dengan memisahkan logika kesalahan dari logika bisnis.
Contoh: Pemetaan NullPointerException JSP memungkinkan pelaporan kesalahan yang konsisten di seluruh aplikasi tanpa kode yang berulang.
Pendekatan berlapis ini memastikan kekokohan dan arsitektur yang lebih rapi.
29) Apa itu load-on-startup dan kapan sebaiknya digunakan?
load-on-startup ditentukan saat servlet diinisialisasi oleh kontainer. Nilai bilangan bulat positif menginstruksikan kontainer untuk memuat servlet selama aplikasi dimulai, sedangkan ketiadaan atau nilai negatif menunda pemuatan hingga permintaan pertama.
Fitur ini berguna untuk servlet yang melakukan tugas inisialisasi penting seperti memuat file konfigurasi, menginisialisasi cache, atau menyiapkan koneksi basis data.
Menggunakan load-on-startup Hal ini memastikan bahwa tugas-tugas ini diselesaikan sebelum aplikasi mulai melayani permintaan, sehingga meningkatkan keandalan.
30) Bagaimana Servlet mendukung layanan web RESTful?
Servlet membentuk dasar layanan RESTful dengan menangani berbagai metode HTTP seperti GET, POST, PUT, dan DELETE. Setiap metode sesuai dengan operasi CRUD dan diimplementasikan menggunakan doGet(), doPost(), dan penangan terkait.
Dengan mengembalikan respons JSON atau XML dan mematuhi prinsip-prinsip REST seperti statelessness dan URL berbasis sumber daya, Servlet dapat mengimplementasikan API yang ringan.
Kerangka kerja modern mengabstraksikan kompleksitas ini, tetapi memahami desain RESTful Servlet sangat penting untuk kontrol tingkat rendah dan penyetelan kinerja, terutama saat bekerja langsung dengan Servis Jakarta Lebah.
31) Apa saja berbagai jenis cakupan Servlet dan bagaimana cara penggunaannya?
Cakupan servlet mendefinisikan visibilitas dan masa berlaku atribut Disimpan dalam aplikasi web. Data tersebut sangat penting untuk mengelola berbagi data antar komponen sambil mempertahankan isolasi yang tepat.
Empat lingkup utama tersebut adalah: Meminta, sesi, Aplikasi, dan Halaman (terutama digunakan di JSP). Cakupan permintaan (request scope) berlangsung selama satu permintaan HTTP dan ideal untuk mengirimkan data sementara antar servlet atau JSP. Cakupan sesi (session scope) bertahan di beberapa permintaan dari klien yang sama dan umumnya digunakan untuk data khusus pengguna seperti status login. Cakupan aplikasi (application scope) bersifat global dan dibagikan di antara semua pengguna, cocok untuk konfigurasi atau sumber daya bersama.
Memahami pemilihan cakupan (scope) dapat mencegah kebocoran memori dan masalah konkurensi.
| Cakupan | Lifetime | Jarak penglihatan | Penggunaan Khas |
|---|---|---|---|
| Meminta | Permintaan tunggal | Permintaan yang sama | Pesan validasi |
| sesi | Sesi pengguna | Pengguna tunggal | Data login |
| Aplikasi | Siklus hidup aplikasi | Semua pengguna | Cache, konfigurasi |
| Halaman | Hanya JSP | JSP yang sama | Lihat logikanya |
32) Bagaimana cara kerja keamanan Servlet menggunakan deskriptor penyebaran?
Keamanan servlet dapat dikonfigurasi secara deklaratif menggunakan web.xml tanpa memodifikasi kode aplikasi. Pendekatan ini meningkatkan kemudahan pemeliharaan dan menegakkan aturan keamanan yang konsisten.
Batasan keamanan menentukan pola URL yang dilindungi dan metode HTTP yang diizinkan. Metode autentikasi seperti BASIC, FORM, atau CLIENT-CERT menentukan bagaimana pengguna diautentikasi. Otorisasi berbasis peran membatasi akses berdasarkan peran pengguna.
Sebagai contoh, bagian yang hanya dapat diakses oleh admin dapat dilindungi sehingga hanya pengguna dengan peran "ADMIN" yang dapat mengaksesnya. Mekanisme ini terintegrasi dengan mulus dengan keamanan yang dikelola oleh kontainer.
Keamanan deklaratif lebih disukai dalam aplikasi perusahaan karena memisahkan logika keamanan dari logika bisnis dan mendukung penegakan yang terstandarisasi.
33) Jelaskan perbedaan antara Servlet tanpa status dan Servlet dengan status
Servlet stateless dan stateful berbeda dalam cara mereka mengelola data spesifik klien.
A servlet tanpa status Tidak menyimpan status klien apa pun di antara permintaan. Setiap permintaan bersifat independen, sehingga membuat servlet sangat skalabel dan cocok untuk layanan RESTful.
A servlet statefulDi sisi lain, ia mempertahankan status menggunakan sesi, cookie, atau variabel instans. Pendekatan ini berguna untuk alur kerja seperti keranjang belanja atau formulir multi-langkah.
| Aspek | Tanpa kewarganegaraan | Stateful |
|---|---|---|
| Skalabilitas | High | Menurunkan |
| Memory Usage | Minimal | Tertinggi |
| Use Case | API, layanan mikro | Alur kerja pengguna |
| Kompleksitas | Rendah | Tertinggi |
Arsitektur modern lebih menyukai servlet tanpa status (stateless) karena persyaratan skalabilitas cloud.
34) Apa itu RequestDispatcher dan apa perbedaannya dengan pengalihan (redirection)?
RequestDispatcher memungkinkan komunikasi internal antara sumber daya sisi server seperti servlet dan JSP. Ini memungkinkan penerusan atau penyertaan konten tanpa melibatkan klien.
Keunggulan utamanya adalah objek permintaan dan respons yang sama digunakan kembali, yang meningkatkan kinerja dan mempertahankan atribut permintaan. Ini ideal untuk arsitektur MVC di mana servlet pengontrol meneruskan ke tampilan.
Sebaliknya, pengalihan memerlukan permintaan baru dari klien, yang lebih lambat dan tidak menyimpan data permintaan. Memilih di antara keduanya bergantung pada apakah kesadaran klien dan perubahan URL diperlukan.
35) Apa itu anotasi Servlet dan apa manfaat yang diberikannya?
Anotasi servlet diperkenalkan untuk mengurangi beban konfigurasi XML dan menyederhanakan pengembangan. Anotasi seperti @WebServlet, @WebFilter, dan @WebListener Memungkinkan pengembang untuk mendeklarasikan metadata secara langsung dalam kode.
Manfaat utamanya meliputi peningkatan keterbacaan, pengurangan kesalahan konfigurasi, dan siklus pengembangan yang lebih cepat. Anotasi juga membuat aplikasi lebih mudah untuk di-refactor karena konfigurasi dan implementasi tetap selaras.
Namun, untuk aplikasi perusahaan besar, pendekatan hibrida sering digunakan di mana anotasi menangani pemetaan sederhana dan web.xml Mengelola konfigurasi yang kompleks.
36) Bagaimana cara kerja penyetelan kinerja Servlet?
Penyetelan kinerja servlet melibatkan pengoptimalan. penggunaan sumber daya, penanganan konkurensi, dan waktu responsStrategi umum meliputi meminimalkan sinkronisasi, menggunakan kembali objek melalui pooling, dan mengaktifkan kompresi respons.
Penggunaan kumpulan koneksi (connection pool) alih-alih membuat koneksi basis data per permintaan secara signifikan meningkatkan throughput. Caching data yang sering diakses pada lingkup aplikasi mengurangi komputasi yang berlebihan.
Pengaturan ukuran thread pool di dalam container servlet juga memainkan peran penting. Pengaturan yang buruk dapat menyebabkan kekurangan thread atau peralihan konteks yang berlebihan.
Penyetelan performa adalah proses berkelanjutan yang membutuhkan pemantauan, pembuatan profil, dan optimasi berulang.
37) Apa perbedaan antara Servlet dan JSP?
Servlet dan JSP memiliki peran yang berbeda dalam Java aplikasi web, meskipun pada akhirnya keduanya dikompilasi menjadi servlet.
Servlet adalah Java Kelas-kelas ini berfokus pada pemrosesan permintaan dan logika bisnis. JSP dirancang untuk presentasi dan menyederhanakan pembuatan HTML menggunakan tag dan bahasa ekspresi.
| Aspek | Servlet | JSP |
|---|---|---|
| Peran | Pengontrol/Logika | Liha |
| Sintaksis | Java | HTML + tag |
| pemeliharaan | Lebih bertele-tele | Lebih mudah |
| Penggunaan MVC | pengawas | Liha |
Praktik terbaik menyarankan penggunaan Servlet sebagai controller dan JSP hanya untuk merender view.
38) Bagaimana cara Servlet menangani unggahan file?
Pengunggahan file ditangani menggunakan permintaan multipart. Spesifikasi servlet menyediakan dukungan bawaan untuk pemrosesan multipart melalui anotasi atau konfigurasi.
Servlet membaca data file yang diunggah sebagai Part objek, memungkinkan akses ke metadata file dan aliran konten. File yang diunggah kemudian dapat divalidasi, disimpan, atau diproses lebih lanjut.
Penanganan unggahan file yang tepat mencakup batasan ukuran, validasi tipe, dan penyimpanan yang aman untuk mencegah kerentanan seperti eksekusi file berbahaya.
Fitur ini umumnya digunakan dalam sistem manajemen profil, unggahan dokumen, dan platform manajemen konten.
39) Apa yang dimaksud dengan pemrosesan asinkron dalam Servlet?
Pemrosesan asinkron memungkinkan servlet untuk menangani tugas yang memakan waktu lama tanpa memblokir thread penanganan permintaan. Hal ini meningkatkan skalabilitas dan responsivitas di bawah beban berat.
Dengan menggunakan API asinkron, servlet melepaskan thread kontainer dan memproses permintaan di latar belakang. Setelah pemrosesan selesai, respons dilanjutkan.
Model ini ideal untuk operasi seperti panggilan API eksternal, pemrosesan batch, atau streaming data.
Servlet asinkron secara signifikan meningkatkan throughput di lingkungan dengan konkurensi tinggi jika digunakan dengan benar.
40) Apa saja praktik terbaik Servlet yang umum diikuti dalam aplikasi perusahaan?
Pengembangan servlet tingkat perusahaan mengikuti praktik terbaik yang ketat untuk memastikan pemeliharaan, skalabilitas, dan keamanan. Ini termasuk menghindari logika bisnis di dalam servlet, menggunakan arsitektur MVC, mengexternalisasi konfigurasi, dan menegakkan keamanan thread.
Praktik lainnya meliputi penanganan pengecualian yang tepat, manajemen sesi yang aman, dan penggunaan variabel instance yang minimal. Pencatatan dan pemantauan harus diimplementasikan secara konsisten.
Dengan mengikuti prinsip-prinsip ini, hasilnya adalah aplikasi yang bersih, dapat diuji, dan siap produksi yang berkinerja andal di bawah beban kerja yang tinggi.
🔍 Pertanyaan Wawancara Servlet Teratas dengan Skenario Dunia Nyata & Jawaban Strategis
1) Apa itu Servlet, dan mengapa digunakan dalam aplikasi web?
Diharapkan dari kandidat: Pewawancara ingin menilai pemahaman dasar Anda tentang Servlet dan perannya dalam Javaaplikasi web berbasis Windows.
Contoh jawaban: Servlet adalah Java Kelas yang berjalan di server web dan menangani permintaan klien, biasanya melalui HTTP. Digunakan untuk membangun aplikasi web dinamis dengan memproses permintaan, menerapkan logika bisnis, dan menghasilkan respons. Servlet lebih disukai karena bersifat independen platform, efisien karena multithreading, dan terintegrasi erat dengan Java teknologi perusahaan.
2) Bisakah Anda menjelaskan siklus hidup Servlet?
Diharapkan dari kandidat: Pewawancara sedang menguji pengetahuan Anda tentang bagaimana Servlet dikelola oleh container.
Contoh jawaban: Siklus hidup Servlet terdiri dari tiga fase utama: inisialisasi, penanganan permintaan, dan penghancuran. Kontainer pertama-tama memanggil init() Metode ini digunakan untuk menginisialisasi Servlet. Kemudian, metode ini memanggil service() metode untuk menangani permintaan klien, yang dapat didelegasikan ke doGet() or doPost()Terakhir, ketika Servlet dinonaktifkan, maka... destroy() Metode ini dipanggil untuk melepaskan sumber daya.
3) Bagaimana Anda menangani permintaan klien di dalam Servlet?
Diharapkan dari kandidat: Mereka ingin memahami bagaimana Anda bekerja dengan metode HTTP dan pemrosesan permintaan.
Contoh jawaban: Permintaan klien ditangani melalui service() metode, yang mengarahkan permintaan ke metode tertentu seperti doGet(), doPost(), doPut(), atau doDelete() berdasarkan metode HTTP. Setiap metode memproses permintaan, berinteraksi dengan komponen backend jika diperlukan, dan menulis respons menggunakan HttpServletResponse obyek.
4) Bagaimana cara Anda mengelola pelacakan sesi di Servlet?
Diharapkan dari kandidat: Pewawancara ingin mengetahui bagaimana Anda mempertahankan status pengguna di berbagai permintaan.
Contoh jawaban: Pelacakan sesi di Servlet dapat dikelola menggunakan HttpSession, cookie, penulisan ulang URL, atau kolom formulir tersembunyi. Pendekatan yang paling umum adalah menggunakan HttpSessionyang memungkinkan penyimpanan data spesifik pengguna di sisi server dan pengambilan data tersebut melalui beberapa permintaan hingga sesi berakhir atau dibatalkan.
5) Jelaskan situasi di mana Anda mengoptimalkan aplikasi berbasis Servlet untuk meningkatkan kinerja.
Diharapkan dari kandidat: Mereka sedang mengevaluasi kemampuan pemecahan masalah dan pengalaman praktis Anda.
Contoh jawaban: Dalam peran saya sebelumnya, saya mengoptimalkan aplikasi berbasis Servlet dengan mengurangi panggilan basis data yang tidak perlu dan menerapkan pengumpulan koneksi (connection pooling). Saya juga meminimalkan pembuatan objek di dalam aplikasi tersebut. doGet() Metode ini menerapkan caching untuk data yang sering diakses. Perubahan ini secara signifikan meningkatkan waktu respons dan throughput server.
6) Bagaimana cara Anda menangani pengecualian di Servlet?
Diharapkan dari kandidat: Pewawancara mencari praktik penanganan kesalahan yang terstruktur.
Contoh jawaban: Pengecualian dalam Servlet dapat ditangani menggunakan blok try-catch di dalam kode Servlet atau dengan mendefinisikan halaman kesalahan di dalamnya. web.xml atau melalui anotasi. Saya lebih menyukai penanganan kesalahan terpusat, di mana pengecualian dicatat dengan benar dan respons kesalahan yang bermakna dikembalikan kepada pengguna tanpa mengekspos detail internal.
7) Apa perbedaan antara RequestDispatcher forward dan sendRedirect?
Diharapkan dari kandidat: Mereka ingin menguji pemahaman Anda tentang alur permintaan dan navigasi.
Contoh jawaban: RequestDispatcher meneruskan kontrol ke sumber daya lain di server tanpa mengubah URL, dan objek permintaan dan respons yang sama digunakan. Sebaliknya, sendRedirect Mengirimkan respons ke klien yang menginstruksikan klien untuk membuat permintaan baru ke URL yang berbeda, yang mengakibatkan perubahan URL dan siklus permintaan-respons baru.
8) Ceritakan tentang pengalaman Anda bekerja dengan filter atau listener dalam proyek berbasis Servlet.
Diharapkan dari kandidat: Pewawancara ingin mengetahui pengalaman Anda dengan fitur-fitur Servlet tingkat lanjut.
Contoh jawaban: Di posisi sebelumnya, saya menggunakan filter Servlet untuk mengimplementasikan pencatatan log dan pemeriksaan otentikasi sebelum permintaan mencapai Servlet inti. Saya juga bekerja dengan listener untuk melacak peristiwa pembuatan dan penghancuran sesi, yang membantu dalam memantau pengguna aktif dan membersihkan sumber daya secara efisien.
9) Bagaimana Anda akan menangani skenario lalu lintas tinggi dalam aplikasi Servlet?
Diharapkan dari kandidat: Mereka sedang menguji kemampuan Anda dalam merancang sistem yang skalabel dan andal.
Contoh jawaban: Saya akan memastikan multithreading yang efisien dengan menjaga agar Servlet tetap stateless sebisa mungkin dan menggunakan komponen yang aman untuk thread. Di pekerjaan saya sebelumnya, saya juga mengandalkan load balancing, mekanisme caching, dan akses database yang dioptimalkan untuk menangani lalu lintas tinggi tanpa menurunkan kinerja.
10) Jelaskan masalah menantang yang Anda hadapi saat melakukan debugging Servlet dan bagaimana Anda menyelesaikannya.
Diharapkan dari kandidat: Pewawancara ingin menilai pendekatan dan ketahanan Anda dalam melakukan debugging.
Contoh jawaban: Dalam peran saya sebelumnya, saya menghadapi masalah di mana sebuah Servlet secara berkala mengembalikan respons yang salah karena data yang dapat diubah (mutable data) yang digunakan bersama di beberapa thread. Saya menyelesaikannya dengan mengidentifikasi masalah keamanan thread, melakukan refactoring kode untuk menghilangkan state bersama, dan menambahkan logging yang tepat untuk memverifikasi perbaikan di bawah beban konkuren.
