Yanıtlar:
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.
<h:inputText value="#{register.username}">
olduğu gibi <h:inputText value="#{register.user.name}">
.
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
FacesServlet
bir 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?
FacesServlet
kontrol eden gizli .
Yüzler sunucusu, yüzlerin yaşam döngüsünü yönetir, bu nedenle, her yaşam döngüsü aşamasında çağrılabilen kendi kodunuzla birleştirilen denetleyicidir.
Java Server Faces, MVC bileşenlerinin aşağıdaki gibi olduğu bir MVC web çerçevesidir,
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.
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.
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ışı