Siklus Hidup JSP: Fase & Diagram yang Dijelaskan
โก Ringkasan Cerdas
Siklus Hidup JSP menjelaskan bagaimana sebuah kontainer menerjemahkan halaman menjadi servlet, mengompilasinya, memuat kelas, membuat instance, menginisialisasinya, melayani setiap permintaan melalui metode layanan yang dihasilkan, dan akhirnya menghancurkannya.

Apa itu Siklus Hidup JSP?
Siklus Hidup JSP Siklus hidup JSP didefinisikan sebagai penerjemahan halaman JSP ke dalam servlet, karena halaman JSP harus dikonversi menjadi servlet sebelum dapat memproses permintaan layanan. Siklus hidup dimulai dengan pembuatan JSP dan berakhir dengan penghancuran instance servlet yang dihasilkan darinya.
Karena kelas yang dihasilkan adalah servlet biasa, semua yang sudah Anda ketahui tentang servlet akan tetap berlaku.tracItu masih berlaku. Itu Java Kode yang ditulis oleh container itulah yang sebenarnya dijalankan; file JSP hanyalah kode sumber yang Anda kelola.
Berbagai Fase Siklus Hidup JSP
Ketika browser meminta JSP, mesin JSP pertama-tama memeriksa apakah perlu mengkompilasi halaman tersebut. Jika JSP belum pernah dikompilasi, atau jika telah dimodifikasi sejak kompilasi terakhir, maka mesin JSP akan mengkompilasi halaman tersebut.
Proses kompilasi halaman JSP melibatkan tiga langkah:
- Penguraian JSP
- Mengubah JSP menjadi servlet
- Mengompilasi servlet
Diagram Siklus Hidup JSP
Siklus hidup JSP digambarkan dalam diagram di bawah ini, yang tracIni adalah satu halaman tunggal dari file sumber hingga ke kelas yang dieksekusi oleh kontainer.
Langkah-langkah berikut menjelaskan siklus hidup JSP:
- Terjemahan halaman JSP
- Kompilasi halaman JSP (kompilasi halaman JSP ke dalam _jsp.java)
- Pemuatan kelas (_jsp.java dikonversi menjadi file kelas _jsp.class)
- Instansiasi (sebuah objek dari servlet yang dihasilkan dibuat)
- Inisialisasi (metode jspInit() dipanggil oleh kontainer)
- Pemrosesan Permintaan (metode _jspService() dipanggil oleh kontainer)
- Hancurkan (metode jspDestroy() dipanggil oleh kontainer)
Tahapan-tahapan Siklus Hidup JSP Dijelaskan
Mari kita bahas setiap poin di atas secara lebih rinci.
1) Terjemahan Halaman JSP:
A Java File servlet dihasilkan dari file sumber JSP. Ini adalah langkah pertama dari siklus hidup JSP. Pada fase penerjemahan, kontainer memvalidasi kebenaran sintaksis dari file halaman dan tag JSP.
- Kontainer JSP menginterpretasikan arahan dan tindakan standar, serta tindakan khusus yang merujuk pada pustaka tag (semuanya merupakan bagian dari halaman JSP dan dibahas dalam elemen JSP tutorial) yang digunakan di halaman JSP ini.
- Dalam deskripsi bergambar di atas, demo.jsp diterjemahkan menjadi demo_jsp.java pada langkah pertama.
Mari kita ambil contoh โdemo.jspโ seperti yang ditunjukkan di bawah ini:
Demo.jsp
<html>
<head>
<title>Demo JSP</title>
</head>
<%
int demvar=0;%>
<body>
Count is:
<% Out.println(demovar++); %>
<body>
</html>
Catatan pada daftar di atas: Kode tersebut direproduksi persis seperti yang diterbitkan agar sesuai dengan tangkapan layar servlet yang dihasilkan berikut ini. Dua kesalahan ejaan di dalamnya tidak akan dapat dikompilasi jika disalin kata demi kata โ variabel tersebut dideklarasikan sebagai demvar tetapi dicetak sebagai demovar, dan objek keluaran implisitnya adalah out dalam huruf kecil, bukan OutPerbaiki keduanya sebelum menjalankan halaman tersebut sendiri.
Code Penjelasan untuk Demo.jsp
Code Baris 1: tag pembuka html
Code Baris 2: Label kepala
Code Baris 3 โ 4: Tag judul, misalnya Demo JSP, dan tag penutup head.
Code Baris 5 โ 6: Tag scriptlet tempat variabel demo diinisialisasi
Code Baris 7 โ 8: Di dalam tag body, teks yang akan dicetak di output (Jumlahnya adalah: )
Code Baris 9: Tag scriptlet tempat kita mencoba mencetak variabel demovar dengan nilai yang telah ditambah.
Code Baris 10 โ 11: Tag body dan HTML ditutup
Halaman Demo JSP dikonversi menjadi servlet demo_jsp seperti yang ditunjukkan pada kode di bawah ini.
Code penjelasan untuk Demo_jsp.java
Code Baris 1: Kelas Servlet demo_jsp memperluas kelas induk HttpServlet
Code Baris 2 โ 3: Mengganti metode layanan JSP, yaitu _jspService, yang memiliki objek HttpServletRequest dan HttpServletResponse sebagai parameternya.
Code Baris 4: Metode pembukaan
Code Baris 5: Memanggil metode getWriter() dari objek respons untuk mendapatkan PrintWriter objek (mencetak representasi objek yang diformat ke aliran keluaran teks)
Code Baris 6: Memanggil metode setContentType dari objek respons untuk mengatur tipe konten.
Code Baris 7: Menggunakan metode write() dari PrintWriter objek untuk mengurai html
Code Baris 8: Menginisialisasi variabel demovar ke 0
Code Baris 9: Memanggil metode write() dari PrintWriter objek untuk menguraikan teks
Code Baris 10: Memanggil metode print() dari PrintWriter Objek ini digunakan untuk menaikkan nilai variabel demovar dari 0 + 1 = 1. Oleh karena itu, outputnya adalah 1.
Code Baris 11: Menggunakan metode write() dari PrintWriter objek untuk mengurai html
Keluaran:
Browser kemudian menampilkan penghitung tersebut, seperti yang ditunjukkan pada tangkapan layar di bawah ini.
- Di sini Anda dapat melihat bahwa pada tangkapan layar, outputnya adalah 1, karena demvar diinisialisasi ke 0 dan kemudian ditambah menjadi 0 + 1 = 1.
Dalam contoh di atas,
- demo.jsp adalah JSP tempat satu variabel diinisialisasi dan ditingkatkan nilainya. JSP ini dikonversi menjadi servlet (demo_jsp.class) di mana mesin JSP memuat halaman JSP dan mengonversinya menjadi konten servlet.
- Saat konversi terjadi, semua teks template dikonversi menjadi pernyataan println() dan semua elemen JSP dikonversi menjadi Java kode.
Ini adalah bagaimana halaman JSP sederhana diterjemahkan ke dalam kelas servlet.
2) Kompilasi Halaman JSP
- Yang dihasilkan Java berkas servlet dikompilasi menjadi sebuah Java kelas servlet
- Terjemahan dari Java Konversi halaman sumber ke kelas implementasinya dapat terjadi kapan saja antara penyebaran halaman JSP ke dalam kontainer dan pemrosesan halaman JSP.
- Dalam deskripsi bergambar di atas, demo_jsp.java dikompilasi menjadi file kelas demo_jsp.class.
- Pada Apache Tomcat, kedua artefak tersebut ditulis di bawah direktori kerja server, di
work/Catalina/localhost/<app>/org/apache/jsp, yang merupakan tempat pertama yang harus dilihat ketika kesalahan penerjemahan perlu didiagnosis.
3) Pemuatan kelas
- Kelas servlet yang telah dihasilkan dari sumber JSP sekarang dimuat ke dalam kontainer.
4) Instansiasi
- Pada langkah ini, objek, yaitu instance dari kelas tersebut, dihasilkan.
- Container mengelola satu atau lebih instance dari kelas ini sebagai respons terhadap permintaan dan peristiwa lainnya. Biasanya, container JSP dibangun menggunakan container servlet. Container JSP merupakan perluasan dari container servlet, karena kedua container tersebut mendukung JSP dan servlet.
- Antarmuka JspPage, yang disediakan oleh container, mendeklarasikan metode jspInit() dan jspDestroy().
- Terdapat sebuah antarmuka HttpJspPage yang melayani permintaan HTTP, dan antarmuka ini juga berisi metode layanan. Tanda tangan metode tersebut bergantung pada protokol yang digunakan, oleh karena itu kontainer akan menghasilkan metode tersebut alih-alih meminta penulis halaman untuk mendeklarasikannya.
5) Inisialisasi
public void jspInit() { //initializing the code }
- Metode jspInit() menginisialisasi instance servlet yang dihasilkan dari JSP, dan dipanggil oleh container pada fase ini.
- Setelah instance dibuat, metode init akan dipanggil segera setelah itu.
- Fungsi ini hanya dipanggil sekali selama siklus hidup JSP, dan metode untuk inisialisasi dideklarasikan seperti yang ditunjukkan di atas.
6) Pemrosesan Permintaan
void _jspservice(HttpServletRequest request HttpServletResponse response) { //handling all request and responses }
- Metode _jspService() dipanggil oleh container untuk semua permintaan yang diajukan oleh halaman JSP selama siklus hidupnya.
- Untuk fase ini, halaman harus melalui semua fase di atas, dan barulah metode layanan dapat dipanggil.
- Ia meneruskan objek permintaan dan respons.
- Metode ini tidak dapat ditimpa, karena kontainer menuliskannya selama proses penerjemahan.
- Metode tersebut ditunjukkan di atas. Metode ini bertanggung jawab untuk menangani semua metode HTTP, yaitu GET, POST, dan lainnya.
7) Hancurkan
public void _jspdestroy() { //all clean up code }
- Metode jspDestroy() juga dipanggil oleh container.
- Metode ini dipanggil ketika container memutuskan bahwa ia tidak lagi membutuhkan instance servlet untuk melayani permintaan.
- Setelah metode destroy dipanggil, servlet siap untuk pengumpulan sampah (garbage collection).
- Ini adalah akhir dari siklus hidup.
- Kita dapat menimpa metode jspDestroy() ketika melakukan pembersihan apa pun, seperti melepaskan koneksi basis data atau menutup file yang terbuka.
Satu catatan penamaan yang perlu diperhatikan: mulai dari Jakarta EE 9 dan seterusnya, tipe-tipe ini berada di... jakarta.servlet.jsp paket daripada javax.servlet.jspOleh karena itu, impor yang lebih lama harus diperbarui ketika aplikasi dipindahkan ke server yang lebih baru.



