Presentation is loading. Please wait.

Presentation is loading. Please wait.

J2EE JavaServer Faces (JSF) Introduction Internetteknologi 2 (ITNET2)

Similar presentations

Presentation on theme: "J2EE JavaServer Faces (JSF) Introduction Internetteknologi 2 (ITNET2)"— Presentation transcript:

1 J2EE JavaServer Faces (JSF) Introduction Internetteknologi 2 (ITNET2)

2 Ingeniørhøjskolen i Århus Slide 2 Agenda JavaServer Faces (JSF): –Motivation for JSF –Visual Tool Support –JSF Legacy & Elements –Events –Managed Beans –Tool support

3 Ingeniørhøjskolen i Århus Slide 3 Motivation ASP.NET 2 + VS 2003/2005 –New approach to Web development –JSP/Servlet specification could not compete –JSF introduced to supplement JSP/Servlet JSF is a Sun Java specification –Implementations from Sun, IBM, Oracle, Exadel A UI framework for Java Web applications –Easy component-based UI development –Swing like event model –“Code behind” like approach –Designed for visual tool support

4 Ingeniørhøjskolen i Århus Slide 4 Visual Tool Support from IBM WSAD, Netbeans 5.5, JDeveloper 11g

5 Ingeniørhøjskolen i Århus Slide 5 JSF Legacy JSF uses JSP, EL, JSTL, Servlet technologies It does NOT replace JSP/Servlet technology Introduces backing beans and event programming NOT a must JSF works with JDBC, JPA, POJO, EJB, WS JSF supports FrontController pattern out of the box STRUTS heritage Good news – all we know may still be applied

6 Ingeniørhøjskolen i Århus Slide 6 Elements of JSF FacesServlet (central processing unit) Web.xml (well-known from JSP/Servlet J2EE) Faces-config.xml (configures navigation and managed beans etc.) JSF-pages / JSF-tags (view implementations) Managed Beans (beans controlled by framework) Backing beans (event handler code) Navigation Rules (front controller pattern) Validators (same as.NET) Converters (same as.NET)

7 Ingeniørhøjskolen i Århus Slide 7 Faces Servlet Required FrontController Implemented by the framework – not developers All JSF request must pass through this Configured via web.xml Reads faces-config.xml for navigation and managed beans Faces Servlet javax.faces.webapp.FacesServlet 1 Page navigation is NOT required to use frontController

8 Ingeniørhøjskolen i Århus Slide 8 Faces-config.xml Configures navigation, managed beans etc. May be split up into several implementations –Managed-beans.xml –Navigation.xml –And other files Depending on the tool

9 Ingeniørhøjskolen i Århus Slide 9 Managed-beans.xml SessionBean1 visualebtest.SessionBean1 session Page1 visualebtest.Page1 request ApplicationBean1 visualebtest.ApplicationBean1 application RequestBean1 visualebtest.RequestBean1 request Backing bean Of “Page1.JSF” Managaed Beans are accessible in all JSF pages via EL: ${Page1.submit}

10 Ingeniørhøjskolen i Århus Slide 10 /Page1.jsp case1 /Page2.jsp Navigation.xml FrontController pattern implemented by defining a number of cases (actions) which e.g. a button press Might react to – and where to navigate to Counters anti-pattern: spaghetti

11 Ingeniørhøjskolen i Århus Slide 11 JSF Pages / Taglibs Open to many different technologies In practice: JSP integration JSF Views are JSP pages using JSF tags XML Style Like ASP.NET 2, UI components are represented as different elements e.g. Like ASP.NET – you may make your own components

12 Ingeniørhøjskolen i Århus Slide 12 JSF taglibs Table component A JSP page with JSF components Created with Visual Designer Navigation link Binding to backing bean

13 Ingeniørhøjskolen i Århus Slide 13 Backing Beans Abstracting event handling and data model away from JSF pages Somewhat like ”code behind” in ASP.NET Event Oriented Actions ActionListeners

14 Ingeniørhøjskolen i Århus Slide 14 Event Handling Actions: may change page using ”return” –return: null for post back –return: case1 – frontcontroller -> Page2.jsf –Checks faces-config.xml or navigation.xml ActionListeners occur before Actions and no page change JSF binding to action Java Backing Bean Action Event Handler (ASP.NET = Click)

