JSF, Servlet ve JSP arasındaki fark nedir?


826

Birkaç sorum var. Bunlar :

  1. JSP ve Servlet birbirleriyle nasıl ilişkilidir?
  2. JSP bir çeşit Servlet mi?
  3. JSP ve JSF birbirleriyle nasıl ilişkilidir?
  4. JSF ASP.NET-MVC gibi bir çeşit Pre-Build UI tabanlı JSP mi?

3
JSF 2.0+ sürümlerinde xml gerekli değildir.
Divyesh Kanzariya

Yanıtlar:


1229

JSP (JavaServer Sayfaları)

JSP, sunucu makinesinde çalışan ve istemci tarafı dillerinde (HTML, CSS, JavaScript, vb.) Şablon metni yazmanıza izin veren bir Java görünüm teknolojisidir . JSP , sayfa akışını veya çıktısını dinamik olarak kontrol etmenizi sağlayan Java kodu parçalarıyla desteklenen taglibs'i destekler . İyi bilinen bir taglib JSTL'dir . JSP ayrıca arka uç verilerine (sayfa, istek, oturum ve uygulama kapsamlarında bulunan öznitelikler aracılığıyla) çoğunlukla taglibs ile birlikte erişmek için kullanılabilecek İfade Dilini destekler .

İlk kez bir JSP istendiğinde veya web uygulaması başlatıldığında, sunucu uygulaması kapsayıcısı onu genişleten bir sınıfa derler HttpServletve web uygulamasının ömrü boyunca kullanır. Oluşturulan kaynak kodunu sunucunun çalışma dizininde bulabilirsiniz. Örneğin Tomcat , /workdizin. Bir JSP isteğinde, sunucu uygulaması kapsayıcısı derlenmiş JSP sınıfını yürütür ve oluşturulan çıktıyı (genellikle yalnızca HTML / CSS / JS) ağ sunucusu üzerinden istemci tarafına gönderir ve bu da onu web tarayıcısında görüntüler.

Servlet

Servlet, istemci tarafından yapılan istekleri engelleyen ve bir yanıt oluşturan / gönderen sunucu makinesinde çalışan bir Java uygulama programlama arabirimidir (API) . Çok iyi bilinen bir örnek HttpServletyöntemler sağlar ki üzerine bağlamak için , HTTP popüler kullanılarak istekleri HTTP yöntemlerini gibi GETve POST. Sen yapılandırabilirsiniz HttpServletyapılandırılabilir in olduğu belli HTTP URL modeliyle dinlemek s web.xmldaha yakın olan veya Java EE 6 ile, @WebServletaçıklama.

Bir Sunucu Uygulaması ilk kez istendiğinde veya web uygulaması başlatılırken, sunucu uygulaması kapsayıcısı bunun bir örneğini oluşturur ve web uygulamasının ömrü boyunca bellekte tutar. URL'si sunucu uygulamasının URL modeliyle eşleşen her gelen istek için aynı örnek yeniden kullanılacaktır. İstek verilerine ile erişebilir HttpServletRequestve yanıtı işleyebilirsiniz HttpServletResponse. Her iki nesne, ve HttpServletgibi geçersiz kılınan yöntemlerin herhangi birinde yöntem bağımsız değişkenleri olarak kullanılabilir .doGet()doPost()

JSF (JavaServer Yüzleri)

JSF, Servlet API'sının üzerine kurulmuş ve JSP'de veya Facelets gibi herhangi bir Java tabanlı görünüm teknolojisinde kullanılabilen taglibs aracılığıyla bileşenler sağlayan bileşen tabanlı bir MVC çerçevesidir . Facelets, JSF için JSP'den çok daha uygundur. Kompozit bileşenler gibi mükemmel şablonlama özellikleri sağlarken, JSP temelde sadece JSF'de şablonlama için sunar , böylece ham Java koduyla (biraz opak ve çok sıkıcı bir çalışma olan) özel bileşenler oluşturmak zorunda kalırsınız. tekrarlanan bir bileşen grubunu tek bir bileşenle değiştirmek istiyorsunuz. JSF 2.0'dan beri JSP, Facelets lehine görünüm teknolojisi olarak kullanımdan kaldırıldı. <jsp:include>

