0% found this document useful (0 votes)
247 views

JSF 2.0: Installation, Setup, and Getting Started Started: For Live Training On JSF 1.x or 2.0, Please See THTT// LT

Servlets, JSP, jsf 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP and RESTful Web Services, Java 6. Developed and taught by well-known author and developer. At public venues or onsite at your location.

Uploaded by

Marcio Lima
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
247 views

JSF 2.0: Installation, Setup, and Getting Started Started: For Live Training On JSF 1.x or 2.0, Please See THTT// LT

Servlets, JSP, jsf 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP and RESTful Web Services, Java 6. Developed and taught by well-known author and developer. At public venues or onsite at your location.

Uploaded by

Marcio Lima
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

© 2010 Marty Hall

JSF 2.0: Installation,


Setup, and Getting
Started
Originals of Slides and Source Code for Examples:
http://www.coreservlets.com/JSF-Tutorial/jsf2/
http://www.coreservlets.com/JSF Tutorial/jsf2/
Customized Java EE Training: http://courses.coreservlets.com/
Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
Developed and taught by well-known author and developer. At public venues or onsite at your location.

© 2010 Marty Hall

For live training on JSF 1.x or 2.0, please see


courses att http://courses.coreservlets.com/.
htt // l t /
Taught by the author of Core Servlets and JSP, More
Servlets and JSP,
JSP and this tutorial.
tutorial Available at public
venues, or customized versions can be held on-site at
your organization.
• Courses
C d
developed
l d and
d ttaught
ht b
by M
Marty
t HHallll
– Java 6, intermediate/beginning servlets/JSP, advanced servlets/JSP, Struts, JSF 1.x & 2.0, Ajax, GWT, custom mix of topics
Customized
– Ajax courses Java
can concentrate on 1EE Training:
library http://courses.coreservlets.com/
(jQuery, Prototype/Scriptaculous, Ext-JS, Dojo, Google Closure) or survey several
• Courses developed and taught by coreservlets.com experts (edited by Marty)
Servlets,– Spring,
JSP, JSF 2.0, Struts,
Hibernate/JPA, Ajax,
EJB3, GWT 2.0,
Ruby/Rails, Spring,and
SOAP-based Hibernate, SOAP
RESTful Web & RESTful Web Services, Java 6.
Services
Developed and taught by well-known Contactauthor and developer. At public
[email protected] venues or onsite at your location.
for details
Topics in This Section
• Getting required software
– Installing Java SE 6
– Installing Eclipse (Java EE version)
– Installing a server for JSF 2.0
20
• Tomcat 6 or 7 (also needs jsf-api.jar and jsf-impl.jar) or
• Glassfish 3
• Testing projects
– Importing and testing an existing JSF 2.0 project
• Deploying
Deplo ing on Tomcat and Glassfish
– Making your own JSF 2.0 project
• Sneak preview of basic features
– Summary of code in jsf-test project
5

© 2010 Marty Hall

Overview

Customized Java EE Training: http://courses.coreservlets.com/


Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
Developed and taught by well-known author and developer. At public venues or onsite at your location.
Overview of JSF 2.0
• JSF 2.0 adds many new features vs. JSF 1.x
– Smart defaults
– Annotations to replace many faces-config.xml entries
– Ajax
j support
pp
– Integrated support for facelets
– Simpler custom components
– M
More componentst andd validators
lid t
– Support for Groovy
– Ability to bookmark results pages
– Lots more
• But, as of 9/2010, JSF 2.0 was hard to test
– Simple installation and testing instructions hard to find
• Rectifying this is the main point of this section
• Later sections give detailed tutorial on JSF 2.0 features
7

Summary: Requirements for


