it-swarm-tr.com

Ne zaman bir JSP kullanıyorsunuz ve ne zaman bir Servlet kullanıyorsunuz?

Ödemeleri işlemek için müşteriyi başka bir siteye gönderen bir uygulamam var. Müşterinin dışındaki diğer site, sunucumuzdaki ödemenin durumunu bize bildirmek için bir sayfa arar. Çağrılan sayfa, ödeme uygulaması tarafından verilen parametreleri kontrol eder ve işlemin bize bilinip bilinmediğini kontrol eder. Daha sonra durumu yansıtacak şekilde veritabanını günceller. Bu, tüm müşteri ile herhangi bir etkileşim olmadan yapılır.

Kişisel olarak bu işlevi bir JSP olarak uygulamayı seçtim, çünkü dosya sistemine bir dosyayı bırakmak, dosyayı derleyip paketlemekten ve daha sonra bir yapılandırma dosyasına bir giriş eklemekten daha kolay.

Sayfanın işlevselliği göz önüne alındığında, bir sunucu uygulamasının tercih edilen seçenek olacağını varsayardım. Soru (lar):

  • Varsayım doğru mu?
  • JSP üzerinden servlet kullanmak için gerçek bir neden var mı?
  • Bu sebepler neler?
  • 37
    Antony

    Bir JSP, ilk çalıştırıldığında bir sunucu uygulamasına derlenir. Bu, aralarında gerçek bir çalışma zamanı farkı olmadığı anlamına gelir. 

    Bununla birlikte, çoğu kontrol cihazı için servlet kullanma ve görünüm için JSP'leri kullanma geleneğine sahiptir. Denetleyiciler sadece Java sınıfları olduğundan, tüm IDE'lerden tam araç desteği (kod tamamlama vb.) Alabilirsiniz. Bu, JSP'lere kıyasla daha iyi kalite ve daha hızlı geliştirme süreleri sağlar. Bazı daha gelişmiş IDE'ler (IntelliJ IDEA akla gelir), bu argümanı modası geçmiş kılan harika JSP desteğine sahiptir.

    Kendi çerçevenizi yapıyorsanız veya sadece basit JSP'ler ile yapıyorsanız, JSP'leri kullanmaya devam etmekte özgürsünüz. Performans farkı yoktur ve JSP'lerin yazılmasının daha kolay olduğunu düşünüyorsanız, o zaman kesinlikle devam edin.

    31
    s3v1

    JSP'ler: Kullanıcıya veri sunmak için. Burada hiçbir iş mantığı bulunmamalı ve kesinlikle veritabanı erişimi olmamalıdır.

    Servlets: Bir formdan veya belirli bir URL'den gelen girişi ele almak için. Genellikle insanlar programlama yapmak için Servlet'lerin tepesinde Struts/Spring gibi bir kütüphane kullanırlar. Ne olursa olsun, sunucu uygulamasının yalnızca gelen verileri doğrulaması ve ardından bir arka uç iş katmanı uygulamasına aktarması gerekir (bunun için test vakalarını karşı kodlayabilirsiniz). Daha sonra elde edilen değerleri istek veya oturuma koymalı ve görüntülemek için bir JSP çağırmalıdır.

    Model: Web sitesinin işlediği yapılandırılmış verilerinizi tutan bir veri modeli. Sunucu uygulaması argümanları alabilir, onları modele yerleştirebilir ve ardından iş katmanını çağırabilir. Model daha sonra veritabanına erişmek için arka uç DAO'lar (veya Hazırda Bekletme) ile arabirim kurabilir.

    Önemsiz olmayan herhangi bir proje MVC yapısını uygulamalıdır. Tabii ki, önemsiz işlevsellik için overkill. Senin durumunda, durumu vb. Veya ne gerekiyorsa güncellemek için DAO adında bir sunucu uygulayacağım.

    26
    JeeBee

    Sunum katmanında, iş mantığı için servlet ve arka uç (genellikle veritabanı katmanı) kodunda JSP'ler kullanılmalıdır.

    Bir JSP'yi tanımladığınız şekilde kullanamamanızın hiçbir nedenini bilmiyorum (bir sunucu uygulamasına yine de derleyici tarafından derlenir), ancak haklısınız, tercih edilen yöntem ilk etapta bir sunucu uygulaması yapmaktır. .

    8
    Bill the Lizard

    JSP'ler bir sunucu uygulaması yazmak için bir kestirme yoldur. Aslında derlemeden önce servlet Java koduna çevrilirler. (Adı hatırlamıyorum bazı Tomcat subdir altında kontrol edebilirsiniz).

    Servlet bir JSP arasında seçim yapmak için basit bir kural kullanıyorum: sayfa Java kodundan daha fazla html kodu içeriyorsa, JSP'ye gidin, aksi halde sadece bir sunucu uygulaması yazın. Kabaca çeviren genel olarak: içerik sunumu için JSP'leri ve kontrol, doğrulama vb.

    Ayrıca, düz Java sınıf sözdizimini kullandığından kodunuzu bir sunucu uygulamasında düzenlemek ve yapılandırmak kolaydır. JSP'ler daha monolitik olma eğilimindedir, ancak o zaman içinde yöntemler oluşturmak mümkündür.

    4
    user16120

    2 basit kural var:

    1. Ne zaman Java kodu (işletme mantığı) yazmak isterseniz, onu bir Java sınıfında (yani, Servlet) yapın.
    2. Ne zaman HTML/CSS/JS kodu (görünüm/şablon mantığı) yazmak isterseniz, bunu bir JSP'de yapın.

    İlgili soru:

    4
    BalusC

    Bugünün popüler yanıtı olmadığını biliyorum, ancak: Sıfırdan bir uygulama tasarlarken, her zaman JSP'leri kullanırım. Mantık önemsiz olmadığında, JSP'den aradığım huysuz çalışmayı yapmak için normal Java sınıfları oluşturuyorum. Servlet kullanmanız gerektiği savını hiçbir zaman anlamadım, çünkü saf Java sınıfları olarak daha bakımlı. Bir JSP kolayca saf bir Java sınıfını çağırabilir ve tabii ki sıradan bir Java sınıfı da herhangi bir sunucu uygulaması kadar korunabilir. Bir sayfayı bir JSP'de biçimlendirmek daha kolaydır, çünkü bir sürü println yazmak yerine tüm işaretlemeyi sıraya koyabilirsiniz. Ancak JSP'lerin en büyük avantajı, onları bir dizine bırakabilmeniz ve doğrudan erişebilmeleridir: URL ile sınıf dosyası arasında ilişki kurmaya gerek yoktur. Her JSP'nin tek bir çağrı ifadesi olabilecek bir güvenlik kontrolü ile başlamasıyla güvenlik kolayca idare edilir, böylece güvenliği bir gönderme katmanına koymanıza gerek kalmaz.

    Bir sunucu uygulamasını kullanmak için görebilmemin tek nedeni, URL'ler ve sonuçtaki yürütme sınıfı arasında karmaşık bir eşlemeye ihtiyaç duymanızdır. Gibi, URL'yi incelemek ve daha sonra oturum durumuna veya bazılarına bağlı olarak birçok sınıftan birini arayın. Şahsen bunu asla yapmak istemedim ve bunu yaptığım uygulamaların bakımını yapmak zor oluyor çünkü bir değişiklik yapmaya başlamadan önce hangi kodun gerçekten çalıştırıldığını bulmak zorundasınız.

    3
    Jay

    JSP'ler esasen servlet konteyner tarafından bir servlete otomatik olarak derlenen işaretlemedir, bu nedenle derleme adımı her iki durumda da gerçekleşir. Bu nedenle, JSP'yi destekleyen bir servlet konteynerinin, sadece JRE'ye ihtiyaç duymanın aksine, tüm JDK'sine sahip olması gerekir.

    Bu nedenle, JSP'nin birincil nedeni, bir sayfayı oluşturmak için gereken kod miktarını azaltmaktır. Sayfa oluşturmak zorunda değilseniz, bir sunucu uygulaması daha iyi olur.

    3
    Steve Moyer

    JSP'ler ve Servlet'ler arasındaki farklar hakkında yukarıdaki tüm hususlarla anlaştınız, ancak işte birkaç ek husus. Sen yaz:

    Gönderen bir başvurum var. müşteriyi başka bir siteye işlemek için ödemeler. Diğer site dışında. müşteri, bizim .__ bir sayfa çağırır. sunucu bize durumunun ne olduğunu bildirmek için Ödeme yapıldı. Denilen sayfa verilen parametreleri kontrol eder. ödeme uygulaması ve çekler tarafından. işlemin olup olmadığını görmek için bizim için bilinir. Daha sonra Günceller. durumu yansıtacak veritabanı. Bu hepsi herhangi bir etkileşim olmadan yapılır. müşteri ile.

    Başvurunuz başka bir uygulamanın ödeme hizmetini kullanıyor. Çözümünüz kırılgandır, çünkü diğer uygulamadaki ödeme hizmeti değişirse JSP sayfanızı kırar. Veya uygulamanızın ödeme politikalarını değiştirmek istiyorsanız, sayfanızın değişmesi gerekir. Kısa cevap, uygulamanızın, ödeme servisini bir web servisi aracılığıyla tüketmesi gerektiğidir. Tüketim mantığınızı koymak için ne bir sunucu uygulaması ne de bir JSP sayfası uygun bir yer değil. 

    İkincisi, bu satırlar boyunca, son birkaç yıldaki sunucu uygulamalarının/JSP sayfalarının çoğu kullanımı, Spring veya Struts gibi bir çerçeve bağlamına girmiştir. Size sunucu sayfalarından web servis ağ geçidi mantığına DAO'lara kadar ihtiyacınız olanı tam olarak sunduğu için Spring'i tavsiye ederim. Eğer baharın somunlarını ve cıvatalarını anlamak istiyorsanız, Eylemdeki Bahar 'ı tavsiye ederim. Java (veya C #) gibi bir dilde yazılmış bir kurumsal mimariyi nasıl katmanlandıracağınızı daha iyi anlamanız gerekiyorsa, Fowler'in Kurumsal Uygulama Mimarisi Kalıpları öğesini tavsiye ederim.

    1
    Alan

    Günümüzde çoğu Java uygulaması MVC deseni üzerine kuruludur .... __ Denetleyici tarafında (servlet) iş mantığını uygularsınız. Sunucu uygulaması denetleyicisi genellikle isteği, gerçek html yanıtını (MVC’de görüntüle) üretecek bir jsp’e iletir .. Amaç, endişeleri ayırmaktır ... Bu konuda binlerce kitap yazılmıştır.

    1

    Bir MVC mimarisinde, sunucu sunucuları denetleyici olarak ve JSP'ler görünüm olarak kullanılır .Ama her ikisi de teknik olarak aynıdır. JSP, ya derleme zamanında (JDeveloper'da olduğu gibi) ya da ilk kez (Tomcat'taki gibi) erişildiğinde servlete çevrilecektir .. __ Bu yüzden asıl fark kullanım kolaylığı. Sunucu uygulamasını kullanarak HTML sayfası oluşturmada zorlandığınızdan eminim; Ancak sağduyu karşısında, aslında tüm JSP içindeki oldukça karmaşık bir mantığı bile kodlamak oldukça kolay olacaktır (belki bazı hazırlıklı yardımcı sınıfın da yardımıyla). PHP çocuklar bunu her zaman yapar. Ve böylece spagetti kodları yaratmanın zorluğuna girerler .Sorunum için benim çözümüm: eğer JSP'de kodlamayı daha kolay bulursanız ve çok fazla kod içermezse, JSP'de kodlamaktan çekinmeyin. Aksi takdirde, servlet kullanın.

    1
    Rudi Adianto

    bence sana kalmış? çünkü JSP, HTML'nin içindeki Java'dır.. ve Servlet, içindeki HTML'yi yapabilen bir Java'dır.

    hmmm ... servlet jsp'den daha sercure çünkü Servlet'e gönderir ve başka bir JSP'ye iletirseniz, hiçbir dosya uzantısı görünmez ve ayrıca ne olduğunu göremezsiniz.

    ancak JSP'nin avantajı, orada kolayca kodlama yapabilmenizdir.

    0
    wrecklez

    Java sunucu uygulamasında HTML etiketleri Java kodlama ..__ içine gömülür. JSP'de Java kodlamaları HTML etiketlerine gömülür.

    Büyük problem için büyük uygulama için, sunucu uygulaması Java kodlama içine daha fazla html etiketi yerleştirilememesi nedeniyle okunması, anlaşılması, hata ayıklanması vb. Karmaşıktır.

    Thanks & Regards, Sivakumar.j

    0
    SIVAKUMAR.J

    Evet, bu bir servet olmalı. Bir JSP'nin geliştirilmesi daha kolay olabilir, ancak bir sunucu uygulamasının bakımı daha kolay olacaktır. Sadece 6 ay içinde rastgele bir hatayı düzeltmek zorunda kaldığınızı ve nasıl çalıştığını hatırlamaya çalıştığınızı hayal edin.

    0
    sblundy