Not : JSP'nin kendisi kullanımdan kaldırılmamıştır, sadece JSF ile JSP kombinasyonu kullanımdan kaldırılmıştır.

Not : JSP, Taglibs, özellikle ( Tag File ) varyantı aracılığıyla mükemmel şablon oluşturma yeteneklerine sahiptir . JSF ile birlikte JSP şablonlaması eksik olan şeydir.

Bir MVC ( Model-View-Controller ) çerçevesi olan JSF FacesServlet, tek istek-yanıt Denetleyici olarak sağlar . Kullanıcı girişini toplama, doğrulama / dönüştürme, model nesnelerine koyma, eylemleri çağırma ve yanıtı oluşturma gibi tüm standart ve sıkıcı HTTP istek / yanıt işlerini elinizden alır. Bu şekilde temel olarak Görünüm için bir JSP veya Facelets (XHTML) sayfası ve Model olarak bir JavaBean sınıfı elde edersiniz . JSF bileşenleri, görünümü modele (ASP.NET web denetiminizin yaptığı gibi) bağlamak için kullanılır ve tüm işi yapmak FacesServletiçin JSF bileşen ağacını kullanır .

İlgili sorular


8
@Shashank: Tamamen değil. Yalnızca <c:forEach>etiket JSTL'den. Ayrıca bkz. Stackoverflow.com/tags/jstl/info
BalusC

1
Evet. <mytag:doesSomething/>özel bir etikete ve <jsp:attribute>bir jsp etiketine benziyor .
Shashank Kadne

3
Bu çok popüler bir cevap olduğu için, Java kodu yazmadan sayfa kompozisyonu ve düzeni için özel etiket oluşturmaya izin veren JSP etiket dosyaları olan çok önemli bir bit eklemek istiyorum . Bu özellik son derece yararlıdır ve yıllardır standardın bir parçası olmuştur, ancak yeterince kullanılmamıştır.
jiggy

1
@johnny Facelets, Java EE 6'nın 2009'da piyasaya sürülmesinden bu yana tercih edilen görüntüleme teknolojisi olmuştur ( docs.oracle.com/javaee/6/tutorial/doc/giepx.html ). Java web uygulamaları geliştirmek için minimum teknoloji seti diğer dillerden daha yüksek değildir, ancak yeni gelenler için kafa karıştırıcı olan daha fazla seçenek ve rakip vardır. Ruby'de web geliştirme? İlk seçim açıktır.
DavidS

1
Ayrıntılı bir açıklama için @BalusC +1. En sevdiğim cevap.
Anish B.

84

Bkz. Http://www.oracle.com/technetwork/java/faq-137059.html

JSP teknolojisi, Java teknolojisi ailesinin bir parçasıdır. JSP sayfaları sunucu uygulamasında derlenir ve sunucuda işlem yapmak için JavaBeans bileşenlerini (fasulye) veya Enterprise JavaBeans bileşenlerini (kurumsal fasulye) çağırabilir. Bu nedenle JSP teknolojisi, web tabanlı uygulamalar için yüksek düzeyde ölçeklenebilir bir mimaride önemli bir bileşendir.

Bkz. Https://jcp.org/en/introduction/faq

C: JavaServer Faces teknolojisi, web uygulamaları için kullanıcı arabirimleri oluşturmak için bir çerçevedir. JavaServer Faces teknolojisi şunları içerir:

Bir dizi API: UI bileşenlerini temsil etme ve durumlarını yönetme, olayları ve giriş doğrulamayı yönetme, sayfada gezinmeyi tanımlama ve uluslararasılaştırmayı ve erişilebilirliği destekleme.

Bir JSP sayfasındaki JavaServer Faces arayüzünü ifade etmek için bir JavaServer Pages (JSP) özel etiket kütüphanesi.

JSP özel bir sunucu uygulamasıdır.

JSF, JSP ile kullanabileceğiniz bir etiket kümesidir.


6
"JSP servlet özel bir türüdür. JSF JSP ile kullanabileceğiniz bir etiket kümesidir." Bu ifade, üçü arasındaki ilişkiyi en iyi şekilde tanımlar!
lfree

34

Tarayıcı / İstemci perspektifinden

