Apa itu Java Servlet?

277

Saya membaca banyak artikel untuk memahami java servlet tetapi saya tidak berhasil.

Bisakah Anda memberikan pengenalan singkat tentang servlets java (dalam bahasa yang mudah). Seperti apa servlet? Apa keuntungannya? Dan semua itu.

Saya tidak dapat memahami perbedaan antara bahasa pemrograman sisi server (PHP, ASP) dan servlets.

hardik
sumber
38
Arahkan servletstag di bawah pertanyaan Anda hingga muncul kotak hitam. Klik di sini tautan info .
BalusC
1
Servlets Anda bisa melihatnya. Saya pikir ini detail dan otentik.
shohan

Jawaban:

336

Servlet hanyalah kelas yang merespons jenis permintaan jaringan tertentu - paling umum permintaan HTTP. Pada dasarnya servlet biasanya digunakan untuk mengimplementasikan aplikasi web - tetapi ada juga berbagai kerangka kerja yang beroperasi di atas servlets (misalnya Struts) untuk memberikan abstraksi tingkat yang lebih tinggi daripada tingkat "di sini permintaan HTTP, tulis ke respons HTTP ini" yang digunakan servlets menyediakan.

Servlet dijalankan dalam wadah servlet yang menangani sisi jaringan (misalnya menguraikan permintaan HTTP, penanganan koneksi dll). Salah satu wadah servlet open source yang paling terkenal adalah Tomcat .

Jon Skeet
sumber
16
Servlet adalah potongan kode java yang disebut oleh server web di dalam server web itu sendiri. Jika Anda menginginkan sesuatu yang tampak seperti PHP atau ASP, Anda memerlukan JSP (yang merupakan jenis servlet khusus)
Thorbjørn Ravn Andersen
3
Thanx untuk jawabannya tetapi masih saya tidak bisa mendapatkan penggunaan servlets yang sebenarnya, akan lebih baik jika Anda dapat menjelaskan dengan contoh seperti sitution di mana kita dapat menggunakan servlets. saya tidak mengerti penggunaan servlet seperti apa yang bisa dilakukan servlet yang tidak bisa dilakukan oleh bahasa pemrograman sisi server lainnya.
hardik
4
#Hardik Servlet hanyalah teknologi umum untuk pekerjaan Java sisi-server. Servlet bukan bahasa - dan ASPX juga tidak. Keduanya adalah platform yang Anda gunakan bersama dengan bahasa lain - biasanya Java untuk servlet.
Jon Skeet
7
@Hardik: Seperti yang saya tulis di posting saya, servlets adalah kelas yang beroperasi di dalam wadah servlet. Kontainer servlet dapat menampung beberapa servlet secara bersamaan.
Jon Skeet
5
@Hardik: Ya, persis. Servlet dapat menyediakan HTML untuk menampilkan formulir dan juga bertindak pada pengiriman. Servlet juga dapat digunakan untuk mengimplementasikan layanan web. Mereka dapat digunakan untuk protokol lain selain dari HTTP, tetapi HTTP adalah transportasi yang paling umum ditangani oleh servlets.
Jon Skeet
102

Servlet pada intinya adalah kelas java; yang dapat menangani permintaan HTTP. Biasanya seluk-beluk internal membaca permintaan HTTP dan tanggapan atas kawat diurus oleh wadah seperti Tomcat. Hal ini dilakukan agar sebagai pengembang sisi server Anda dapat fokus pada apa yang harus dilakukan dengan permintaan dan tanggapan HTTP dan tidak perlu repot berurusan dengan kode yang berhubungan dengan jaringan, dll. Wadah akan menangani hal-hal seperti membungkus semuanya dalam sebuah Objek respons HTTP dan kirim ke klien (katakan browser).

Sekarang pertanyaan logis berikutnya untuk ditanyakan adalah siapa yang memutuskan apa yang harus dilakukan wadah? Dan jawabannya adalah; Di dunia Jawa setidaknya dipandu (perhatikan saya tidak menggunakan kata dikendalikan) oleh spesifikasi. Misalnya spesifikasi Servlet (Lihat sumber 2) menentukan apa yang harus dilakukan servlet. Jadi, jika Anda dapat menulis implementasi untuk spesifikasi, selamat Anda baru saja membuat sebuah wadah (Secara teknis wadah seperti Tomcat juga menerapkan spesifikasi lain dan melakukan hal-hal rumit seperti pemuat kelas khusus dll, tetapi Anda mendapatkan ide).

