Apa perbedaan antara JSF, Servlet dan JSP?

826

Saya punya beberapa pertanyaan. Ini adalah:

  1. Bagaimana JSP dan Servlet terkait satu sama lain?
  2. Apakah JSP semacam Servlet?
  3. Bagaimana JSP dan JSF terkait satu sama lain?
  4. Apakah JSF semacam JSP berbasis Pra-Bangun UI seperti ASP.NET-MVC?
Cheung
sumber
3
Di JSF 2.0+, xml tidak diperlukan.
Divyesh Kanzariya

Jawaban:

1229

JSP (JavaServer Pages)

JSP adalah teknologi tampilan Java yang berjalan pada mesin server yang memungkinkan Anda untuk menulis teks templat dalam bahasa sisi klien (seperti HTML, CSS, JavaScript, dll.). JSP mendukung taglibs , yang didukung oleh potongan kode Java yang memungkinkan Anda mengontrol aliran halaman atau hasil secara dinamis. Taglib yang terkenal adalah JSTL . JSP juga mendukung Bahasa Ekspresi , yang dapat digunakan untuk mengakses data backend (melalui atribut yang tersedia di halaman, permintaan, sesi, dan cakupan aplikasi), sebagian besar dalam kombinasi dengan taglibs.

Ketika JSP diminta untuk pertama kalinya atau saat aplikasi web dijalankan, wadah servlet akan mengkompilasinya ke dalam kelas yang diperluas HttpServletdan menggunakannya selama masa pakai aplikasi web. Anda dapat menemukan kode sumber yang dihasilkan di direktori kerja server. Misalnya Tomcat , itu adalah /workdirektori. Pada permintaan JSP, wadah servlet akan mengeksekusi kelas JSP yang dikompilasi dan mengirimkan output yang dihasilkan (biasanya hanya HTML / CSS / JS) melalui server web melalui jaringan ke sisi klien, yang pada gilirannya menampilkannya di browser web.

Servlets

Servlet adalah antarmuka pemrograman aplikasi Java (API) yang berjalan pada mesin server, yang memotong permintaan yang dibuat oleh klien dan menghasilkan / mengirim respons. Contoh terkenal adalah HttpServletyang menyediakan metode untuk menghubungkan permintaan HTTP menggunakan metode HTTP populer seperti GETdan POST. Anda dapat mengkonfigurasi HttpServlets untuk mendengarkan pola URL HTTP tertentu, yang dapat dikonfigurasi dalam web.xml, atau yang lebih baru dengan Java EE 6 , dengan @WebServletanotasi.

Ketika Servlet pertama kali diminta atau saat memulai aplikasi web, wadah servlet akan membuat instance dan menyimpannya dalam memori selama masa pakai aplikasi web. Contoh yang sama akan digunakan kembali untuk setiap permintaan masuk yang URL-nya cocok dengan pola URL servlet. Anda dapat mengakses data permintaan dengan HttpServletRequestdan menangani respons dengan HttpServletResponse. Kedua objek tersedia sebagai argumen metode di dalam salah satu metode yang ditimpa HttpServlet, seperti doGet()dan doPost().

JSF (JavaServer Faces)

JSF adalah kerangka kerja MVC berbasis komponen yang dibangun di atas Servlet API dan menyediakan komponen melalui taglibs yang dapat digunakan dalam JSP atau teknologi tampilan berbasis Java lainnya seperti Facelet . Faselet jauh lebih cocok untuk JSF daripada JSP. Yaitu memberikan kemampuan templating yang bagus seperti komponen komposit , sementara JSP pada dasarnya hanya menawarkan <jsp:include>untuk templating di JSF, sehingga Anda terpaksa membuat komponen kustom dengan kode Java mentah (yang agak buram dan banyak pekerjaan yang membosankan) saat Anda ingin mengganti kelompok komponen yang berulang dengan satu komponen. Sejak JSF 2.0, JSP telah ditinggalkan sebagai teknologi tampilan yang mendukung Facelet.