JSP ve JSF'nin ikisi de aynı görünüyor, Uygulama Gereksinimleri uyarınca JSP, istek tabanlı uygulamalar için daha uygundur.

JSF, daha zengin olay tabanlı Web uygulamaları için hedeflenmiştir. Olayı istek / yanıttan çok daha ayrıntılı görüyorum.

Sunucu Perspektifinden

JSP sayfası sunucu uygulamasına dönüştürülür ve çok az davranışı vardır.

JSF sayfası (özel FacesServlet tarafından) bileşenler ağacına dönüştürülür ve spec tarafından tanımlanan bileşen yaşam döngüsünü izler.


23

Servlet'ler:

Java Servlet API'si, Java geliştiricilerinin dinamik Web içeriği sağlamak için sunucu tarafı kod yazmalarını sağlar. Diğer tescilli Web sunucusu API'ları gibi, Java Servlet API'sı da CGI üzerinde gelişmiş performans sundu; ancak, bazı önemli ek avantajları vardır. Sunucu uygulamaları Java ile kodlandığından, nesne yönelimli (OO) bir tasarım yaklaşımı sağlar ve daha da önemlisi herhangi bir platformda çalışabilir. Böylece, aynı kod Java'yı destekleyen herhangi bir ana bilgisayar için taşınabilirdi. Sunucu uygulamaları, sunucu tarafı Web uygulaması geliştirme için yaygın olarak kullanılan bir teknoloji haline geldiği için Java'nın popülaritesine büyük katkıda bulundu.

JSP:

JSP, sunucu uygulamaları üzerine inşa edilmiştir ve Web kullanıcı arabirimleri için büyük miktarlarda dinamik HTML içeriği oluşturmak için daha basit, sayfa tabanlı bir çözüm sağlar. JavaServer Pages, Web geliştiricilerinin ve tasarımcılarının, dinamik Java bölümleri için özel etiketler içeren HTML sayfalarını düzenlemelerini sağlar. JavaServer Pages, bir Web sunucusuna yüklenen ve tüm JSP sayfa görüntüleme isteklerini işleyen JSP kapsayıcı olarak bilinen özel bir sunucu uygulamasına sahip olarak çalışır. JSP kapsayıcısı istenen bir JSP'yi derlenen ve hemen yürütülen sunucu uygulaması koduna çevirir. Aynı sayfaya yapılan daha sonraki istekler, sayfa için çalışma zamanı sunucu uygulamasını çağırır. Sunucudaki JSP'de bir değişiklik yapılırsa, görüntüleme isteği, çalışma zamanı sunucu uygulamasının başka bir çevirisini, derlemesini ve yeniden başlatılmasını tetikler.

JSF:

JavaServer Faces, Web uygulamaları için kullanıcı arabirimleri oluşturmak için kullanılan standart bir Java çerçevesidir. En önemlisi, genellikle Web uygulaması geliştirmenin daha zor ve sıkıcı kısımlarından biri olan kullanıcı arabiriminin geliştirilmesini kolaylaştırır.
Kurumsal Web uygulaması geliştirme için tasarlanmış kapsamlı bir çerçeve olmadan temel Java Web teknolojilerini (Java sunucu uygulamaları ve JavaServer Pages gibi) kullanarak kullanıcı arabirimleri oluşturmak mümkün olsa da, bu temel teknolojiler genellikle çeşitli geliştirme ve bakım sorunlarına yol açabilir. Daha da önemlisi, geliştiriciler üretim kalitesinde bir çözüme ulaştıklarında, JSF tarafından çözülen aynı problemler standart olmayan bir şekilde çözülecektir. JavaServer Faces, Java Web uygulamaları için kullanıcı arabirimlerinin geliştirilmesini aşağıdaki şekillerde basitleştirmek üzere tasarlanmıştır:
• Web kullanıcı arabirimleri oluşturmak için bileşen merkezli, istemciden bağımsız bir geliştirme yaklaşımı sağlar, böylece geliştirici verimliliğini ve kullanım kolaylığını artırır.
• Web kullanıcı arayüzünden uygulama verilerine erişimi ve yönetimi kolaylaştırır.
• Birden çok istek ve birden çok istemci arasındaki kullanıcı arabirimi durumunu basit ve mütevazi bir şekilde otomatik olarak yönetir.
• Farklı beceri setlerine sahip farklı bir geliştirici kitlesine uygun bir geliştirme çerçevesi sağlar.
• Bir web uygulaması için standart mimari desen kümesini tanımlar.

