JSF MVC çerçevesinde MVC hangi bileşenlerdir?


Yanıtlar:


150

Bu bakış açısına bağlıdır (amaçlanan).

Büyük mimari resimde, kendi JSF kodunuz V'dir :

M - İş etki alanı / Hizmet katmanı (ör. EJB / JPA / DAO)
V - JSF kodunuz
C - FacesServlet

Geliştirici resminde, mimari V sırayla aşağıdaki gibi bölünebilir:

M - Varlık
V - Facelets / JSP sayfası
C - Yönetilen fasulye

Daha küçük müşteri resminde, geliştirici V sırayla aşağıdaki gibi bölünebilir:

M - JSF bileşen ağacı
V - Oluşturulmuş HTML çıktısı
C - İstemci (web tarayıcısı)

Daha küçük JavaScript resminde, istemci V sırayla aşağıdaki gibi bölünebilir:

M - HTML DOM ağacı
V - Görsel sunum
C - Olay dinleyici işlevleri (son kullanıcı etkileşimi ve Ajax)

Yani temelde bir M (M (M (MVC) C) C) C;)

Bazı başlangıçların ve hatta bazı - çok basit - öğreticilerin, denetleyiciyi etkili bir şekilde bir model haline getirecek şekilde, yönetilen çekirdekteki varlığın özelliklerini birleştirdiğini / kopyaladığını / düzleştirdiğini unutmayın. Bunun zayıf bir tasarım olduğunu söylemeye gerek yok (yani temiz bir MVC tasarımı değil).

Aşağıdaki yanıtlardaki kod parçacıkları doğru MVC yaklaşımını göstermektedir:

Java EE 8'de JSF için Nihai Kılavuz kitabında , bölüm 8 "Çekirdekleri destekleme", sayfa 276'da, JSF geliştiricisiyle ilgili bağlamda MVC paradigmasındaki destek çekirdeğinin konumunu göstermek için aşağıdaki Venn şeması kullanılmıştır. . Telif hakkı feragatnamesi: kitap benim tarafımdan yazılmıştır ve resmi benim tarafımdan oluşturulmuştur.

görüntü açıklamasını buraya girin


+1 Her iki felsefeye de tamamen katılıyorum, genellikle büyük kavis için durum daha çok. gerçek zamanlı projelerde görüntüleyin.
Jigar Joshi

2
kelime oyununu anlamadım, yine de yükseliş var
Nick Russler

@JeffLee işimde, bunu yönetilen fasulye xhtml görünümünü kontrol ederken görüyoruz. Yönetilen çekirdekler, görünümün neye ihtiyacı olduğuna bağlı olarak varlıkları almak ve kaydetmek için model koduyla konuşabilir.
djeikyb

5
@Jeff: Sadece içindeki model özelliklerini karıştırırsanız bu. Yerine kullanarak <h:inputText value="#{register.username}">olduğu gibi <h:inputText value="#{register.user.name}">.
BalusC

@ Jigar'ın verdiği cevaba zarar verecek şekilde bu cevaba tamamen katılıyorum. IMO, yönetilen çekirdekler bir modelden çok daha fazlasıdır. Bunlar, tüm etkileşimin gerçekleştiği FacesServlet'in bir tür uzantısıdır. Ayrıca durumu tutabilirler, ancak M'den çok bir C'ye sahipler
Xtreme Biker

36

M odel senin olurManagedBean

V iew olurdu jsp, XHTML(iyi burada çeşitli görünümleri ağırlayacak)

C ontrol olacakFacesServlet

Güncelle, umarım bu resim daha fazla yardımcı olur

görüntü açıklamasını buraya girin


4
+1, Mantıklı, ancak Modelinizin Varlıklar (eğer varsa) ve Kontrolörün Yönetilen Fasulye (FacesServlet'e ek olarak) olduğunu söyleyebilirim
Shervin Asgari

@Jigar iyi, eğer FacesServletbir denetleyiciyse, onu genişletemem. Kendi denetleyicilerime sahip olamıyorum ... Shervin'e Managed Beans'in Denetleyici olduğunu kabul ediyorum. Shervin, kendi alternatif cevabını göndermeye ne dersin?
yegor256

1
FacesServletkontrol eden gizli .
Jigar Joshi

@Jigar wikipedia , "Bir denetleyici kullanıcıdan gelen girdiyi kabul eder ve modele ve görünüm penceresine bu girdiye dayalı eylemler gerçekleştirmesi talimatını verir." FacesServlet'in "modeli eğittiğinden" şüpheliyim, değil mi?
yegor256

4
Undercover FacesServlet, istek, oturum, uygulama bağlamından tüm verileri (yukarıdaki katmanda bean olarak adlandırılır) alır ve işler.
Jigar Joshi


-1

Java Server Faces, MVC bileşenlerinin aşağıdaki gibi olduğu bir MVC web çerçevesidir,

  1. Model - Verileri ve ilgili alıcıları ve ayarlayıcıları tutmak için özelliklere sahip, @ManagedBean ile açıklanmış, yönetilen fasulye sınıfıdır. Yönetilen fasulye sınıfı, iş mantığını da içerebilir.Bunlar, istek, oturum, uygulama gibi farklı kapsamlara sahip olabilen destek çekirdekleri olarak da bilinir.

  2. Görünüm - İstemciye gösterilen kullanıcı arayüzü, yani .xhtml dosyaları. Verileri yönetilen çekirdeklerden alır ve yanıt olarak işlenir.

  3. Denetleyici - javax.servlet.webapp.FacesServlet, temelde bir sunucu uygulaması olan merkezi denetleyici sınıfıdır. JSF'ye gelen herhangi bir istek önce FacesServlet denetleyicisine gider. Kendi denetleyici sınıfımızı yazdığımız JSP'nin aksine, JSF'de denetleyici sunucu uygulaması çerçevenin sabit bir parçasıdır ve biz onu yazmayız.

MVC akışı

görüntü açıklamasını buraya girin


Bu, 36 olumlu oylanan soruyla aynı. Cevabın daha net hale getirilebileceğini düşünüyorsanız, lütfen
düzeltin

@Kukeltje Cevabımın MVC bileşenlerini adlandırmaktan çok daha fazla açıklaması olduğuna inanıyorum.
Hetal Rachh

Çok az daha fazla açıklama ... 1: gerçekten değil, çünkü 'veri içeren' en iyi şey değil (varlıklarda olmalı), iş mantığı, en iyi şey değil, çünkü bunlar hizmetlerde olmalı (en çok oylanan yanıttaki ek bağlantılara bakın) ), 2: çok fazla değil 3: biraz daha fazla metin ama eklediğiniz metinden daha net olan diğer cevabın görüntüsü eksik ...
Kukeltje

@Kukeltje Teşekkürler ama ben JSF'ye yeni başlayan biriyim.
Hetal Rachh

Sorun değil. Uzun zamandır büyük bir başarıyla kullanıyorum. Bauke Scholtz ve Arjan Thijms'in java ee 8 ve jsf kitabını elinize alın. Harika bir okuma ve öğretici, ama aynı zamanda Stackoverflow'da> 25 yukarı oy verilen soru / cevapların tümünü okuyun, onların varlığını hatırlayın ve jsf 2.3 ile başlayın ve
Kukeltje
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.