Catatan : JSP sendiri TIDAK ditinggalkan, hanya kombinasi JSF dengan JSP sudah ditinggalkan.

Catatan : JSP memiliki kemampuan templating yang hebat melalui Taglibs, terutama varian ( Tag File ). Templat JSP dikombinasikan dengan JSF adalah kekurangan.

Sebagai kerangka kerja MVC ( Model-View-Controller ), JSF menyediakan FacesServletsebagai Pengontrol respons-permintaan tunggal . Dibutuhkan semua pekerjaan permintaan / respons HTTP standar dan membosankan dari tangan Anda, seperti mengumpulkan input pengguna, memvalidasi / mengonversinya, menempatkannya dalam objek model, menjalankan tindakan, dan merender respons. Dengan cara ini Anda pada dasarnya memiliki halaman JSP atau Facelets (XHTML) untuk View dan kelas JavaBean sebagai Model . Komponen JSF digunakan untuk mengikat tampilan dengan model (seperti kontrol web ASP.NET Anda) dan FacesServletmenggunakan pohon komponen JSF untuk melakukan semua pekerjaan.

Pertanyaan-pertanyaan Terkait

BalusC
sumber
8
@Shashank: Tidak sepenuhnya. Hanya <c:forEach>tag dari JSTL. Lihat juga stackoverflow.com/tags/jstl/info
BalusC
1
Iya. <mytag:doesSomething/>tampak seperti tag khusus dan <jsp:attribute>, tag jsp.
Shashank Kadne
3
Karena ini adalah jawaban yang sangat populer, saya ingin menambahkan sedikit yang sangat penting yaitu file tag JSP yang memungkinkan untuk pembuatan tag kustom untuk komposisi halaman dan tata letak tanpa menulis kode Java. Fitur ini sangat berguna dan telah menjadi bagian dari standar selama bertahun-tahun namun masih kurang dimanfaatkan.
jiggy
1
@johnny Facelets telah menjadi teknologi tampilan pilihan sejak Java EE 6 dirilis pada 2009 ( docs.oracle.com/javaee/6/tutorial/doc/giepx.html ). Seperangkat teknologi minimum untuk mengembangkan aplikasi web Java tidak lebih tinggi daripada kebanyakan bahasa lain, tetapi ada lebih banyak pilihan dan pesaing, yang membingungkan bagi pendatang baru. Pengembangan web di Ruby? Pilihan pertama jelas.
DavidS
1
@BalusC +1 untuk penjelasan terperinci. Jawaban favorit saya
Anish B.
84

Lihat http://www.oracle.com/technetwork/java/faq-137059.html

Teknologi JSP adalah bagian dari keluarga teknologi Java. Halaman JSP dikompilasi menjadi servlets dan dapat memanggil komponen JavaBeans (kacang) atau komponen JavaBeans Perusahaan (kacang perusahaan) untuk melakukan pemrosesan pada server. Dengan demikian, teknologi JSP adalah komponen kunci dalam arsitektur yang sangat skalabel untuk aplikasi berbasis web.

Lihat https://jcp.org/en/introduction/faq

A: Teknologi JavaServer Faces adalah kerangka kerja untuk membangun antarmuka pengguna untuk aplikasi web. Teknologi JavaServer Faces meliputi:

Seperangkat API untuk: mewakili komponen UI dan mengelola negara mereka, menangani acara dan validasi input, menentukan navigasi halaman, dan mendukung internasionalisasi dan aksesibilitas.

Pustaka tag JavaServer Pages (JSP) untuk mengekspresikan antarmuka JavaServer Faces dalam halaman JSP.

JSP adalah jenis servlet khusus.

JSF adalah serangkaian tag yang dapat Anda gunakan dengan JSP.

S.Lott
sumber
6
"JSP adalah jenis servlet khusus. JSF adalah serangkaian tag yang dapat Anda gunakan dengan JSP." Pernyataan ini paling menggambarkan hubungan di antara ketiganya!
lfree
34

Dari perspektif Browser / Klien