Running JSF 2.0
20
• Java
– To run with Tomcat 6, Java 5 or later needed
– To run with Tomcat 7 or Glassfish 3, Java 6 or later needed
• This tutorial uses Java 6
• A server
– Servers that just support servlets 2.5 or later (e.g., Tomcat 6 or
7) need two JAR files (jsf-api.jar and jsf-impl.jar)
• In addition, JSTL 1.2 JAR files needed if you use ui:repeat tag
– Servers that support
pp Java EE 6 (e.g.,
( g , Glassfish 3,, JBoss 6,,
WebLogic 11g) have built-in support for JSF 2.0 & JSTL 1.2
• All tutorial examples run on Tomcat 6, Tomcat 7, & Glassfish 3
• An IDE
– Optional, but highly recommended.
8
• This tutorial uses Eclipse 3.6, which has explicit JSF 2 support.
Software Needed: Summary
(Details in Later Sections)
• To run on Tomcat • To run on Glassfish
– Install
I t ll Java
J – Install Java
• Java 5 or later • Java 6 or later
– Install an IDE – Install an IDE
• I use Eclipse
E li 3
3.6
6
• I use Eclipse 3.6
– Download Tomcat 6 or 7
– Download Glassfish 3
• Or any server supporting
servlets 2.5
25 • Or any server supporting
Java EE 6
– Get JSF 2.0 JAR files
• jsf-api.jar, jsf-impl.jar – No extra JAR files needed
• (JSTL 1.2
1 2 JAR files) • Java EE 6 has built-in
built in
• Download from Oracle support for JSF 2.0
Mojarra or Apache – web.xml, faces-config.xml
MyFaces • Required entries shown
– web.xml, faces-config.xml later in tutorial
• Required entries shown
9
later in tutorial

Fast Start for Experts


• If you can already use Tomcat and Eclipse
– Grab jsf-blank.zip from online link
• http://www.coreservlets.com/JSF-Tutorial/jsf2/
– Import into Eclipse.
Eclipse Deploy to Tomcat
• Eclipse 3.6 added JSF 2 support, so it is recommended.
– Run http://localhost/jsf-blank/
– Use jsf-blank as starting point for your own JSF 2.0 apps. App
already has:
• The two needed JAR files in WEB-INF/lib
– Also the two optional but recommended JSTL 1.2 JAR files
• The needed entries in WEB-INF/web.xml
• A JSF 2.0 compliant
p WEB-INF/faces-config.xml
g file
– Skip the rest of this tutorial
• And move on to sections on specific JSF 2 features.
10
© 2010 Marty Hall

Installing
Java and Tomcat
For even more detailed step-by-step instructions, see tutorials on using Eclipse with
Tomcat 6 or Tomcat 7 at http://www.coreservlets.com/Apache-Tomcat-Tutorial/

Customized Java EE Training: http://courses.coreservlets.com/


Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
11 Developed and taught by well-known author and developer. At public venues or onsite at your location.

Installing Java SE 6
• Minimum Java version
– Tomcat 7 (servlets 3.0) requires Java 6
– Tomcat 6 and other servlet 2.5 containers require Java 5+
• But
B JJava 6 recommended
d d ffor performance
f and
d ffeatures
• Downloading and installation
–F
Follow
ll directions
di ti att
http://java.sun.com/javase/downloads/
• Get basic Java SE, choose “JDK”, not “JRE”
– Not “with Java EE”, “with JavaFX”, or “with NetBeans”

12
Installing Java SE 6
• Install Java 6
– http://java.sun.com/javase/downloads/index.jsp

Use this version. The “JDK – Java


Development Kit” includes compiler for This tutorial uses Eclipse, but if you prefer the
NetBeans environment, it is very easy to adapt
.java files, whereas the “JRE – Java the instructions to that development
Runtime Environment” is only for environment. So, if you prefer NetBeans or
executing prebuilt .class files. your organization has standardized on it, use
this download instead of (not in addition to) the
one on the left.

• Bookmark the Java API (“JavaDocs”)


– http://download.oracle.com/javase/6/docs/api/
http://download oracle com/javase/6/docs/api/
• This is the most important Java reference for developers.
Eclipse integrates this API, but a separate link is still good

Download and Unzip Tomcat


• Start at http://tomcat.apache.org
– Choose download link on left, then ZIP version
• Tomcat 7 (recommended)
• Tomcat 6 (if you need compatibility with older servers)
• Or, go to http://www.coreservlets.com/
– Choose Tomcat tutorial from top left
– This is preconfigured version
• Set for development, not deployment mode
– Port changed to 80,
80 servlet reloading enabled
enabled, directory listings
turned on, etc.
• Otherwise unchanged
• Either way,
way just unzip the file
– E.g., resulting in C:\apache-tomcat-7.0.0
14
© 2010 Marty Hall

I t lli Eclipse
Installing E li
For even more detailed step-by-step instructions, see tutorials on using Eclipse with
Tomcat 6 or Tomcat 7 at http://www.coreservlets.com/Apache-Tomcat-Tutorial/

Customized Java EE Training: http://courses.coreservlets.com/


Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
15 Developed and taught by well-known author and developer. At public venues or onsite at your location.

Installing Eclipse
• Overview
– Eclipse is a a free open source
IDE for Java. Support for Java,
HTML, CSS, JavaScript, C++,
PHP,, and more.
• http://eclipse.org/downloads/
• Choose “Eclipse IDE for Java EE Developers”
– Need version 3.6 (Helios) for JSF 2.0 and Tomcat 7 support
• Features
– Checks your syntax as you type
– Automatically compiles every
time you
o save
sa e file
– Many tools: refactoring,
debugging, server integration,
templates for common tasks,
tasks etc.
etc
• Low learning curve: beginners can use Eclipse without
knowing these tools
Reminder: step-by-step guide at http://www.coreservlets.com/ (click “Apache Tomcat 7” in top left).
Running Eclipse
• Unzip the downloaded file
– Call the folder you unzip into “installDir”
• Double click eclipse.exe
– From
F i
installDir/bin
llDi /bi
• Click on
Workbench icon
“Workbench”
– Next time you bring
up Eclipse, it will
come up in workbench automatically
• Shortcut
– Many
M ddevelopers
l putt Eclipse
E li link
li k on their
th i desktop
d kt
• R-click eclipse.exe, Copy, then go to desktop, R-click, and
Paste Shortcut (not just Paste!)

Configuring Eclipse
• Tell Eclipse about Java version
– Window  Preferences  Java 
Installed JREs  Press “Add”, choose
“Standard VM”, navigate to JDK folder
((not “bin” subdirectory)
y)
• E.g., C:\Program Files\Java\jdk1.6.0_21
• Tell Eclipse about Tomcat
– Click on Servers tab at bottom.
R-click in window.
– New, Server, Apache, Tomcat v7.0,
Next, navigate to folder, Finish.
• JSF
S 2.0 support
– Eclipse 3.6 has support for JSF 2.
• R-click and add Project Facet for JSF 2
• R-click .xhtml files and
Open With, Web Page Editor Tomcat v7.0 is choice only in Eclipse 3.6 (Helios). If you
prefer Tomcat 6, choose Tomcat v6.0 above instead. If
• Double-click faces-config.xml you lose the “Servers” tab at the bottom of Eclipse, use
Window, Show View, and hunt for “Servers”.
18
© 2010 Marty Hall

Deploying Apps
from Eclipse

Customized Java EE Training: http://courses.coreservlets.com/


Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
19 Developed and taught by well-known author and developer. At public venues or onsite at your location.

Download and Import Sample


Project
• Get test-app.zip from coreservlets.com
– Start at Apache Tomcat tutorial
• http://www.coreservlets.com/Apache-Tomcat-Tutorial/
– Choose Tomcat 7 (recommended) or Tomcat 6 version
• Then, download test-app.zip
– Then, import into Eclipse.
• File, Import, General, Existing
Projects, Select archive file.
Then click Browse and navigate
to test-app.zip.
i

20
Deploying App in Eclipse
• Deploy project
– Select “Servers” tab at bottom
– R-click on Tomcat
– Choose “Add
Add and Remove”
Remove
– Choose project
– Press “Add”
– Click “Finish”
• Start Server
–RR-click
click Tomcat at bottom
– Start (use “Restart” if
Tomcat already running)
• Test URL
– http://localhost/test-app/ in any Web browser
21

Testing Deployed App in Eclipse

• Start a browser
– Eclipse also has builtin browser,
but I prefer to use Firefox,
IE, or Chrome separately
• Test base URL
– http://localhost/test-app/
• Test
T t Web
W b content
t t
– http://localhost/test-app/hello.html
– http://localhost/test-app/hello.jsp
http://localhost/test app/hello.jsp
• Test servlets
– http://localhost/test-app/hello
– http://localhost/test-app/test1
– http://localhost/test-app/test2
22
© 2010 Marty Hall

Installing JSF 2.0

Customized Java EE Training: http://courses.coreservlets.com/


Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
Developed and taught by well-known author and developer. At public venues or onsite at your location.

Main JSF 2.0 Implementations


• Sun/Oracle Mojarra
– Main page: https://javaserverfaces.dev.java.net/
– Runs in any server supporting servlets 2.5 or later
– Also integrated into Glassfish 3
• Apache MyFaces
– Main page: http://myfaces.apache.org/core20/
http://myfaces apache org/core20/
– Runs in any server supporting servlets 2.5 or later
– Also integrated into Apache Geronimo 3
• Any Java EE 6 server
– JSF 2.0 is an official part of Java EE 6
• JBoss
JB 6,
6 Glassfish
Gl fi h 3
3, W
WebLogic
bL i 11,
11 W
WebSphere
bS h 8
8, etc.
t

24
Making a JSF 2.0 Eclipse
Project: Alternatives
• Copy/rename jsf-blank
– Eclipse
E li project
j with
i h all
ll required
i d pieces
i already
l d included
i l d d
• Also has the Eclipse 3.6 JSF 2 facet already added
– Use as starting point for your JSF 2.0 projects.
• Or, build project from scratch
– JAR files
• Put two required and two recommended JAR files into
WebContent/WEB-INF/lib
– web.xml entries
• Two required and one recommended settings
– WEB-INF/faces-config.xml
• Body can be empty, but legal file is required
• Details on both approaches
– Given later in this tutorial
25

Downloading JSF 2.0 From


Scratch (Mojarra)
• Required JAR files: jsf-api.jar, jsf-impl.jar
– Go in the WEB-INF/lib folder of your projects.
– Download
• https://javaserverfaces.dev.java.net/download.html
https://javaserverfaces dev java net/download html
• Click on latest 2.0.x binary bundle
• Download and grab the two JAR files from lib folder
• Suggested:
S d jstl-1.2-api.jar,
j l12 i j jstl-1.2-impl.jar
j l12i lj
– Although the Mojarra Web site states that only the jsf-
blah jar files are needed,
blah.jar needed the standard ui:repeat tags use
JSTL 1.2 internally. So, the JSTL JARs are highly
recommended.
– Download
l d If you download the jsf-
blank Eclipse project, you
can skip this entire slide,
• https://jstl.dev.java.net/download.html since the jsf-blank project
already includes all of the
26 • Click on both “API” and “Implementation” links required pieces.
© 2010 Marty Hall

Using JSF 22.0


0
with Glassfish 3

Customized Java EE Training: http://courses.coreservlets.com/


Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
Developed and taught by well-known author and developer. At public venues or onsite at your location.

Installing Glassfish 3
• Download
– Start at https://glassfish.dev.java.net/, follow link to
“Downloads”.
– Choose the latest released 3.x
3 x version
• There are both completely open source and commercially-
supported versions. The completely open source version
is sufficient for everything in JSF 2
2.0
0
• Install
– Run installer
• I installed in C:\glassfishv3
• I chose anonymous admin login and changed HTTP port
from 8080 to 80

28
Install Java 6 and Eclipse
• Java 6 required
– Java EE 6 will not work with JDK 1.5
• Eclipse or another IDE strongly
recommended
– I use Eclipse 3.6 (Java EE Edition) in this tutorial
• Details
– See slides in previous section

29

Installing Eclipse Glassfish


Adapter
• Eclipse 3.5
– Help  Install New Software
– Enter http://ajax.dev.java.net/eclipse
– Choose Glassfish Java EE 5, 5
Java EE 6 support
• Eclipse
p 3.6 ((better!))
– Click on Servers tab at bottom.
R-click in window.
– New,
N S
Server
– Click “Download additional
server
se ve adapte
adapters”
s in top right
g t
– Choose Oracle, Glassfish 3
30
Registering Glassfish 3 with
Eclipse
• New server entry
– Click on Servers tab at bottom
– New  Server
– Choose Glassfish v3 Java EE 6
• Specify folder
– Choose “glassfish”
glassfish subfolder in
location where you installed
Glassfish. For example, I
installed in C:\glassfishv3,
C:\glassfishv3 so I
navigate to
C:\glassfishv3\glassfish

31

Using JBoss 6, WebLogic 11,


WebSphere 8
8, etc
etc.
• Similar instructions to above
– Download server
– Integrate with Eclipse (download server adapter if
needed)
– R-click on server, Add and Remove, etc.
• Main difference
– Remove JAR files from WEB-INF/lib before deploying
• All of the sample projects at coreservlets.com have the
JSF 2.0
2 0 and JSTL 11.2
2 JAR files in WebContent/WEB
WebContent/WEB-
INF/lib. Delete them before deploying to Java EE 6 server.
– Java EE 6 already supports JSF 2.0 and JSTL 1.2, so it is
ill l to
illegal t supply
l those
th JAR files.
fil
• Glassfish 3 ignores them, but even with Glassfish 3, it is
32
better to delete them.
© 2010 Marty Hall

Using the jsf-blank


Project
j

Customized Java EE Training: http://courses.coreservlets.com/


Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
Developed and taught by well-known author and developer. At public venues or onsite at your location.

Big Idea
• Start with a pre-made Eclipse project
– JAR fil
files:
• jsf-api.jar, jsf-impl.jar, jstl-1.2-api.jar, jstl-1.2-impl.jar
• You can delete these if you use a Java EE 6 server
– web.xml
eb ml
• servlet, servlet-mapping for FacesServlet
• PROJECT_STAGE set to Development
– faces-config.xml
faces config xml
• Legal start/end tags, empty body
– Super-simple test pages
• Making
M ki your own project
j t
– Copy/rename jsf-blank
• But due to an Eclipse bug, you must also manually edit an
E li
Eclipse fil
file on the
th fil
file system
t
– Or, make your own Dynamic Web project and copy top three
34
pieces above to the new project.
Importing the jsf-blank Project
• Grab jsf-blank.zip from tutorial site
– http://www.coreservlets.com/JSF-Tutorial/jsf2/
• Import into Eclipse
–SStart E
Eclipse
li andd go to Workbench
W kb h
– Use File  Import  General  Existing Projects into
Wo sp ce  Next
Workspace e  Se Select
ec archive
c ve filee
– Then click Browse, navigate to jsf-blank.zip, and
continue
– You
Y should
h ld now see jsf-blank
j f bl k in
i project
j listli at left
l f
– Can run as is on Tomcat 6, Tomcat 7, or Glassfish 3
• Test locally (next page), or build WAR file in normal
manner to send to deployment server (R-click project,
Export  WAR file).
35

Testing the jsf-blank Project


• Deploy to server
– Tomcat 6 or 7
• Click on Servers tab at bottom. R-click on Tomcat v6.0,
choose “Add and Remove …”. Choose jjsf-blank. R-click
Tomcat again and choose Start.
– Glassfish
• Click on Servers tab at bottom
bottom. R-click on Glassfish v3
Java EE 6, choose “Add and Remove …”. Choose jsf-
blank. R-click Glassfish again and choose Start.
• Test
– Start browser and enter URL
• http://localhost/jsf-blank/
p j
– It should redirect to
http://localhost/jsf-blank/page-a.jsf
36 – Try the pushbutton
Making Your Own JSF 2.0
Project (Option 1: Copy Project)
• Copy the jsf-blank project
– R-click
R click on jsf-blank
jsf blank at left.
left Copy.
Cop R-click
R click again
again. Paste.
Paste
• Using jsf-blank is better than making your own project because
jsf-blank already has JSF 2 Eclipse 3.6 facet
• Problem: Eclipse bug
– Eclipse leaves references to old name in new project.
• One can be found by R-clicking project, then Properties  Web
P j t Settings.
Project S tti But
B t the
th other
th has
h tot be
b changed
h d manually,
ll so
you might as well replace both manually.
• Solution
– Go to file system, edit eclipse-workspace/projName/
.settings/org.eclipse.wst.common.component
• You could also use Eclipse “Navigator” (not Proj Explorer)
– Change all instances of old project name to new one
– R-click on project and choose Refresh
37

Copying jsf-blank: Example


• First, copy project
– R-click on jsf-blank, choose “Copy”
– R-click in Project Explorer window, choose “Paste”
• E.g.,
E g name it my
my-jsf-project
jsf project
• Next, edit .component file
– Navigate
g to Eclipse
p workspace/projectName/.settings
p p j g
This issue is already in
the Eclipse known bugs
list, so hopefully it will be
fixed soon. But as of Fall
2010, the bugg still exists
in all Eclipse versions,
including 3.6 (Helios).

Open in normal text editor or Eclipse Navigator


(not Eclipse Project Explorer)

When done editing, R-click on project in Eclipse,


then choose “Refresh”

38
Copying jsf-blank: Example
(Continued)
• .component file: before
<?xml version="1
version= 1.0
0" encoding=
encoding="UTF-8"?>
UTF 8 ?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="jsf-blank">
<wb-resource deploy-path="/" source-path="/WebContent"/>
<wb-resource
<wb resource deploy-path="/WEB-INF/classes"
deploy path /WEB INF/classes source
source-path="/src"/>
path /src />
<property name="context-root" value="jsf-blank"/>
<property name="java-output-path"
value="/jsf-blank/build/classes"/>
</wb-module>
</project-modules>
• .component file: after
<?xml version="1.0" encoding="UTF-8"?>
<project-modules
<project modules id="moduleCoreId"
id= moduleCoreId project
project-version="1
version= 1.5.0
5 0">
>
<wb-module deploy-name="my-jsf-project">
<wb-resource deploy-path="/" source-path="/WebContent"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<property
p p y name="context-root" value="my-jsf-project"/>
y j p j /
<property name="java-output-path"
value="/my-jsf-project/build/classes"/>
</wb-module>
39 </project-modules>

Eclipse 3.6 Support


• jsf-blank project already has
JSF 2.0
2 0 ffacett
– You can add this to any project by R-
clicking,
g, going
g g to Properties,
p , Project
j
Facets, and JavaServer Faces 2
• Eclipse 3.6 has JSF 2 support
– T
To edit
dit .xhtml
ht l files:
fil R-click
R li k andd Open
O
With, Web Page Editor
• Or, you can make it automatic by going
to Window
Window, Preferences
Preferences, General
General,
Editors, File Associations, *.xhtml,
make Web Page Editor the default
– To edit faces.config.xml:
faces config xml:
double click it
40
Making Your Own JSF 2.0
Project (Option 2: Copy Files)
• Make Dynamic Web Project
– File  New  Project  Web  Dynamic Web Project
– Or (if done before) File  New  Dynamic Web Project
– Pick a name
• E.g., jsf-test
– Specify Apache Tomcat v6.0
or v7.0 as Target Runtime
– Copy files from jsf-blank to
same location in new project
• Four JAR files in WebContent/
WEB-INF/lib
• WebContent/WEB-INF/web.xml
WebContent/WEB INF/web xml
• WebContent/WEB-INF/
faces-config.xml
41

© 2010 Marty Hall

A Small Sample Project

Customized Java EE Training: http://courses.coreservlets.com/


Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
Developed and taught by well-known author and developer. At public venues or onsite at your location.
The jsf-test Project
• A very tiny project
– With the bare minimum code needed to do anything in
JSF 2.0
• Web site gives two options
– Download entire project to test and examine the code
– Download individual files,, to practice
p putting
p g them in the
right place needed in real projects
– Individual files and complete project online
• http://www.coreservlets.com/JSF-Tutorial/jsf2/
htt // l t /JSF T t i l/j f2/
• Deploying and testing
• http://localhost/jsf
http://localhost/jsf-test/
test/ or (if default port)
• http://localhost:8080/jsf-test/
43

Project Layout
– Download files and drag/drop into proper locations
• src/coreservlets
– HealthPlanBean.java
(R-click on src and make package first)
• WebContent
– All .xhtml files, index.jsp
• WebContent/WEB-INF
– web.xml and faces-config.xml
• WebContent/css
– styles
styles.css
css
(R-click WebContent to
make folder)
• WebContent/WEB-INF/lib
– The four .jar files

44
Overview of Code
• Quick summary given here
– Very simple app
• Form data ignored
• Simplest possible action controller
• Simplest possible results pages
• Technical details in later sections
– More details on each construct
– More types of apps
• Reminder
– Individual files and complete project can be downloaded
from tutorial home page
p g
• http://www.coreservlets.com/JSF-Tutorial/jsf2/

45

JAR Files

These two can be downloaded from


https://javaserverfaces.dev.java.net/download.html

These two can be downloaded from https://jstl.dev.java.net/download.html

O more simply,
Or, i l grabb jjsf-blank
f bl k from
f coreservlets.com
l t andd copy from
f there.
th

If you run on Tomcat 6 or another server that supports servlets 2.5 but not Java
EE 6, the first two JARs are always needed, and the second two JARs are
needed if you use any of the ui:repeat tags. If you run on Glassfish 3 or another
server that supports Java EE 6,
6 you can delete all four of these JARs.
JARs

46
web.xml
<?xml version="1.0" encoding="UTF-8"?>
pp … version="2.5">
<web-app Must be version 2.5 or later. Glassfish supports
pp servlets
version 3.0. This is an updated requirement from JSF 1.x.
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
/ Leave unchanged. This is the
same as in JSF 1.x.
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
u patte .js /u patte
<url-pattern>*.jsf</url-pattern> U JSF for
Use f URLs
URL that
th t endd in
i blah.jsf.
bl h j f Other
Oth
</servlet-mapping> popular options are .faces and /faces/*.
This is the same as in JSF 1.x.
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
/
</context-param>
<welcome-file-list> Give more and more detailed error
messages. For example, unknown
<welcome-file>index.jsp</welcome-file>
<welcome file>index.jsp</welcome file> outcomes are flagged this way (vs. (vs
<welcome-file>index.html</welcome-file> silently redisplaying input form when
in deployment mode). Optional.
</welcome-file-list> This is new in JSF 2.0.

47
</web-app>

faces-config.xml
<?xml version="1.0"?>
<faces-config
<faces config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns http://java.sun.com/xml/ns/javaee
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
_ _
version="2.0">

</faces-config> File is mostly empty in this example. It uses default bean


names (derived from the class name), default bean scopes
(request), and default results pages (derived from the action
controller’s return values).

But you are still required to have a faces-config.xml file with


legal start and end tags.
tags

48
health-plan-signup-1.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
Same header as with facelets in
xmlns:h="http://java.sun.com/jsf/html"> JSF 1.x. But in JSF 2.0, facelets,
… not JSP, is the standard way of
<h:body>
:body It is not necessaryy to use h:bodyy and h:head in this example
p making JSF pages. Note that file is
(regular <body> and <head> are fine). However, when you blah.xhtml, but URL is blah.jsf
… use h:outputScript and especially f:ajax, you need those (assuming url-pattern of *.jsf in
tags. So, you might as well plan ahead and use them
<h:form> routinely.
web.xml).
<fieldset>
<legend>Health Insurance Plan Signup</legend>
First name: <h:inputText/><br/> The input elements are ignored in this simplistic
example. The next tutorial section will give ‘value’
Last name: <h:inputText/><br/> attributes corresponding to bean properties.
SSN: <h:inputText/><br/>
Complete medical history since the day you were born:<br/>
<h:inputTextarea/><br/>
<h:commandButton value="Sign Me Up!"
action="#{healthPlanBean.signup}"/>
</fieldset>
/
</h:form> Same format as in JSF 1.x. But name of bean is
… automatically derived from Java class name.
49 </h:body></html>

HealthPlanBean.java
package coreservlets;

import javax.faces.bean.*; Declares this as managed bean, without requiring entry in


faces-config.xml.

@ManagedBean Since no name given, name is the class name with the first
letter changed to lower case (i.e., healthPlanBean).
public class HealthPlanBean {
public String signup() { Since no scope given, it is request scope.

if (Math.random() < 0.2) {


return("accepted");
} else {
return("rejected");
}
}
}
Since there are no explicit navigation rules in faces-config,
faces-config
these return values correspond to accepted.xhtml and
rejected.xhtml (in same folder as page that has the form).

50
accepted.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
p // g/ / / /
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"> I don’t actually have any dynamic
code in this simplistic example, but
<h:head> it is a good idea to plan ahead and
… always
l include
i l d ththese.
</h:head>
<h:body>

<table border="5">
<tr><th class="title">Accepted (Version 1)</th></tr>
</table>
<p/>

<h2>You are accepted into our health plan.</h2>


<p>Congratulations.</p>

</h:body></html>

51

rejected.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
p // g/ / / /
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
Again, this part plus h:head and
xmlns:h="http://java.sun.com/jsf/html"> h:body are not strictly necessary in
<h:head> this simple example, but it is
recommended practice to include
… them routinely.
</h:head>
<h:body>

<table border="5">
<tr><th class="title">Rejected (Version 1)</th></tr>
</table>
<p/>

<h2>You are rejected from our health plan.</h2>


<p>Get lost.</p>

</h:body></html>

52
index.jsp

<% response
response.sendRedirect(
sendRedirect("health-plan-signup-1
health plan signup 1.jsf
jsf");
); %>

So that http://localhost/jsf-test/ redirects to


http://localhost/jsf test/health plan signup 1 jsf
http://localhost/jsf-test/health-plan-signup-1.jsf

53

Results

54
© 2010 Marty Hall

Wrap-Up

Customized Java EE Training: http://courses.coreservlets.com/


Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
Developed and taught by well-known author and developer. At public venues or onsite at your location.

Summary
• Setup
– Install Java 6 and Eclipse
– Install any recent Tomcat version (6 or 7) or Glassfish 3
– Test by downloading and deploying jsf-blank.zip
jsf blank zip
• Try your own JSF 2.0 project
– Copy/rename jsf
jsf-blank
blank
• Due to Eclipse bug, you must then edit
workspace/projectName/.settings/…component and
change all occurrences of “jsf-blank”
jsf blank to new name
– Or, make a new Dynamic Web Project and copy three
required pieces from jsf-blank
• Four
F JAR files
fil iin WEB
WEB-INF/lib
INF/lib
• WEB-INF/web.xml
56 • WEB-INF/faces-config.xml
© 2010 Marty Hall

Questions?

Customized Java EE Training: http://courses.coreservlets.com/


Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
Developed and taught by well-known author and developer. At public venues or onsite at your location.

You might also like