JavaBeat FAQs
JAVABEAT
Home
Articles
Tips
QnA
Forums
FAQs Topics Books Topic
Java Java Books
Struts Struts Books
Spring Spring Books
Hibernate Hibernate Books
JBoss Seam Seam Books
J2EE J2EE Books
EJB EJB Books
JSF JSF Books
Servlets Servlets Books
JDBC JDBC Books
RMI RMI Books
JMS JMS Books
JNI JNI Books
Design Patterns Patterns Books
Exception Exception Books
Apache Ant Ant Books
Groovy
Cobertura
Quartz

JavaServerFaces(JSF) Interview Questions

JSF FAQs - 1 | JSF FAQs - 2 | JSF FAQs - 3

Java Server Faces (JSF) Interview Questions

by Pranav Aggarwal
03/08/2007

Q1. What is JSF?

Ans. JSF stands for Java Server Faces. JSF has set of pre-assembled User Interface (UI). By this it means complex components are pre-coded and can be used with ease. It is event-driven programming model. By that it means that JSF has all necessary code for event handling and component organization. Application programmers can concentrate on application logic rather sending effort on these issues. It has component model that enables third-party components to be added like AJAX.

Q2. What is required for JSF to get started?

Ans. Following things required for JSF:
  • JDK (Java SE Development Kit)
  • JSF 1.2
  • Application Server (Tomcat or any standard application server)
  • Integrated Development Environment (IDE) Ex. Netbeans 5.5, Eclipse 3.2.x, etc.
Once JDK and Application Server is downloaded and configured, one can copy the JSF jar files to JSF project and could just start coding. :-)
If IDE is used, it will make things very smooth and will save your time.

Q3. What is JSF architecture?

Ans. JSF was developed using MVC (a.k.a Model View Controller) design pattern so that applications can be scaled better with greater maintainability. It is driven by Java Community Process (JCP) and has become a standard. The advantage of JSF is that it’s both a Java Web user – interface and a framework that fits well with the MVC. It provides clean separation between presentation and behavior. UI (a.k.a User Interface) can be created by page author using reusable UI components and business logic part can be implemented using managed beans.

Q4. How JSF different from conventional JSP / Servlet Model?

Ans. JSF much more plumbing that JSP developers have to implement by hand, such as page navigation and validation. One can think of JSP and servlets as the “assembly language� under the hood of the high-level JSF framework.

Q5. How the components of JSF are rendered? An Example

Ans. In an application add the JSF libraries. Further in the .jsp page one has to add the tag library like:
            
            <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

            <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
            
            
Or one can try XML style as well:
            
            <?xml version="1.0"?>
            <jsp:root version="2.0"
                      xmlns:jsp="http://java.sun.com/JSP/Page"
                      xmlns:f="http://java.sun.com/jsf/core"

                      xmlns:h="http://java.sun.com/jsf/html">
                     
Once this is done, one can access the JSF components using the prefix attached. If working with an IDE (a.k.a Integrated Development Environment) one can easily add JSF but when working without them one also has to update/make the faces-config.xml and have to populate the file with classes i.e. Managed Beans between
              <faces-config> </faces-config> tags 

            

Q6. How to declare the Navigation Rules for JSF?

Ans. Navigation rules tells JSF implementation which page to send back to the browser after a form has been submitted. For ex. for a login page, after the login gets successful, it should go to Main page, else to return on the same login page, for that we have to code as:
            
            <navigation-rule>

                <from-view-id>/login.jsp</from-view-id>
                <navigation-case>
                    <from-outcome>login</from-outcome>
                    <to-view-id>/main.jsp<to-view-id>	
                </navigation-case>

                <navigation-case>
                    <from-outcome>fail</from-outcome>
                    <to-view-id>/login.jsp<to-view-id>	
                </navigation-case>
            </navigation-rule>

            
            
from-outcome to be match with action attribute of the command button of the login.jsp as:
            <h:commandbutton value="Login" action="login"/>

            
Secondly, it should also match with the navigation rule in face-config.xml as
            <managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>core.jsf.LoginBean</managed-bean-class>

<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
In the UI component, to be declared / used as:
            <h:inputText value="#{user.name}"/>

            
value attribute refers to name property of the user bean.

Q7. How do I configure the configuration file?