JSP dan JSF keduanya terlihat sama, Sesuai Per Persyaratan Aplikasi, JSP lebih cocok untuk aplikasi berbasis permintaan-respons.

JSF ditargetkan untuk aplikasi Web berbasis acara yang lebih kaya. Saya melihat acara jauh lebih terperinci daripada permintaan / tanggapan.

Dari Perspektif Server

Halaman JSP dikonversi menjadi servlet, dan hanya memiliki perilaku minimal.

Halaman JSF dikonversi ke pohon komponen (oleh FacesServlet khusus) dan mengikuti siklus hidup komponen yang ditentukan oleh spesifikasi.

Vh24
sumber
23

Servlets:

Java Servlet API memungkinkan pengembang Java untuk menulis kode sisi server untuk mengirimkan konten Web dinamis. Seperti API server Web eksklusif lainnya, Java Servlet API menawarkan peningkatan kinerja dibandingkan CGI; Namun, ia memiliki beberapa keunggulan tambahan utama. Karena servlet diberi kode di Jawa, mereka memberikan pendekatan desain berorientasi objek (OO) dan, yang lebih penting, dapat berjalan pada platform apa pun. Dengan demikian, kode yang sama adalah portabel untuk semua host yang mendukung Java. Servlets berkontribusi besar terhadap popularitas Java, karena menjadi teknologi yang banyak digunakan untuk pengembangan aplikasi Web sisi server.

JSP:

JSP dibangun di atas servlets dan menyediakan solusi berbasis halaman yang lebih sederhana untuk menghasilkan sejumlah besar konten HTML dinamis untuk antarmuka pengguna Web. JavaServer Pages memungkinkan pengembang dan perancang Web untuk mengedit halaman HTML dengan tag khusus untuk bagian Java yang dinamis. JavaServer Pages berfungsi dengan memiliki servlet khusus yang dikenal sebagai wadah JSP, yang diinstal pada server Web dan menangani semua permintaan tampilan halaman JSP. Kontainer JSP menerjemahkan JSP yang diminta ke dalam kode servlet yang kemudian dikompilasi dan segera dieksekusi. Permintaan selanjutnya ke halaman yang sama cukup memanggil servime servlet untuk halaman tersebut. Jika perubahan dilakukan ke JSP di server, permintaan untuk melihatnya memicu terjemahan lain, kompilasi, dan restart dari runtime servlet.

JSF:

JavaServer Faces adalah kerangka kerja Java standar untuk membangun antarmuka pengguna untuk aplikasi Web. Yang paling penting, ini menyederhanakan pengembangan antarmuka pengguna, yang seringkali merupakan salah satu bagian yang lebih sulit dan membosankan dalam pengembangan aplikasi Web.
Meskipun dimungkinkan untuk membangun antarmuka pengguna dengan menggunakan teknologi Java Web yang mendasar (seperti Java servlets dan JavaServer Pages) tanpa kerangka kerja komprehensif yang dirancang untuk pengembangan aplikasi Web perusahaan, teknologi inti ini seringkali dapat mengarah pada berbagai masalah pengembangan dan pemeliharaan. Lebih penting lagi, pada saat pengembang mencapai solusi kualitas produksi, masalah yang sama yang dipecahkan oleh JSF akan diselesaikan dengan cara yang tidak standar. JavaServer Faces dirancang untuk menyederhanakan pengembangan antarmuka pengguna untuk aplikasi Java Web dengan cara-cara berikut:
• JavaServer Faces menyediakan pendekatan pengembangan komponen-sentris, independen klien untuk membangun antarmuka pengguna Web, sehingga meningkatkan produktivitas pengembang dan kemudahan penggunaan.
• Ini menyederhanakan akses dan pengelolaan data aplikasi dari antarmuka pengguna Web.
• Secara otomatis mengelola keadaan antarmuka pengguna antara beberapa permintaan dan banyak klien dengan cara yang sederhana dan tidak mengganggu.
• Ini memasok kerangka kerja pengembangan yang ramah bagi audiens pengembang yang beragam dengan berbagai keterampilan.
• Ini menggambarkan sekumpulan pola arsitektur standar untuk aplikasi web.