Dengan anggapan Anda memiliki sebuah wadah, servlet Anda sekarang adalah kelas-kelas java yang siklus hidupnya akan dipertahankan oleh wadah tersebut, tetapi reaksi mereka terhadap permintaan HTTP yang masuk akan ditentukan oleh Anda. Anda melakukannya dengan menulis apa yang ingin Anda lakukan dalam metode yang telah ditentukan seperti init (), doGet (), doPost () dll. Lihat Sumber 3.

Ini latihan yang menyenangkan untuk Anda. Buat servlet sederhana seperti di Resource 3 dan tulis beberapa pernyataan System.out.println () dalam metode konstruktornya (Ya, Anda dapat memiliki konstruktor servlet), init (), metode doGet (), doPet (), doPost () dan jalankan servlet di tomcat. Lihat log konsol dan log kucing jantan.

Semoga ini bisa membantu, selamat belajar.

Sumber daya

  1. Lihat bagaimana tampilan HTTP servlet di sini (contoh Tomcat).

  2. Spesifikasi Servlet .

  3. Contoh Servlet sederhana .

  4. Mulai membaca buku online / PDF Ini juga memberi Anda unduh seluruh buku. Mungkin ini akan membantu. jika Anda baru memulai servlets mungkin ada baiknya untuk membaca materi bersama dengan servlet API. ini adalah proses belajar yang lebih lambat, tetapi jauh lebih membantu dalam menjelaskan dasar-dasarnya.

Ayusman
sumber
12
Jawaban khusus tautan tidak disarankan di Stack Overflow, karena sumber daya yang mereka tautkan mungkin tidak tersedia di masa mendatang atau dapat berubah. Pertimbangkan untuk meringkas konten tautan yang relevan dalam jawaban Anda untuk memperbaikinya.
6
@Cupcake menghargai umpan balik konstruktif Anda. Saya mencoba menambahkan daging ke jawabannya. Terima kasih telah membuat komunitas lebih baik.
Ayusman
34

Selain hal-hal di atas, dan hanya untuk menunjukkan jelas ...

Bagi banyak orang hal ini sangat jelas, tetapi bagi seseorang yang terbiasa menulis aplikasi yang baru saja dijalankan dan kemudian berakhir: seorang servlet menghabiskan sebagian besar waktunya untuk tidak melakukan apa-apa ... menunggu untuk dikirim sesuatu, permintaan, dan kemudian menanggapinya . Karena alasan inilah servlet memiliki masa hidup: servital ini diinisialisasi dan kemudian menunggu, merespons apa pun yang dilemparkan padanya, dan kemudian dihancurkan. Yang menyiratkan bahwa ia harus dibuat (dan kemudian dihancurkan) oleh sesuatu yang lain (kerangka kerja), yang dijalankan di utas atau prosesnya sendiri, dan bahwa ia tidak melakukan apa-apa kecuali diminta. Dan juga bahwa, dengan beberapa cara atau lainnya, suatu mekanisme harus dilaksanakan dimana "entitas" ini dapat "mendengarkan" permintaan.

Saya menyarankan agar membaca tentang utas, proses, dan soket akan menjelaskan hal ini: ini sangat berbeda dengan cara fungsi aplikasi "hello world" dasar.

Dapat dikatakan bahwa istilah "server" atau "servlet" sedikit berlebihan. Nama yang lebih rasional dan sederhana mungkin adalah "responden". Alasan pemilihan istilah "server" bersifat historis: pengaturan pertama seperti itu adalah "server file", di mana banyak terminal pengguna / klien akan meminta file tertentu dari mesin pusat, dan file ini kemudian akan "dilayani" "Seperti buku atau sepiring ikan dan keripik.

