HellowWorld with Maven:http://javaonlineguide.net/2015/06/jsf-2-2-hello-world-tutorial-with-example-basic-concepts.html
JSF is Server sider component oriented Java web framework. It helps to build Robust, Scalable, Flexible, Secure applications.
- Create Maven webapp project and open in Eclipse
- mvn archetype:generate -DgroupId=payables -DartifactId=automation -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp
- Create java folder under src/main
- update pom.xml
<dependency><groupId>com.sun.faces</groupId><artifactId>jsf-api</artifactId><version>2.2.11</version></dependency><dependency><groupId>com.sun.faces</groupId><artifactId>jsf-impl</artifactId><version>2.2.11</version></dependency><dependency><groupId>javax.el</groupId><artifactId>javax.el-api</artifactId><version>3.0.1-b04</version></dependency><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency>update web.xml<servlet><servlet-name>Faces Servlet</servlet-name><servlet-class>javax.faces.webapp.FacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-name>Faces Servlet</servlet-name><url-pattern>*.xhtml</url-pattern></servlet-mapping><context-param><param-name>javax.faces.CONFIG_FILES</param-name><param-value>WEB-INF/faces-config.xml</param-value></context-param>hello.xhtml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEhtml PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"<h:head><title>My First JSF Application</title></h:head><h:body><h3>JSF 2.2 Hello World Example with faces-config.xml</h3><h:form><h3>Now The time is <h:outputLabel> #{helloWorldBean.currentTime}</h:outputLabel></h3>Your Name Please?<h:inputTextvalue="#{helloWorldBean.name}"></h:inputText><h:commandButtonvalue="Say Hello"action="#{resultBean.result}"></h:commandButton></h:form></h:body></html>
JSF is Server sider component oriented Java web framework. It helps to build Robust, Scalable, Flexible, Secure applications.
- Rapid development
- wires component events to Java server-side code
- Binds UI components to pojos
- Built in validators & converters, also customizable
- Exception handling
- Navigation handling
- Page and application templates
- Define page flow that reflects app requirement
Facelets:
- It is new technology created from jsf2.0. It is created as jsp doesn't support all the technology that jsf provides. Hence, jsf created their own rendering technology.
Life Cycle
JSF is a MVC framework of Java EE platform. Contrary to the widely used Spring MVC and Structs Frameworks, it is a component oriented MVC framework.
Action Oriented MVC architecture:
Component Oriented MVC architecture:
1. What is JSF (or JavaServer Faces)?
A server side user interface component framework for Java™ technology-based web applications.JavaServer Faces (JSF) is an industry standard and a framework for building component-based user interfaces for web applications.
JSF contains an API for representing UI components and managing their state; handling events, server-side validation, and data conversion; defining page navigation; supporting internationalization and accessibility; and providing extensibility for all these features.
New to JSF ? Check JavaServer Faces (JSF) tutorial
2. What are the advantages of JSF?
The major benefits of JavaServer Faces technology are:
JavaServer Faces architecture makes it easy for the developers to use. In JavaServer Faces technology, user interfaces can be created easily with its built-in UI component library, which handles most of the complexities of user interface management.
Offers a clean separation between behavior and presentation.
Provides a rich architecture for managing component state, processing component data, validating user input, and handling events.
Robust event handling mechanism.
Events easily tied to server-side code.
Render kit support for different clients
Component-level control over statefulness
Highly 'pluggable' - components, view handler, etc
JSF also supports internationalization and accessibility
Offers multiple, standardized vendor implementations
Build Hello World Program
hello-world.xhtml Component Oriented MVC architecture:
1. What is JSF (or JavaServer Faces)?
A server side user interface component framework for Java™ technology-based web applications.JavaServer Faces (JSF) is an industry standard and a framework for building component-based user interfaces for web applications.
JSF contains an API for representing UI components and managing their state; handling events, server-side validation, and data conversion; defining page navigation; supporting internationalization and accessibility; and providing extensibility for all these features.
New to JSF ? Check JavaServer Faces (JSF) tutorial
2. What are the advantages of JSF?
The major benefits of JavaServer Faces technology are:
JavaServer Faces architecture makes it easy for the developers to use. In JavaServer Faces technology, user interfaces can be created easily with its built-in UI component library, which handles most of the complexities of user interface management.
Offers a clean separation between behavior and presentation.
Provides a rich architecture for managing component state, processing component data, validating user input, and handling events.
Robust event handling mechanism.
Events easily tied to server-side code.
Render kit support for different clients
Component-level control over statefulness
Highly 'pluggable' - components, view handler, etc
JSF also supports internationalization and accessibility
Offers multiple, standardized vendor implementations
Build Hello World Program
- Installation/configuration
- latest Eclipse EE(Neon), Tomcat 8. Connect Eclipse to Tomcat
- Dynamic Web Project
- Target Runtime 8.0
- Configuration -> Modify to select JavaServer Faces 2.2
- Generate 'Deployment Descriptor'
- Add jars jsf-api-2.2.9.jar & jsf-impl-2.2.9.jar as library
- Create and run following files
<!DOCTYPE html>
<html lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:a="http://xmlns.jcp.org/jsf/facelets">
<h:head>
<title>Hello World -Input Form</title>
<style> .error {color:red} </style>
</h:head>
<h:body>
<h:form>
<h:messages styleClass="error" />
<h:inputText id="name" value="#{theUserName}" a:placeholder="ur name" />
<h:commandButton value="Submit" action="myresponse" />
</h:form>
</h:body>
</html>
myresponse.xhtml
<!DOCTYPE html>
<html lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>Hello World -Response</title>
</h:head>
<h:body>
Hello, #{theUserName}
</h:body>
</html>
- Validation features
- Required
- <h:inputText value="#{...}" label=".." required="true" id="name" requiredMessage="Your NAME is mandatory" />
<h:message for="name" styleClass="error" /> - validateLength
- validateLong/Double
- validateRegex
- Custom Validation
<h:inputText value="#{...}" label=".." required="true" id="name"
validator="#{bean.method}" />- public void validateTheCourseCode(FacesContext context, UIComponent component, Object value) throws ValidatorException{
FacesMessage msg = new FacesMessage("xyz");
throw new ValidatorException(message);
}
- Request - per web request - This is the DEFAULT scope if none is specified
- Session - per user or once per user's browser session
- Application - shared by all users
- Commonly used to share an instance of a utility class. eg: DB utility class
- View - Same bean is used while user is on same page. Best for Ajax requests.
- Flow - Same bean is used while user is on same SET of pages. For Wizard type pages
- Flash - Same bean will survive a page redirect
- Custom - Bean stored in a map and developer controls the lifecycle
- None - Bean not placed in any scope. Useful when used by other scoped beans.
- JSF includes components that will generate HTML
Managed Bean
Components of a JSF application:
- A set of web pages to layout UI components. We use special JSF technology called facelets.
- A set of managed beans. It is java code for holding form data and also to perform backend operations like talking to data base
- A web deployment descriptor(web.xml)
- Optionally
- application configuration files (faces-config.xml)
- custom objects, components, custom tags and validators
Enterprice is a group of business organizations running under a single name/label
Structs, Jsf, Spring, Hibernate are frameworks/products developed by thrid party organizations.
Framework is a semi-implemented application. It can be used to design applications as per our convenience. It is a collection of tools which provide a good environment to simplify enterprise application development.
It is a free fabricated environment that we can reuse, customize, share, extend as per our enterprise application simplification.
Advantages of using Frameworks:
- It is a semi implimented application
- controller service
- internalization service
- validation service
- security service
- exception handling service
- Provides standard flow of execution between the components available on server side.
Web Frameworks - These framworks provide very good environment to design and execute web applications. eg: Structs, JSF
Application Frameworks - These framworks provide very good environment to design any type of Java, J2EE applications. eg: Spring
Enterprise applications have 3 main components
- user interface layer(Presentation logic) -- AWT, Swing, Html, jsp and so
- Business process layer(Business logic) -- Servlets, JSP, EJB and so
- Data storage and access layer(to provide data persistency) -- JDBC, ejb, Hibernate, jpa and so..
Web Application
- Application logic is on serverside only
- web technologies - servlets, jsp, cgi..
- web servers and application servers
- collection of web components and executed by web containers
- services only web clients
- Application logic is distributed over client and server
- Distributed technologies - Socket programming, rmi, corba, ejb, web service
- Application servers
- executed by ejb container
- any client
Model1 Architecture(out dated)
- Single JSP acts as front controller and view
- This architecture is also called as JSP front. Also called as page centric architecture.
- Drawbacks
- jsp features are not enough to handle complete application. Java code is required.
- Controller and presentation are performed by single jsp(tightly couple design)
- Designed completely on the basis of MVC architecture
- Servlets acts as front controller, jsp for view, Java Beans, EJB, Hbn, JPA are used as model
- Controller servlet takes all the requests, identifies the model and instantiates, executes business logic and interacts with DB as needed, identifies target view jsp and forwards the control.
- It is a loosely couple design
- Servlet centric architecture
- Servlet front architecture
- Structs & JSF are designed on the basis of MVC architecture(
- Restore view
- Apply request values
- process validators phase
- update model
- invoke application
- Render response
- When container forwards request to Faces servlet, the servlet will create FacesContext object specific to the request
- Facescontext is the anchor point for connecting to framework-and container- specific services
- FacesContext contains all of the per-request state information related to the processing of a single JavaServer Faces request, and the rendering of the corresponding response. It is passed to, and potentially modified by, each phase of the request processing lifecycle.
- FacesContext gives you access to multiple useful contexts and objects, like:
- the Application object, containing application-related 'settings'
- the external context, which is in most cases the ServletContext
- Various JSF UI objects, like the render kit, the UIViewRoot
- FacesServlet will then execute jsf request processing life cycle.
- RestoreView
- New Request(Request arrives from browser): It creates component tree of the page, in memory. The component tree will depict the view along with validators, converters and listeners. It will bypass request to RenderResponse phase.
- PostBack Request(when a submit action on a form calls method on managed bean): Restore View recovers the component tree of the previous request.
- Apply Request Values
- This phase will get the values from Request object and set the values of the respective Components in the component tree.
- Process Validators
- This phase will execute the validators & converters configured in the component tree. If any errors, the error message is stored in FacesContext Object and bypasses request to render response phase.
- Update Model
- Instantiates Managed Bean. Dump the values of the components into the properties of the Managed Bean.
- Invoke Application
- Executes the method associated with the action event. If the return is VOID, the request is transferred to next stage(Render Response).
- It it returns a String, request is transferred to a new request and process continues to new page(i.e Restore View -> Render Response)
- RenderResponse
- from Restore View phase -New Request
- Render response instantiates ManagedBean, get methods initialize the components and html page is generated and sent to client. The component tree is placed in FacesContext object & HTTP session object.
- Process Validations
- Error messages are added and the html response is constructed and sent to client.
- from Invoke Application-return void
- Dumps the values of Managed Bean attributes to component tree, and html/xml code is generated.
- Create new Dynamic Web Project-> Under configuration section add JSF2.2 ->Generate deployment descriptor-> Download JSF library
- Create new .xhtml file and delete the default content
- It is a regular java calss
- Commonly used to hold form data.
- It can also contain business logic
- It is created and managed by JSF, hence "managed bean"
- Rules/requirements for Managed Bean
- Public no-org constructor
- Expose properties via public getter/setter methods
- JSF2 added support for annotation: @ManagedBean
- Required
- validateLength
- validateDouble
- validateRegex
- custom Validation






No comments:
Post a Comment