[ Sumber: Referensi lengkap: JSF ]

Kishor Prakash
sumber
3
Itu bukan saya, tapi saya bayangkan itu karena pada dasarnya Anda hanya menyalin dan menempelkan jawaban dari sebuah buku.
mawburn
7
@Oberon: Terima kasih atas jawabannya. Butuh beberapa saat bagi saya untuk menemukan kata-kata yang tepat sehingga pergi untuk buku. Jika tidak sesuai, maka Anda atau siapa pun dapat menyarankan saya untuk mencatat jawabannya. Saya akan senang melakukannya.
Kishor Prakash
18

Ada juga situasi di mana Anda dapat memilih JSP daripada JSF. Sifat aplikasi harus menjadi faktor penentu untuk memilih teknologi.

Jika Anda memiliki interaksi GUI yang kaya dan banyak skrip Java yang diperlukan, maka nikmatilah JSF. Pada dasarnya jika arsitektur aplikasi GUI Anda seperti Komponen berorientasi & bahkan didorong seperti Swing maka JSF adalah yang terbaik.

Jika aplikasi hanya mengirimkan formulir biasa, tidak banyak interaksi GUI yang diperlukan, maka JSP bisa melakukannya dengan baik jika mempelajari teknologi baru adalah overhead dan juga kerangka kerja kompleks tidak diperlukan.

Karthi
sumber
13

Servlet - ini lapisan sisi server java.

  • JSP - Servlet dengan html
  • JSF - komponennya berdasarkan tag libs
  • JSP - dikonversi menjadi servlet sekali ketika server mendapat permintaan.
berkotek
sumber
2
JSP dikonversi menjadi servlet sekali ketika server mendapat permintaan.
berkotek
... ketika server mendapat permintaan PERTAMA. Caching pikiran.
dbalakirev
10

itu benar bahwa JSP diubah menjadi servlet pada saat eksekusi, dan JSF adalah hal yang sama sekali baru untuk membuat halaman web lebih mudah dibaca karena JSF memungkinkan untuk menulis semua struktur pemrograman dalam bentuk tag.

mahesh
sumber
6

Perbedaan mendasar antara Servlets dan JSP adalah bahwa dalam Servlets kita menulis kode java dan bahwa kita menanamkan kode HTML dan hanya ada case terbalik dengan JSP. Di JSP kami menulis kode HTML dan kami menyematkan kode java menggunakan tag yang disediakan oleh JSP.

pengguna3608245
sumber
5

Java Server Pages (JSP) adalah teknologi java yang memungkinkan pengembang dan perancang Web untuk dengan cepat mengembangkan dan memelihara halaman web dinamis yang kaya informasi dan informasi yang memanfaatkan sistem bisnis yang ada. Teknologi JSP memisahkan antarmuka pengguna dari pembuatan konten, memungkinkan desainer untuk mengubah tata letak halaman secara keseluruhan tanpa mengubah konten dinamis yang mendasarinya.

Facelets adalah bahasa deklarasi halaman non JSP pertama yang dirancang untuk JSF (Java Server Faces) yang memberikan model pemrograman yang lebih sederhana dan lebih kuat untuk pengembang JSF dibandingkan dengan JSP. Ini mengatasi berbagai masalah yang terjadi di JSP untuk pengembangan aplikasi web.

Berikut adalah tabel yang membandingkan fitur-fitur dari skrip dan facelet:

masukkan deskripsi gambar di sini Sumber

Yster
sumber
0
JSP:means HTML+Java Code:

JSP memiliki siklus hidup sendiri jsp_init () jsp_service () jsp_destroy

Setelah permintaan JSP pertama dikonversi ke file .java. Ada tiga jenis tag yang kami gunakan
1.) Scriptless

<%  %>

Di sini pengembang dapat menyatakan semua hal yang ingin diambil oleh pengembang

2.) Tag ekspresi

<%=  %>

Di sini pengembang dapat menggunakan beberapa data terkait cetak

3.) Deklarasi

<!% %>