mike rodent
sumber
1
Apakah salah untuk melihat servlet sebagai analog dengan "controller" dalam kerangka kerja MVC standar?
user2490003
Secara pribadi saya tidak bisa melihat bagaimana analogi itu berlaku. Saya juga cenderung berpikir bahwa orang-orang yang menganggap jawaban saya adalah jawaban yang berguna (membantu menjelaskan hal-hal untuk mereka) mungkin akan bingung dengan saran Anda.
mike rodent
Saya pikir Jawaban ini bermanfaat. Tapi saya juga bertanya-tanya (terlepas dari Jawaban ini, dan sebelum membacanya) pertanyaan yang sama yang diajukan oleh @ user2490003 di atas. Apa perbedaan antara Servlet dan MVC-framework Controller? Mengapa analogi oleh user2490003 tidak berlaku?
cellepo
Pengaturan MVC lebih rumit dan tidak terlalu rumit. Itu tidak selalu melibatkan menunggu input. Dalam mendefinisikan ide dasar pengaturan server-klien, kesederhanaan itulah yang ingin saya tekankan. Lihatlah diagram MVC dasar di sini: en.wikipedia.org/wiki/Model%E2%80%93view%E2%808093controller . Dalam pengaturan klien-server yang sederhana, pengguna hanya berinteraksi dengan klien, bukan dengan dua objek, yaitu tampilan dan pengontrol. Dengan MVC dapat juga ada banyak tampilan, banyak pengontrol dan banyak model. Dan menunggu input tidak (harus) terlibat.
mike rodent
Selain hal di atas, server dapat melayani banyak pengguna, sedangkan tidak ada persyaratan seperti itu dengan pengaturan MVC. Pengaturan MVC milik dunia komputasi klasik, yaitu aplikasi mandiri. Dengan server, kami mengambil langkah pertama kami ke jagat komputasi interaktif. Bukan berarti analoginya 100% salah, lebih dari 90% salah, dan di atas semua itu analogi apa pun tidak ada gunanya jika tidak benar-benar membantu siapa pun atau apa pun dengan cara apa pun. Pengaturan server-klien sangat sederhana karena ide tidak ada yang perlu analogi, apa pun jenisnya , untuk dipahami.
mike rodent
10

Apa itu Servlet?

  • Servlet hanyalah kelas yang merespons jenis permintaan jaringan tertentu - paling umum permintaan HTTP.
  • Pada dasarnya servlet biasanya digunakan untuk mengimplementasikan aplikasi web - tetapi ada juga berbagai kerangka kerja yang beroperasi di atas servlets (misalnya Struts) untuk memberikan abstraksi tingkat yang lebih tinggi daripada tingkat "di sini permintaan HTTP, tulis ke respons HTTP ini" yang digunakan servlets menyediakan.
  • Servlet dijalankan dalam wadah servlet yang menangani sisi jaringan (misalnya menguraikan permintaan HTTP, penanganan koneksi dll). Salah satu wadah servlet open source yang paling terkenal adalah Tomcat.

  • Dalam paradigma permintaan / respons, server web hanya dapat melayani halaman statis untuk klien

  • Untuk melayani halaman dinamis, a kami memerlukan Servlets.
  • Servlet tidak lain adalah program Java
  • Program Java ini tidak memiliki metode utama. Ini hanya memiliki beberapa metode panggilan balik.
  • Bagaimana server web berkomunikasi dengan servlet? Melalui wadah atau mesin Servlet.
  • Servlet hidup dan mati dalam wadah web.
  • Wadah web bertanggung jawab untuk memanggil metode dalam servlet. Ia tahu metode callback apa yang dimiliki Servlet.

Aliran Permintaan

  • Klien mengirimkan permintaan HTTP ke server Web
  • Server web meneruskan permintaan HTTP itu ke wadah web.
  • Karena Servlet tidak dapat memahami HTTP, ini adalah program Java, ia hanya memahami objek, jadi wadah web mengubah permintaan itu menjadi objek permintaan yang valid
  • Wadah web memutar utas untuk setiap permintaan
  • Semua logika bisnis masuk ke dalam metode panggilan balik doGet () atau doPost () di dalam servlets
  • Servlet membangun objek respons Java dan mengirimkannya ke wadah. Itu mengubahnya menjadi respons HTTP lagi untuk mengirimnya ke klien

Bagaimana cara Container mengetahui klien Servlet mana yang telah diminta?

  • Ada file bernama web.xml
  • Ini adalah file master untuk wadah web
  • Anda memiliki informasi tentang servlet dalam file ini-

    • servlets
      • Nama servlet
      • Kelas Servlet
    • pemetaan servlet - jalur seperti / Masuk atau / Pemberitahuan dipetakan di sini di
      • Nama servlet
      • pola url
    • dan seterusnya
  • Setiap servlet di aplikasi web harus memiliki entri ke file ini

  • Jadi pencarian ini terjadi seperti- url-pattern -> servlet-name -> servlet-class

Bagaimana cara "menginstal" Server? * Nah, objek servlet diwarisi dari library- javax.servlet. *. Tomcat dan Spring dapat digunakan untuk memanfaatkan objek-objek ini agar sesuai dengan use case.