Ans. The configuration file used is our old web.xml, if we use some IDE it will be pretty simple to generate but the contents will be something like below:
            
            <?xml version=&quote;1.0&quote; encoding=&quote;UTF-8&quote;?>

            <web-app version=&quote;2.4&quote; xmlns=&quote;http://java.sun.com/xml/ns/j2ee&quote; xmlns:xsi=&quote;http://www.w3.org/2001/XMLSchema-instance&quote; xsi:schemaLocation=&quote;http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quote;>
                <context-param>
                    <param-name>com.sun.faces.verifyObjects</param-name>

                    <param-value>false</param-value>
                </context-param>
                <context-param>
                    <param-name>com.sun.faces.validateXml</param-name>
                    <param-value>true</param-value>

                </context-param>
                <context-param>
                    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
                    <param-value>client</param-value>
                </context-param>

                <servlet>
                    <servlet-name>Faces Servlet</servlet-name>
                    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
                    <load-on-startup>1</load-on-startup>

                </servlet>
                <servlet-mapping>
                    <servlet-name>Faces Servlet</servlet-name>
                    <url-pattern>/faces/*</url-pattern>
                </servlet-mapping>

                <session-config>
                    <session-timeout>
                        30
                    </session-timeout>
                </session-config>
                <welcome-file-list>
                    <welcome-file>

                        index.jsp
                    </welcome-file>
                </welcome-file-list>
            </web-app>
            
            
The unique thing about this file is ?servlet mapping?. JSF pages are processed by a servlet known to be part of JSF implementation code. In the example above, it has extension of .faces. It would be wrong to point your browser to http://localhost:8080/MyJSF/login.jsp, but it has to be http://localhost:8080/MyJSF/login.faces. If you want that your pages to be with .jsf, it can be done with small modification :-) ,
            
            <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>*.jsf</url-pattern>

            <servlet-mapping>
            
            

Q8. What is JSF framework?

Ans. JSF framework can be explained with the following diagram:
Figure 1
As can be seen in Figure 1, JSF interacts with Client Devices which ties together with presentation, navigation and event handling and business logic of web tier model. Hence JSF is limited to presentation logic / tier. For Database tier i.e. Database and Web services one has to rely on other services.

Q9. How does JSF depict the MVC (a.k.a Model View Controller) model?

Ans. The data that is manipulated in form or the other is done by model. The data presented to user in one form or the other is done by view. JSF is connects the view and the model. View can be depicted as shown by:
<h:inputText value="#{user.name}"/>
JSF acts as controller by way of action processing done by the user or triggering of an event. For ex.
<h:commandbutton value="Login" action="login"/>
, this button event will triggered by the user on Button press, which will invoke the login Bean as stated in the faces-config.xml file.
Hence, it could be summarized as below: User Button Click -> form submission to server -> invocation of Bean class -> result thrown by Bean class caught be navigation rule -> navigation rule based on action directs to specific page.

Q10. What does it mean by rendering of page in JSF?

Ans. Every JSF page as described has various components made with the help of JSF library. JSF may contain h:form, h:inputText, h:commandButton, etc. Each of these are rendered (translated) to HTML output. This process is called encoding. The encoding procedure also assigns each component with a unique ID assigned by framework. The ID generated is random. 
Bookmark This Page : | | | | | | | | | | |
Related Articles
Liferay Portal Enterprise Intranets
ZK Developer’s Guide : Online Media Library
The BIRT Environment and Your First Report
AJAX - The Complete Reference
The Java 6.0 Compiler API
Spring Web Flow - Introduction
Introduction to Spring Web Framework
Integrating Struts With Spring
What's new in Struts 2.0? - Struts 2.0 Framework
Introductiion to Jakarta Struts
more articles
java6 ejb3 jsf hibernate eclipse ajax groovy spring seam java struts webservice j2me guice java5 jca tapestry soa linux ria

Sponsors
Webmaster Hosting Forum
Java Jobs
Latest in DLinks
http://javawave.blogspot.com/2008/04/quartz-job-scheduler-part-ii-example.html
Quartz Job Scheduler -- Part 1 (Setting up development project in Netbeans 6.1 beta)
Flex Messaging with BEA Workshop Studio
SOA and Virtualization: How do They Fit Together?
Introduction to Enterprise Portals - Why they Benefit IT and the Business
BEA WebLogic Operations Control: Application Virtualization for Enterprise Java
Best Practices for Building Production Quality EAR Files
BEA's SOA Reference Architecture - A Foundation for Business Agility
Blueprint for Successful SOA Integration
Guardian - What a tool!

JavaBeat Media (2004-2008), India
javabeat home | About Us
our network : opensource softwares
Copyright © 2007 JavaBeat