Di sini pengembang dapat mendeklarasikan beberapa metode terkait data.

Servlet:

Servlet memiliki siklus hidupnya sendiri.

init()
service()
destroy()

Setelah wadah permintaan pertama akan membaca data dari file web.xml kemudian setelah isi selamat datang akan ditampilkan.
Sekarang dan seterusnya setelah melakukan tindakan itu akan mencari url dan setelah proses ini akan mencari servlet tertentu di sana itu sendiri. operasi layanan akan dilakukan.

JSF:

JSF memilikinya sendiri ui dan siklus hidupnya dapat tampil dalam enam cara,

A)Restore view phase
B)Apply request values phase
C)Process validations phase
D)Update model values phase
E)Invoke application phase
F)Render response phase

Untuk ui di sini untuk tabel di sini kita menggunakan panel grid dan ada wajah yang berbeda untuk ini.

Rich Faces
Prime Faces.
Ankit
sumber
-1

JSP adalah komponen View dari MVC (Model View Controller). Pengendali mengambil permintaan yang masuk dan meneruskannya ke Model, yang mungkin merupakan kacang yang melakukan beberapa akses database. JSP kemudian memformat output menggunakan HTML, CSS dan JavaScript, dan hasilnya kemudian dikirim kembali ke pemohon.

metrangia
sumber
-1

JSF adalah kerangka kerja tingkat lanjut di mana arsitekturnya yang sangat mudah untuk mengimplementasikan Model-View-Controller (MVC) untuk proyek. Keunggulan utama JSF dibandingkan JSP adalah kemudahan rendering dinamis komponen pada browser berdasarkan kondisi dan integrasi yang mudah dari peristiwa ajax.

Ujung depan aplikasi JSF yaitu file xhtml adalah yang ditunjukkan kepada pengguna melalui browser. File-file xhtml ini secara internal memanggil kacang yang dikelola misalnya pengendali di mana logika aplikasi aktual ditulis.

Kontroler secara internal memanggil berbagai layanan yang berkomunikasi dengan basis data (menggunakan Hibernate atau JPA API). Ini adalah bagaimana aliran terjadi secara singkat.

JSF juga digunakan dalam kombinasi dengan RichFaces yang merupakan kerangka kerja untuk memberikan tampilan dan nuansa yang kaya untuk aplikasi web Anda.

JSF + RichFaces + Hibernate / JPA adalah teknologi yang bagus untuk belajar!

Nikhil
sumber
-2

Jsp juga memiliki kode servlet bawaan yang tidak memerlukan kompilasi eksternal yang dapat dijalankan secara langsung. Perubahan akan berlaku di jsp langsung di browser.

Servlet perlu dikompilasi (yaitu akan memiliki penciptaan kelas khusus)

Jsf adalah komponen tampilan dari MVC Framework

Mahender Reddy Yasa
sumber
-2

JSP adalah singkatan dari JAVA SERVER PAGE ........ jsp bukan servlet. Jsp menggunakan kode dan tag HTML, Anda tidak perlu membuat HTML dan servlet secara terpisah. JSP memainkan peran luar biasa dalam aplikasi web. Servlet adalah kelas java yang berperan untuk membuat halaman HTML Anda dari statis menjadi dinamis.

Roopam
sumber
2
JSP memang dikonversi menjadi komponen Servlet. "JSP diterjemahkan ke dalam servlet saat runtime". Sumber: en.wikipedia.org/wiki/JavaServer_Pages
dbalakirev
-2

Servlets adalah program java sisi server yang dijalankan di dalam wadah web. Tujuan utama servlet adalah untuk memproses permintaan yang diterima dari klien.

Java Server Pages digunakan untuk membuat halaman web yang dinamis. Jsp diperkenalkan untuk menulis kode java plus html dalam satu file yang tidak mudah dilakukan dalam program servlets. Dan file jsp dikonversi ke java servlet ketika diterjemahkan.

Java Server Faces adalah kerangka kerja MVC web yang menyederhanakan pengembangan UI.

Hetal Rachh
sumber