Ref- Tonton ini di 1.5x- https://www.youtube.com/watch?v=tkFRGdUgCsE . Ini memiliki penjelasan yang luar biasa.

Sankalp
sumber
1
Tautan ke suatu solusi disambut baik, tetapi harap pastikan jawaban Anda bermanfaat tanpanya: tambahkan konteks di sekitar tautan sehingga sesama pengguna Anda akan mengetahui apa itu dan mengapa ada di sana, lalu kutip bagian yang paling relevan dari halaman yang Anda tuju. menghubungkan kembali jika seandainya halaman target tidak tersedia. Jawaban yang sedikit lebih dari sebuah tautan dapat dihapus.
Mogsdad
1
Perhatikan bahwa dunia telah pindah. Pada tahun 2020 kami menggunakan anotasi pada kode alih-alih file konfigurasi berbasis string pusat dalam XML.
Thorbjørn Ravn Andersen
5

Servlet adalah teknologi sisi server yang digunakan untuk membuat halaman web dinamis dalam aplikasi web. Sebenarnya servlet adalah api yang terdiri dari sekelompok kelas dan antarmuka, yang memiliki beberapa fungsi. Ketika kita menggunakan Servlet API kita dapat menggunakan fungsionalitas yang telah ditentukan dari kelas dan antarmuka servlet.

Siklus Hidup Servlet:

Wadah web mempertahankan siklus hidup instance servlet.

1. Kelas servlet dimuat

2. Contoh Servlet dibuat

3. Metode init () dipanggil

4. metode service () dipanggil

5. menghancurkan () metode yang dipanggil

Ketika permintaan meningkat oleh klien (browser) maka web-container memeriksa apakah servlet sedang berjalan atau tidak jika ya maka itu memanggil metode service () dan memberikan respons ke browser.

Ketika servlet tidak berjalan maka web-container ikuti langkah-langkah berikut ..

1. classloader memuat kelas servlet

2. Instantiates servlet

3. Menginisialisasi servlet

4. masukkan metode layanan ()

setelah melayani permintaan web-container, tunggu waktu tertentu, saat ini jika permintaan datang maka ia memanggil hanya layanan () metode jika tidak disebut menghancurkan () metode ..

Navnath Adsul
sumber
5

Jika Anda pemula, saya pikir tutorial ini dapat memberikan ide dasar tentang Apa Servlet itu ...

Beberapa poin berharga ada di bawah ini dari tautan yang diberikan.

Teknologi Servlet digunakan untuk membuat aplikasi web yang berada di sisi server dan menghasilkan halaman web yang dinamis.

Servlet dapat dijelaskan dalam banyak cara, tergantung pada konteksnya.

  • Servlet adalah teknologi yang digunakan untuk membuat aplikasi web.
  • Servlet adalah API yang menyediakan banyak antarmuka dan kelas termasuk dokumentasi.
  • Servlet adalah antarmuka yang harus diimplementasikan untuk membuat servlet apa pun.
  • Servlet adalah kelas yang memperluas kemampuan server dan menanggapi permintaan yang masuk. Itu dapat menanggapi semua jenis permintaan.
  • Servlet adalah komponen web yang digunakan pada server untuk membuat halaman web yang dinamis. Referensi: Di Sini .
Sandun Madola
sumber
1
Itu adalah tutorial yang sangat bagus yang menjelaskan konsep-konsep dari dasar
Nikhil Sahu
3

Java Servlets adalah modul program Java sisi-server yang memproses dan menjawab permintaan pelanggan dan mengaktualisasikan antarmuka servlet. Ini membantu dalam meningkatkan kegunaan server Web dengan overhead, pemeliharaan, dan dukungan yang dapat diabaikan.

Servlet berfungsi sebagai mediator antara pelanggan dan server. Ketika modul servlet terus berjalan di server, mereka dapat menerima dan bereaksi terhadap permintaan yang dibuat oleh pelanggan. Permintaan dan objek reaksi servlet menawarkan metode yang bermanfaat untuk menangani HTTP meminta dan mengirim informasi konten kembali ke pelanggan.

Karena servlet dikoordinasikan dengan dialek Java, ia juga memiliki semua highlight Java, misalnya, kemampuan bergerak yang tinggi, otonomi panggung, keamanan dan ketersediaan basis data Java.

Poorna Senani Gamage
sumber
2