15 Ingeniørhøjskolen i Århus Slide 15 Managed Beans Managed Beans are JavaBeans JavaBeans must be reflectable –(getter,setter, no-arg constructor) A Managed Bean is a Value Object pattern Holding scoped state for the Web application Application, Session, Request, Page1, User Like in JSP Backing Beans are Managed Beans May be accessed from anywhere in Web application –JSF using EL: Page1.button1 –Java: Page1 page = (Page1) this.getPage1(); –page.button1.setToolTip("Press for fun");

16 Ingeniørhøjskolen i Århus Slide 16 Databinding A frequent task is RDBMS access JSF has widespread support for this May be done –Manual: JDBC coding (see JSP slides for example) –RowSet (com.sun.sql.rowset.CachedRowSetXImpl) –Entity Beans (JPA, TopLink, Hibernate, EJB 2.1/3.0) Next we examplify the latter two with Netbeans 5.5 tool support Drag-n-drop and Wizard

17 Ingeniørhøjskolen i Århus Slide 17 RowSet (”the qucik-n-dirty approach”) Most J2EE IDE tools have a Runtime tab with database acces Select database table and drag to designer Creates a member in ”Session” managed bean

18 Ingeniørhøjskolen i Århus Slide 18 Binding Table to Rowset

19 Ingeniørhøjskolen i Århus Slide 19 JSF Resulting Tags A ui:Table element is added with colums EL is used to bind the data sources

20 Ingeniørhøjskolen i Århus Slide 20 Binding to City Drop-Down with City Table

21 Ingeniørhøjskolen i Århus Slide 21 Alternative: Entity Classes RowSet approach OK for small solutions Not good in case of business logic code Instead: use Entity classes –A) Wizard: Generate Entity Classes –B) Wizard: Generate JSF pages from Entity A) provides a domain layer (model layer) B) will provide a control / view layer

22 Ingeniørhøjskolen i Århus Slide 22 Entity Classes from Database You may use this layer for Other technologies as well – Including Web services, CORBA, Java RMI, Swing, etc.

23 Ingeniørhøjskolen i Århus Slide 23 Model Generated Access using JPA – write own DAO layer

24 Ingeniørhøjskolen i Århus Slide 24 JSF Pages from Entities Will created View and Control / BL layers as well Entity Manager Controls the DB Access including transactions

25 Ingeniørhøjskolen i Århus Slide 25 Persistence.xml Gets generated by tool – but can write yourself

26 Ingeniørhøjskolen i Århus Slide 26 JSF Pages Generated

27 Ingeniørhøjskolen i Århus Slide 27 Result For now – JSF pages wizard does NOT work With Visual Designer applications …

28 Ingeniørhøjskolen i Århus Slide 28 Architectural Considerations from JSF FrontController is directly supported – use it Event based programming -> look out for layer separation (do not write business logic layer code in the event handlers of the backing bean) Like ASP.NET – Database drag-n-drop is supported with table / component data binding Watch out for this approach, use only for small systems with little or no business code Alternative: generate Entity classes (EJB, JPA) and event JSF code

29 Ingeniørhøjskolen i Århus Slide 29 Stefan’s Considerations on JSF JSF is a strong alternative to ASP.NET – but much to learn RowSet approach (quick-n-dirty) almost as easy as Visual Studio Entity (EE) approach much better than ASP.NET FrontController pattern / navigation.xml is a very strong feature – compared to master-details JSF wins over ASP.NET for very large projects ASP.NET / VS 2005 more productive for RAD development of small to medium sized projects NetBeans requires tons of RAM – but runs extremely well on 2 GB Dual Core machine ;-) Nice to be rich … But its FREE and runs on Solaris / Linux / Windows Trying to develop JSF without tool support is doomed to fail!

30 Ingeniørhøjskolen i Århus Slide 30 Advice for Assignment 1 Consider NOT using JSF (as stated earlier) Use JSP/Servlets – as you will learn much about server programming from this Try implementing a few pages also in JSF But beware of NetBeans not working properly on IHA Lab machines …

Download ppt "J2EE JavaServer Faces (JSF) Introduction Internetteknologi 2 (ITNET2)"

Similar presentations

Ads by Google