[ Kaynak: tam referans: JSF ]


3
Ben değildim, ama bunun bir kitaptan bir cevap kopyalayıp yapıştırdığınız için olduğunu düşünüyorum.
mawburn

7
@Oberon: Cevabınız için teşekkürler. Kitap için gitti tam kelimeleri bulmak benim için biraz zaman aldı. Eğer bu uygun değilse, o zaman siz veya herhangi biri cevabı iptal etmemi önerebilir. Bunu yapmaktan memnuniyet duyarım.
Kishor Prakash

18

JSF üzerinden JSP'yi tercih edebileceğiniz durumlar da vardır. Uygulama doğası teknolojiyi seçmede belirleyici faktör olmalıdır.

Zengin bir GUI etkileşimi ve çok sayıda Java komut dosyası varsa, JSF'yi tercih edin. Temel olarak GUI uygulama mimariniz Bileşen odaklı ve hatta Swing gibi sürülmüşse, JSF en iyisidir.

Uygulama sadece düz bir form gönderiyorsa, GUI etkileşiminin çok fazla olması gerekmiyorsa, JSP yeni bir teknoloji öğrenmek bir ek yükse ve karmaşık bir çerçeveye ihtiyaç duymazsa iyi yapabilir.


13

Servlet - java sunucusu tarafı katmanıdır.

  • JSP - html ile Servlet
  • JSF - etiket kütüphanelerine dayalı bileşenler
  • JSP - sunucu istek aldığında bir kez sunucu uygulamasına dönüştürülür.

2
Sunucu isteği alındığında JSP bir kez sunucu uygulamasına dönüştürülür.
cackle

... sunucu İLK istek aldığında. Zihin önbellekleme.
dbalakirev

10

bu, JSP'nin yürütme sırasında sunucu uygulamasına dönüştürüldüğü ve JSF'nin tüm programlama yapılarını etiket biçiminde yazmasına izin verdiği için web sayfasını daha okunabilir hale getirmek için tamamen yeni bir şeydir.


6

Servlets ve JSP arasındaki temel fark, Servlets'de java kodu yazmamız ve HTML kodunu gömmemiz ve JSP ile bunun tersi olmasıdır. JSP'de HTML kodu yazıyoruz ve JSP tarafından sağlanan etiketleri kullanarak java kodunu gömüyoruz.


5

Java Sunucu Sayfaları (JSP) , Web geliştiricilerinin ve tasarımcılarının, mevcut iş sistemlerinden yararlanan, bilgi açısından zengin, dinamik Web sayfalarını hızla geliştirmelerini ve bakımlarını yapmalarını sağlayan java teknolojisidir. JSP teknolojisi, kullanıcı arayüzünü içerik üretiminden ayırır ve tasarımcıların temel dinamik içeriği değiştirmeden genel sayfa düzenini değiştirmelerini sağlar.

Facelets , JSF ile karşılaştırıldığında JSF geliştiricilerine daha basit ve daha güçlü bir programlama modeli sağlayan , JSF (Java Sunucu Yüzleri) için tasarlanmış ilk JSP olmayan sayfa bildirim dilidir . Web uygulamalarının geliştirilmesi için JSP'de oluşan farklı sorunları çözer.

İşte betiklerin ve yüzlerin özelliklerini karşılaştıran bir tablo:

resim açıklamasını buraya girin Kaynak


0
JSP:means HTML+Java Code:

JSP kendi yaşam döngüsüne sahiptir jsp_init () jsp_service () jsp_destroy

İlk istek sonra JSP .java dosyasına dönüştürün.
Kullandığımız üç tür etiket vardır 1) Scriptless

<%  %>

Burada geliştirici, geliştiricinin veri almak istediği her şeyi beyan edebilir

2.) İfade etiketi

<%=  %>

Burada geliştirici baskı ile ilgili bazı verileri kullanabilir

