170 likes | 361 Views
Web applications using JavaServer Faces (JSF). A brief introduction. 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
E N D
Web applications using JavaServer Faces (JSF) A brief introduction JavaServer Faces (JSF)
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)
Some web technologies Client-side technologies Server-side technologies Java Servlets JavaServer Pages (JSP) JavaServer Faces (JSF) PHP Microsoft ASP.NET web forms • (X)HTML • JavaScript • Cascading Styles Sheets (CSS) • Java Applets JavaServer Faces (JSF)
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)
NetBeans support JavaServer Faces (JSF)
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)
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)
Scope of managed beansWho 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)
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)
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)
JSF components • JSF components are translated into HTML elements using value expressions • Example • <h:inputText value=”#{beanObject.propertyName}” /> • Example: LotteryGame JavaServer Faces (JSF)
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)
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)
JSF using MVCBut 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/webapp/FacesServlet.html • Reads web.xml from the project • Dispatches the request to the right JSF page JavaServer Faces (JSF)
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)
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)