Web applications using JavaServer Faces (JSF), a brief introduction

Download Report

Transcript Web applications using JavaServer Faces (JSF), a brief introduction

Web applications using
JavaServer Faces (JSF)
A brief introduction
JavaServer Faces (JSF)
1
What is JavaServer Faces (JSF)?
• Framework for web applications
– Works on the server side
• Part of Java Enterprise Edition
– Runs on an application server with a JSF container
• Example: GlassFish
• Current version
– JSF 2.0, 2009
JavaServer Faces (JSF)
2
Some web technologies
Client-side technologies
• (X)HTML
• JavaScript
• Cascading Styles Sheets
(CSS)
• Java Applets
Server-side technologies
• Java Servlets
• JavaServer Pages (JSP)
• JavaServer Faces (JSF)
• PHP
• Microsoft ASP.NET web
forms
JavaServer Faces (JSF)
3
JSF Pages
• JSF Pages look like HTML pages
• Application server translates JSF Pages to
HTML pages
– The HTML is then send to the client (browser)
• The translation is dynamic
– Depends on the state of Java objects
• JSF Managed Beans
• Syntax: #{beanName.propertyName}
JavaServer Faces (JSF)
4
NetBeans support
JavaServer Faces (JSF)
5
JSF managed beans
• Value expression
– #{beanName.propertyName}
– Invokes a method on a Java object
• Called a JSF managed bean
• JavaBeans controlled by JSF
JavaServer Faces (JSF)
6
JavaBeans
• No-arguments constructor
• Properties
–
–
–
–
Get + set methods
Public type getPropertyName()
Public void setPropertyName(Type newValue)
Can be read-only
• No set method, only a get method
• Other methods
• Implements java.io.Serializable
• The model component in the Model-View-Controller
architecture (MVC)
JavaServer Faces (JSF)
7
Scope of managed beans
Who can access a bean – and for how long?
• @RequestScoped
– Available throughout a single HTTP request.
– Survives navigation to another page
• @ViewScoped
– Available on a single page / single HTTP request
• @SessionScoped
–
–
–
–
–
Stored in the HTTP session
Each user has a HTTP session
Time out
Example: Shopping cart
Examples from “Big Java” uses only @SessionScoped
• @ApplicationScoped
– Available throughout the life of the application
– Accessible to all users and all pages
• Example: counters
JavaServer Faces (JSF)
8
Separation of concerns:
Presentation and Business Logic
• Presentation
– User interface
– JSF Page
• Also known as Facelet
– Made by graphics designers
• Business logic
– Rules for business decisions
– JSF managed JavaBean
– Made by Java programmers
JavaServer Faces (JSF)
9
Navigation between pages
• Command button
– <h:commandButton value=”text”
action=”pageName”>
– Action can be a static name, or a method
expression
• Action=”#{bean.method}”
• The method produces a String depending on the bean
object’s state
– The name of the page to navigate to
• <h:commandLink …>
– Similar
JavaServer Faces (JSF)
10
JSF components
• JSF components are translated into HTML
elements using value expressions
• Example
– <h:inputText
value=”#{beanObject.propertyName}” />
• Example: LotteryGame
JavaServer Faces (JSF)
11
Three-tier applications
• Presentation tier
– Browser
• Business logic tier
– JSF Container
• JSF pages + managed beans
• Managed beans can make connections to a database
• Storage tier
– Database Management System (DBMS)
• Database
JavaServer Faces (JSF)
12
Database connections from JSF
managed beans
• JSF Managed beans can be annotated
– @Resource(name=”JNDI name”) private
DataSource source;
– Called “resource injection”
– Connection pooling
– Using the connection object
• Connection conn = source.getConnection()
JavaServer Faces (JSF)
13
JSF using MVC
But where is the controller?
• Model
– JSF managed beans
• View
– JSF page
• Controller
– Javax.faces.webapp.FacesServlet
• http://download.oracle.com/javaee/6/api/javax/faces/weba
pp/FacesServlet.html
– Reads web.xml from the project
– Dispatches the request to the right JSF page
JavaServer Faces (JSF)
14
Declarative programming
• A program that describes what computation
should be performed and not how to compute it.
– http://en.wikipedia.org/wiki/Declarative_programming
• Examples:
– SQL, executed by a DBMS
– HTML + CSS, executed by a web browser
– @ManagedBean + @SessionScoped
• Executed by a JSF container (application server)
– @Resource(name=”JNDI name”)
• Executed by a JSF container (application server)
JavaServer Faces (JSF)
15
References and further readings
• Horstmann: Big Java 4th edition, Wiley 2010
– Chapter 23 Web Applications, page 925-955
• The Java EE 6 Tutorial, Part II The Web Tier
– http://download.oracle.com/javaee/6/tutorial/doc/bnadp.html
• Geary & Horstmann: Core JavaServer Faces, 3rd edition,
Prentice Hall 2010
• Burns & Schalk: JavaServer Faces 2.0: The Complete
Reference, McGraw-Hill 2011
• Hall: JSF 2.0 Tutorials, ${coreservlets.com}
– http://www.coreservlets.com/JSF-Tutorial/jsf2/
• JSF 2.0 Support in NetBeans IDE
– http://netbeans.org/kb/docs/web/jsf20-support.html#jsfPages
JavaServer Faces (JSF)
16