Introduction to JSF 2.0

Today I have started JSF 2.0 after a long time I got some time to do something related to code.It seems JSF simpler if you know Struts 2.0 or Spring3.x .But JSF is more easier then Struts/Spring I would like to say.

Navigation in JSF is very impressive and very useful for security of your website as it does not show loaded/clicked action in URL.

I would be able to share my learning might be in some different part,Today I will going to give some introduction part on JSF ,also would like to share why we should go for JSF if we are having another framework like Struts and Spring etc.

Java Server Faces (JSF) is result of a quest for
Building dynamic web user interface in easy, efficient and maintainable way
Building web applications based on well-designed architecture to make it most maintainable
Now in its version 2.0 ,it is indeed a standard way of building java based web applications

I would like to define JSF in terms of below given bullet points-JSF (Java Server Faces)is 
Is a Java EE Web application development framework
Simplifies web application development, using existing markup and servlet technologies as its foundation
Powerful, component-based UI
Development framework that uses MVC2 design approach

Why Should we go for JSF can we define in terms of what JSF is offering us-

Component-centric API
To easily assemble Web application user interfaces
Extensible for specialized behavior
Tag libraries that enable operations on UI, by attaching
Validations (including Bean Validations)
Type conversion for input values
Loading resource bundles
All this for most simple to most complex container components
Event-based Java Bean model way of interacting with application data as managed beans (XML/annotations)
The Faces Request Processing Life Cycle
Handles input standard/custom data-conversion/validation
Update server-side application data
Easy i18n of applications
Flexible API that allows pluggable rendering technology
Render HTML : A browser makes a request
WML : PDA/ WAP-enabled browser makes a request
iPhone-specific HTML : To serve content to an iPhone
Unified Expression Language (JSP EL + JSF EL)
Built-in Faceless/Advanced tinplating
First-class support for Ajax
Composite components
Many more features ….

Like other web framework present in market today JSF 2 also follows MVC-2 architecture
  • Model- Managed Bean (i.e. UserBean pure POJO)
  • View- Faceless (XHTML)
  • Controller- Faces Servlet

A very short example for a typical JSF-view would be the following:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns=""
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
      <h:form id="mainForm">
     <h:outputLabel for="enterName" value="Enter Name"/>
     <h:inputText id="enterName" value="#{}"/>
     <h:commandButton value="Say Hello" action="#{sayHelloPage.sayHello}"/>

Note: To use <h:xx> and <f:xx> tags in code we are using  additional xmlns(xml name space) given below-
     For HTML tag in JSF     -    xmlns:h=""
     For JSF Core tag in JSF -   xmlns:f=""

To be Continued....