Servlet adalah kelas java untuk menanggapi permintaan HTTP dan menghasilkan respons HTTP ...... ketika kita membuat halaman dengan menggunakan HTML maka itu akan menjadi halaman statis sehingga untuk membuatnya dinamis kita menggunakan SERVLET {dengan kata sederhana orang dapat memahami} Untuk menggunakan servlet, hal ini disambut oleh JSP, ia menggunakan kode dan tag HTML keduanya dengan sendirinya ..

Roopam
sumber
2

Servlets adalah kelas Java yang menjalankan fungsi tertentu ketika pengguna situs web meminta URL dari server. Fungsi-fungsi ini dapat menyelesaikan tugas-tugas seperti menyimpan data ke database, mengeksekusi logika, dan mengembalikan informasi (seperti data JSON) yang diperlukan untuk memuat halaman.

Sebagian besar program Java menggunakan main()metode yang mengeksekusi kode ketika program sedang berjalan. Servlets Java berisi doGet()dan doPost()metode yang bertindak seperti main()metode tersebut. Fungsi-fungsi ini dieksekusi ketika pengguna membuat GETatau POSTmeminta URL yang dipetakan ke servlet itu. Jadi pengguna dapat memuat halaman untuk GETpermintaan, atau menyimpan data dari POSTpermintaan.

Ketika pengguna mengirim GETatau POSTmeminta, server membaca @WebServletbagian atas dari setiap kelas servlet di direktori Anda untuk memutuskan kelas servlet mana yang harus dihubungi. Sebagai contoh, katakanlah Anda memiliki kelas ChatBox dan ini ada di bagian atas:

@WebServlet("/chat")
public class ChatBox extends HttpServlet {

Ketika seorang pengguna meminta /chatURL, ChatBoxkelas Anda dengan dieksekusi.

kundus
sumber
0

Seperti yang dijelaskan artikel ini , Servlet adalah cara standar untuk memperluas server Java, dan mengakses kemampuannya.

Setiap Servlet dapat dilihat sebagai server kecil (karena itu namanya), yang mendapatkan akses ke permintaan dan respons yang dimodelkan dalam kode Java, bersama dengan data konteks lainnya, seperti Sesi.

Dengan ini di tangan, kode Java dari servlet dapat berinteraksi dengan apa pun yang diperlukan untuk membuat tanggapan, termasuk menyerahkan ke halaman JSP untuk menghasilkan tampilan HTML.

mtyson
sumber
-1

Saya pikir servlet pada dasarnya adalah kelas java yang bertindak sebagai jalan tengah antara permintaan HTTP dan respons HTTP .ervlet juga digunakan untuk membuat halaman web Anda dinamis. Misalkan misalnya jika Anda ingin mengarahkan ulang ke halaman web lain di server maka Anda harus menggunakan servlets. Hal penting lainnya adalah servlet dapat dijalankan di localhost dan juga browser web.

Roopam
sumber
-2

Anda baru saja mendapat jawaban untuk servlet yang normal. Namun, saya ingin membagikan tentang sesuatu tentang Servlet 3.0 kepada Anda

Apa yang pertama merupakan Servlet?

Servlet adalah komponen Web yang dikelola oleh wadah dan menghasilkan konten dinamis. Servlet adalah kelas Java yang dikompilasi ke kode byte yang dapat dimuat secara dinamis ke dan dijalankan oleh server Web atau Java Servlet yang mendukung teknologi.

Servlet 3.0 adalah pembaruan untuk spesifikasi Servlet 2.5 yang ada. Servlet 3.0 diperlukan API dari Platform Java, Enterprise Edition 6. Servlet 3.0 difokuskan pada ekstensibilitas dan web framework pluggability. Servlet 3.0 memberi Anda beberapa ekstensi seperti Kemudahan Pembangunan (EoD), Pluggability, Dukungan Async, dan Peningkatan Keamanan

Kemudahan Pembangunan

Anda dapat mendeklarasikan Server, Filter, Pendengar, Init Params, dan hampir semuanya dapat dikonfigurasi dengan menggunakan anotasi

Pluggability

Anda dapat membuat sub proyek atau modul dengan web-fragment.xml. Ini berarti memungkinkan untuk mengimplementasikan persyaratan fungsional yang dapat dicolokkan secara mandiri.

Dukungan Async

Servlet 3.0 menyediakan kemampuan pemrosesan asinkron, misalnya: Menunggu sumber daya tersedia, Menghasilkan respons secara tidak sinkron.

Peningkatan Keamanan

Dukungan untuk metode keamanan otentikasi, masuk dan keluar server

Saya menemukannya dari Tutorial Java Servlet

David Pham
sumber