3.) beyanı

<!% %>

Burada geliştirici yöntemle ilgili bazı verileri bildirebilir.

Servlet:

Servlet'in kendi yaşam döngüsü var.

init()
service()
destroy()

İlk istek kapsayıcısı web.xml dosyasındaki verileri okuyacaktır. Sonra karşılama dolgusu görüntülenecektir.
Şimdi eylem yaptıktan sonra url'yi arayacak ve bu işlemden sonra oradaki belirli sunucu uygulamasını arayacaktır. servis işlemi gerçekleştirecektir.

JSF:

JSF'nin kendi kullanıcı arayüzü var ve yaşam döngüsü altı şekilde performans gösterebilir,

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

Burada tablo için kullanıcı arayüzü için panel ızgarası kullanıyoruz ve bunun için farklı yüzler var.

Rich Faces
Prime Faces.

-1

JSP'ler MVC'nin (Model Görünüm Denetleyicisi) View bileşenidir. Denetleyici gelen isteği alır ve bazı veritabanı erişimi yapan bir fasulye olabilecek Model'e iletir. JSP daha sonra çıktıyı HTML, CSS ve JavaScript kullanarak biçimlendirir ve çıktı daha sonra istekte bulunan kişiye geri gönderilir.


-1

JSF, projeler için Model-View-Controller (MVC) tabanlı mimarinin uygulanmasının çok kolay olduğu gelişmiş bir çerçevedir. JSF'nin JSP'ye göre ana avantajı, koşullara ve bileşenlerin ajax olaylarının kolay entegrasyonuna bağlı olarak bileşenlerin tarayıcıda kolayca dinamik olarak görüntülenmesidir.

JSF uygulamasının ön ucu, yani xhtml dosyaları, tarayıcı aracılığıyla kullanıcıya gösterilenlerdir. Bu xhtml dosyaları dahili olarak yönetilen fasulyeleri, örneğin gerçek uygulama mantığının yazıldığı kontrolörleri çağırır.

Denetleyiciler dahili olarak veritabanı ile iletişim kuran çeşitli servisleri çağırır (Hazırda Beklet veya JPA API kullanarak). Akış kısaca böyle olur.

JSF, web uygulamanıza zengin bir görünüm ve his vermek için bir çerçeve olan RichFaces ile birlikte de kullanılır.

JSF + RichFaces + Hibernate / JPA kesin öğrenmesi için iyi bir teknolojidir!


-2

Jsp ayrıca doğrudan çalıştırılabilir herhangi bir harici derleme gerektirmeyen yerleşik sunucu uygulaması koduna sahip. Değişiklikler doğrudan bir tarayıcıda jsp'de geçerli olacaktır.

Servlet'in derlenmesi gerekir (yani, belirli bir sınıf oluşturma işlemi olacaktır)

Jsf, MVC Framework'ün bir görünüm bileşenidir


-2

JSP, JAVA SUNUCU SAYFASI anlamına gelir ........ jsp bir sunucu uygulaması değildir. Jsp kodu ve HTML etiketini kendi içinde bir HTML ve bir sunucu uygulaması ayrı ayrı yapmanız gerekmez.Jsp web uygulamasında muhteşem bir rol oynuyor. Servlet, bir java sınıfının HTML sayfanızı statikten dinamik hale getirmesinde rol oynar.


2
JSP'ler gerçekten de Servlet bileşenlerine dönüştürülür. "JSP'ler çalışma zamanında sunucu uygulamasına çevrilir". Kaynak: en.wikipedia.org/wiki/JavaServer_Pages
dbalakirev

-2

Servlet web kabın içine yürütmek sunucu tarafı java programlardır. Sunucu uygulamasının temel amacı, istemciden alınan istekleri işlemektir.

Java Server Pages , dinamik web sayfaları oluşturmak için kullanılır. Jsp'ler, sunucu uygulamaları programında yapılması kolay olmayan tek bir dosyada java artı html kodu yazmak için tanıtıldı. Ve bir jsp dosyası çevrildiğinde java sunucu uygulamasına dönüştürülür.

Java Server Faces , kullanıcı arayüzünün geliştirilmesini kolaylaştıran bir MVC web çerçevesidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.