Dalam kerangka kerja JSF MVC, siapakah Model, View, dan Controller?
sumber
Dalam kerangka kerja JSF MVC, siapakah Model, View, dan Controller?
Ini tergantung pada sudut pandang (pun intented).
Dalam gambaran arsitektur besar, kode JSF Anda sendiri adalah V :
M - Domain bisnis / Lapisan layanan (mis. EJB / JPA / DAO)
V - Kode JSF Anda
C - FacesServlet
Dalam gambar pengembang, arsitektur V dapat dibagi seperti di bawah ini:
M - Entitas
V - Facelet / halaman JSP
C - Kacang yang dikelola
Dalam gambar klien yang lebih kecil, pengembang V pada gilirannya dapat dibagi seperti di bawah ini:
M - Pohon komponen JSF
V - Output HTML yang dirender
C - Klien (browser web)
Dalam gambar JavaScript yang lebih kecil, klien V pada gilirannya dapat dibagi seperti di bawah ini:
M - Pohon DOM HTML
V - Presentasi visual
C - Fungsi pendengar acara (interaksi pengguna akhir dan Ajax)
Jadi pada dasarnya ini adalah M (M (M (MVC) C) C) C;)
Perhatikan bahwa beberapa permulaan dan bahkan beberapa tutorial —sangat mendasar— menggabungkan / menyalin / meratakan properti entitas dalam kacang yang dikelola, yang secara efektif akan membuat pengontrol menjadi model. Tak perlu dikatakan bahwa ini adalah desain yang buruk (yaitu bukan desain MVC yang bersih).
Cuplikan kode dalam jawaban berikut menggambarkan pendekatan MVC yang benar:
Dalam buku The Definitive Guide to JSF in Java EE 8 , di bab 8 "Backing beans", halaman 276, diagram Venn di bawah ini digunakan untuk mengilustrasikan posisi kacang pendukung dalam paradigma MVC dalam konteks yang relevan dengan pengembang JSF . Penafian hak cipta: buku ditulis oleh saya dan gambar dibuat oleh saya.
<h:inputText value="#{register.username}">
bukan<h:inputText value="#{register.user.name}">
.M odel akan menjadi milik Anda
ManagedBean
V iew akan
jsp
,XHTML
(baik Anda dapat menampung berbagai pandangan di sini)C ontroller akan
FacesServlet
Perbarui, semoga gambar ini lebih membantu
sumber
FacesServlet
pengontrol daripada saya tidak bisa memperpanjangnya. Saya tidak bisa memiliki pengontrol sendiri ... Saya setuju dengan Shervin bahwa Kacang Terkelola adalah Pengontrol. Shervin, bagaimana kalau memposting jawaban alternatif Anda sendiri?FacesServlet
yang mengendalikan.Servlet wajah mengelola siklus proses wajah sehingga pengontrol yang digabungkan dengan kode Anda sendiri dapat dipanggil selama setiap fase siklus proses
http://www.java-samples.com/images/jsf-lifecycle.gif
sumber
Java Server Faces adalah kerangka web MVC dimana komponen MVC adalah sebagai berikut,
Model - Ini adalah kelas kacang yang dikelola dijelaskan dengan @ManagedBean, yang memiliki sifat untuk menyimpan data dan getter masing-masing dan setter. Kelas kacang terkelola juga dapat berisi logika bisnis, yang juga dikenal sebagai kacang pendukung yang dapat memiliki cakupan berbeda seperti permintaan, sesi, aplikasi.
Tampilan - Antarmuka pengguna yang ditampilkan ke klien yaitu file .xhtml. Itu mendapatkan data dari kacang yang dikelola dan itu diberikan sebagai respons.
Kontroler - javax.servlet.webapp.FacesServlet adalah kelas controller terpusat yang pada dasarnya merupakan servlet. Setiap permintaan yang datang ke JSF terlebih dahulu masuk ke pengontrol FacesServlet. Tidak seperti JSP di mana kita menulis kelas pengontrol kita sendiri, di JSF, servlet pengontrol adalah bagian tetap dari kerangka kerja dan kita tidak menulisnya.
Aliran MVC-
sumber