J2EE - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

J2EE

Description:

Internetteknologi 2 (ITNET2) J2EE JavaServer Faces (JSF) Introduction – PowerPoint PPT presentation

Number of Views:146
Avg rating:3.0/5.0
Slides: 31
Provided by: SW
Category:
Tags: j2ee | servlets

less

Transcript and Presenter's Notes

Title: J2EE


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

2
Agenda
  • JavaServer Faces (JSF)
  • Motivation for JSF
  • Visual Tool Support
  • JSF Legacy Elements
  • Events
  • Managed Beans
  • Tool support

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
Visual Tool Support from IBM WSAD, Netbeans 5.5,
JDeveloper 11g
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
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
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

ltservletgt ltservlet-namegtFaces
Servletlt/servlet-namegt ltservlet-classgtjavax.fa
ces.webapp.FacesServletlt/servlet-classgt
ltload-on-startupgt 1 lt/load-on-startupgt lt/servletgt
Page navigation is NOT required to use
frontController
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
Managed-beans.xml
lt?xml version"1.0" encoding"UTF-8"?gt lt!DOCTYPE
faces-config PUBLIC "-//Sun Microsystems,
Inc.//DTD JavaServer Faces Config 1.1//EN"
"http//java.sun.com/dtd/we
b-facesconfig_1_1.dtd"gt ltfaces-configgt
ltmanaged-beangt ltmanaged-bean-namegtSessionB
ean1lt/managed-bean-namegt
ltmanaged-bean-classgtvisualebtest.SessionBean1lt/man
aged-bean-classgt ltmanaged-bean-scopegtsessi
onlt/managed-bean-scopegt lt/managed-beangt
ltmanaged-beangt ltmanaged-bean-namegtPage1lt/m
anaged-bean-namegt ltmanaged-bean-classgtvisu
alebtest.Page1lt/managed-bean-classgt
ltmanaged-bean-scopegtrequestlt/managed-bean-scopegt
lt/managed-beangt ltmanaged-beangt
ltmanaged-bean-namegtApplicationBean1lt/managed-bean-
namegt ltmanaged-bean-classgtvisualebtest.App
licationBean1lt/managed-bean-classgt
ltmanaged-bean-scopegtapplicationlt/managed-bean-scop
egt lt/managed-beangt ltmanaged-beangt
ltmanaged-bean-namegtRequestBean1lt/managed-bean-name
gt ltmanaged-bean-classgtvisualebtest.Request
Bean1lt/managed-bean-classgt
ltmanaged-bean-scopegtrequestlt/managed-bean-scopegt
lt/managed-beangt lt/faces-configgt
Backing bean Of Page1.JSF
Managaed Beans are accessible in all JSF pages
via EL Page1.submit
10
Navigation.xml
lt?xml version"1.0" encoding"UTF-8"?gt lt!DOCTYPE
faces-config PUBLIC "-//Sun Microsystems,
Inc.//DTD JavaServer Faces Config 1.1//EN"
"http//java.sun.com/dtd/web-facesconfig_1_1.dtd"gt
ltfaces-configgt ltnavigation-rulegt
ltfrom-view-idgt/Page1.jsplt/from-view-idgt
ltnavigation-casegt ltfrom-outcomegtcase1lt
/from-outcomegt ltto-view-idgt/Page2.jsplt
/to-view-idgt lt/navigation-casegt
lt/navigation-rulegt lt/faces-configgt
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
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. lthdataTable /gt
  • Like ASP.NET you may make your own components

12
JSF taglibs
Binding to backing bean
Table component
Navigation link
A JSP page with JSF components Created with
Visual Designer
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
Event Handling
  • Actions may change page using return
  • return null for post back
  • return case1 frontcontroller -gt Page2.jsf
  • Checks faces-config.xml or navigation.xml
  • ActionListeners occur before Actions and no page
    change

Java Backing Bean Action Event Handler (ASP.NET
Click)
JSF binding to action
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 ltjspuseBean /gt 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
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
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
Binding Table to Rowset
19
JSF Resulting Tags
  • A uiTable element is added with colums
  • EL is used to bind the data sources

20
Binding to City Drop-Down with City Table
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
Entity Classes from Database
You may use this layer for Other technologies as
well Including Web services, CORBA, Java RMI,
Swing, etc.
23
Model Generated
  • Access using JPA write own DAO layer

24
JSF Pages from Entities
  • Will created View and Control / BL layers as well

Entity Manager Controls the DB Access including
transactions
25
Persistence.xml
  • Gets generated by tool but can write yourself

26
JSF Pages Generated
27
Result
For now JSF pages wizard does NOT work With
Visual Designer applications
28
Architectural Considerations from JSF
  • FrontController is directly supported use it
  • Event based programming -gt 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
Stefans 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
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
Write a Comment
User Comments (0)
About PowerShow.com