What components are MVC in JSF MVC framework?

后端 未结 4 2083
栀梦
栀梦 2020-11-22 05:03

In JSF MVC framework who is Model, View, and Controller?

相关标签:
4条回答
  • 2020-11-22 05:35

    Java Server Faces is an MVC web framework where the MVC components are as follows,

    1. Model - It is the managed bean class annotated with @ManagedBean, which has properties to hold the data and respective getters and setters. The managed bean class can also contain the business logic.These are also known as backing beans which can have different scopes like request, session, application.

    2. View - The user interface shown to the client i.e. .xhtml files. It gets the data from the managed beans and it is rendered as the response.

    3. Controller - javax.servlet.webapp.FacesServlet is the centralized controller class which is basically a servlet. Any request that comes to the JSF first goes to the FacesServlet controller. Unlike the JSP in which we write our own controller class, in JSF the controller servlet is a fixed part of the framework and we do not write it.

    MVC flow-

    0 讨论(0)
  • 2020-11-22 05:41

    This depends on the point of view (pun intented).

    In the big architectural picture, your own JSF code is the V:

    M - Business domain/Service layer (e.g. EJB/JPA/DAO)
    V - Your JSF code
    C - FacesServlet

    In the developer picture, the architectural V is in turn dividable as below:

    M - Entity
    V - Facelets/JSP page
    C - Managed bean

    In the smaller client picture, the developer V is in turn dividable as below:

    M - JSF component tree
    V - Rendered HTML output
    C - Client (webbrowser)

    In the yet smaller JavaScript picture, the client V is in turn dividable as below:

    M - HTML DOM tree
    V - Visual presentation
    C - Event listener functions (enduser interaction and Ajax)

    So it's basically a M(M(M(MVC)C)C)C ;)

    Note that some starters and even some —very basic— tutorials mingle/copy/flatten the entity's properties in the managed bean, which would effectively make the controller a model. Needless to say that this is poor design (i.e. not a clean MVC design).

    The code snippets in the following answers illustrate the right MVC approach:

    • JSF Controller, Service and DAO
    • Creating master-detail pages for entities, how to link them and which bean scope to choose
    • Passing a JSF2 managed pojo bean into EJB or putting what is required into a transfer object
    • Filter do not initialize EntityManager
    • javax.persistence.TransactionRequiredException in small facelet application

    In the book The Definitive Guide to JSF in Java EE 8, in chapter 8 "Backing beans", page 276, the below Venn diagram is used to illustrate the position of the backing bean in the MVC paradigm within the context relevant to the JSF developer. Copyright disclaimer: book is written by me and picture is created by me.

    0 讨论(0)
  • 2020-11-22 05:43

    The faces servlet manages the faces lifecycle so in that sense it is the controller combined with your own code that may get called during each lifecycle phase

    http://www.java-samples.com/images/jsf-lifecycle.gif

    0 讨论(0)
  • 2020-11-22 05:50

    M odel would be your ManagedBean

    V iew would be jsp,XHTML (well you can accommodate various views here )

    C ontroller will be FacesServlet

    Update, hope this picture helps more

    enter image description here

    0 讨论(0)
提交回复
热议问题