Tutorial ini atas nama Wawan Chahyo Nugroho (NIM: 12131294), dibuat dalam rangka memenuhi Tugas Akhir dan UAS Mata Kuliah Pemrograman Jaringan, yang dibimbing oleh Bp. Untung Subagyo, S.Kom

Mengenal Java Servlet dan JSP
1. Teknologi Java Servlet
Begitu web mulai digunakan untuk memberikan layanan, penyedia layanan menyadari akan kebutuhan konten dinamis. Applet merupakan salah satu upaya awal untuk mencapai tujuan ini, berfokus pada penggunaan platform klien untuk memberikan pengalaman pengguna yang dinamis. Pada saat yang sama, pengembang juga menyelidiki penggunaan platform server untuk tujuan ini. Awalnya adalah skrip Common Gateway Interface (CGI) sebagai teknologi utama yang digunakan untuk menghasilkan konten dinamis. Meski banyak digunakan, teknologi scripting CGI memiliki beberapa kekurangan, diantaranya seperti ketergantungan platform dan kurangnya skalabilitas. Untuk mengatasi keterbatasan ini, teknologi Java Servlet diciptakan sebagai cara portabel untuk menyediakan konten yang dinamis dan berorientasi pengguna.
2. Apa itu servlet
Servlet adalah class bahasa pemrograman Java yang digunakan untuk memperluas kemampuan server dalam meng-host sebuah aplikasi yang diakses menggunakan model pemrograman request-response. Meskipun servlet dapat merespons semua jenis permintaan, namun biasanya digunakan untuk memperluas aplikasi yang di-host oleh web server. Untuk aplikasi seperti itu, teknologi Java Servlet mendefinisikan HTTP berupa class - class servlet yang lebih spesifik.
Paket javax.servlet dan javax.servlet.http menyediakan antarmuka dan class untuk menulis servlet. Semua servlet harus mengimplementasikan antarmuka Servlet, yang mendefinisikan life-cycle methods. Saat menerapkan layanan generik, Anda dapat menggunakan atau memperpanjang class GenericServlet yang disertakan dengan Java Servlet API. Class HttpServlet menyediakan method seperti doGet dan doPost, untuk menangani layanan HTTP-specific.
3. Teknologi JavaServer Pages (JSP)
Teknologi JavaServer Pages (JSP) memungkinkan Anda membuat konten web dengan mudah yang memiliki komponen statis dan dinamis. Teknologi JSP menyediakan semua fungsionalitas / kemampuan dinamis dari teknologi Java Servlet namun memberikan pendekatan yang lebih alami untuk menciptakan konten statis.
Fitur utama teknologi JSP adalah sebagai berikut:
- Bahasa untuk mengembangkan halaman JSP, yaitu dokumen berbasis teks yang menjelaskan bagaimana memproses request dan membangun sebuah response.
- Bahasa ekspresi untuk mengakses objek server-side, seperti jstl, dll.
- Mekanisme untuk menentukan ekstensi ke bahasa JSP.
Teknologi JSP juga berisi API yang digunakan oleh pengembang web containers, namun API ini tidak tercakup dalam tutorial ini.
Halaman JSP terdiri dari tag HTML dan tag JSP. Halaman jsp lebih mudah dikelola daripada servlet karena kita dapat memisahkan perancangan dan pengembangan. Ini menyediakan beberapa fitur tambahan seperti Expression Language, Custom Tag dll.
4. Servlet Vs JSP
Seperti JSP, Servlets juga digunakan untuk menghasilkan halaman web dinamis, namun keduanya juga memiliki perbedaan paling mendasar yaitu servlet menambahkan kode HTML di dalam java, sementara JSP menambahkan kode java di dalam HTML. Tidak hanya itu, masih ada beberapa poin mencolok lainnya, seperti:
Servlets
- Servlet adalah program Java yang mendukung tag HTML juga.
- Umumnya digunakan untuk mengembangkan lapisan bisnis (computational code yang kompleks) dari aplikasi perusahaan.
- Servlets diciptakan dan dikelola oleh pengembang Java.
JSP
- Program JSP adalah kode HTML yang juga mendukung statement java. Agar lebih presisi, JSP menanamkan java di html menggunakan tag JSP.
- Digunakan untuk mengembangkan layer presentasi aplikasi enterprise.
- Sering digunakan untuk merancang situs web dan digunakan oleh pengembang web.
5. Life Cycle Halaman JSP
Berikut ini adalah fase yang dilalui halaman JSP:
- Translation of JSP Page / Penerjemahan halaman JSP
- Compilation of JSP Page / Kompilasi halaman JSP
- Classloading (file class dimuat oleh classloader)
- Instantiation / Instansiasi (Obyek dibangkitkan / digenerate oleh Servlet)
- Initialization (method jspInit() dipanggil oleh container)
- Reqeust processing (method _jspService() dipanggil oleh container).
- Destroy (method jspDestroy() dipanggil oleh container).

Life Cycle Halaman JSP
Seperti pada gambar di atas, halaman JSP diterjemahkan ke dalam servlet dengan bantuan penerjemah JSP. Penerjemah JSP adalah bagian dari web server yang bertanggung jawab untuk menerjemahkan halaman JSP ke servlet. Setelah halaman Servlet dikompilasi oleh compiler dan diubah menjadi file class, berikutnya semua proses yang terjadi di servlet dilakukan diatas JSP layaknya inisialisasi, melakukan respon terhadap browser dan menghancurkannya.
6. Contoh Aplikasi Web Sederhana Menggunakan Servlet dan JSP
Di sini, akan kami tunjukan bagaimana sebuah aplikasi web sederhana menggunakan Servlet dan JSP. Di mana membuat form login di halaman JSP dan membuat validasinya di halaman Servlet, kemudian menampilkan responya dari mana saja (baik via Servlet maupun via JSP).
Environment yang diperlukan:
- NetBeans IDE 8 (JDK 8 Ready)
- GlassFish Server.
Saya harap kedua tools tersebut sudah Anda siapkan, atau barangkali ada yang belum tahu bagaimana mendapatkan GlassFish Server, berkut saya tunjukan:
1. Open NetBeans IDE
2. Klik tools pada menu toolbar → klik Servers → Add Server,

GlassFish Plugin belum tersedia
3. Jika muncul notifikasi seperti di atas, maka close saja notifikasi dan jendela Servers.
4. Klik tools pada menu toolbar → klik Plugins → klik tabulasi Available Plugins.
5. Ketik "GlassFish" di Search Box.

Install Java EE Base (included GlassFish)
6. Centang Java EE Base → klik Install, dan tunggu sampai proses completed.

Verifikasi Sertifikat
7. Akan tampil dialog verifikasi sertifikat → klik Continue.

Instalasi Completed!
8. Klik Restart IDE Now → klik Finish.
9. Ulangi langkah 1 & 2 → klik GlassFish Server → klik next.

GlassFish Server

Download GlassFish Server
10. Pilih Local Domain → Centang pernyataan telah membaca dan menyetujui lisensi → klik Download.
Demo
https://youtu.be/RPsoLYsYfms
Referensi