A very basic introduction to JSF2, with a bit of contextualization on Servlets and JSPs, following a very basic example from HTML to Servlet to JSP to JSF.
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
Rich Web Interfaces with JSF2 - An Introduction
1. Rich Web Interfaces
with JSF2
An Introduction
!
Eduardo Mendonça
November 2013
http://www.slideshare.net/eduardo_mendonca/rich-web-interfaces-with-jsf2-an-introduction
4. HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN”
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD><TITLE>Hello World HTML</TITLE></HEAD>
<BODY>
<H1>Hello World!</H1>
<H2>Today is November 14, 2013</H2>
<H2>The season is Fall!</H2>
</BODY>
</HTML>
!
!
*
Static!
6. Servlet
…
@WebServlet("/HelloWorldServlet")
public class HelloWorldServlet extends HttpServlet {
…
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>HelloWorldServlet</TITLE></HEAD>");
out.println("<BODY>");
out.println("<H1>Hello World!</H1>");
out.println("<H2>Today is " + getTodaysDate() + "</H2>");
out.println("<H2>The season is " + getTodaysSeason() + "</H2>");
}
protected String getTodaysDate() {
DateFormat dateFormat = new SimpleDateFormat("MMMMM dd, yyyy");
Date date = new Date();
return dateFormat.format(date);
}
protected String getTodaysSeason() {
Date date = new Date();
return BackEnd.getSeasonAsString(date);
}
…
}
HTML inside code!
7. JSP
<%@ page language=“java"
contentType="text/html; charset=US-ASCII"
pageEncoding="US-ASCII"%>
<%@ page import=“ca.mendonca.BackEnd,
java.util.Date,
java.text.DateFormat,
java.text.SimpleDateFormat" %>
<!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN”
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD><TITLE>Hello World JSP</TITLE></HEAD>
<BODY>
<H1>Hello World!</H1>
<%
DateFormat dateFormat = new SimpleDateFormat("MMMMM dd, yyyy");
Date date = new Date();
String todaysDate = dateFormat.format(date);
%>
<H2>Today is <%=todaysDate%></H2>
<%
String todaysSeason = BackEnd.getSeasonAsString(date);
%>
<H2>The season is <%=todaysSeason%>!</H2>
</BODY>
</HTML>
Code inside HTML!
!
!
8. A better JSP…
<%@ page language="java" contentType="text/html; charset=US-ASCII"
pageEncoding="US-ASCII"%>
<!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD><TITLE>Better Hello World JSP</TITLE></HEAD>
<BODY>
<H1>Hello World!</H1>
<H2>Today is ${todaysDate}</H2>
<H2>The season is ${todaysSeason}!</H2>
</BODY>
</HTML>
9. …needs a Servlet
…
@WebServlet("/BetterHelloWorldServlet")
public class BetterHelloWorldServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
…
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("todaysDate", getTodaysDate());
request.setAttribute("todaysSeason", getTodaysSeason());
request.getRequestDispatcher("BetterHelloWorld.jsp").forward(request, response);
}
protected String getTodaysDate() {
DateFormat dateFormat = new SimpleDateFormat("MMMMM dd, yyyy");
Date date = new Date();
return dateFormat.format(date);
}
protected String getTodaysSeason() {
Date date = new Date();
return BackEnd.getSeasonAsString(date);
}
…
}
11. JSF2
…
@Named("helloBean")
@RequestScoped
public class HelloWorldBean implements Serializable {
…
public String getTodaysDate() {
DateFormat dateFormat = new SimpleDateFormat("MMMMM dd, yyyy");
Date date = new Date();
return dateFormat.format(date);
}
public String getTodaysSeason() {
Date date = new Date();
return BackEnd.getSeasonAsString(date);
}
}
POJO, yeah!!
Standard Servlet (FacesServlet)!
Standard Lifecycle
13. What is JSF?
•
A Java specification for building component-based
user interfaces for web applications
•
Server-side components
•
Component: look + behaviour
•
High productivity for building rich web interfaces
•
Model-View-Controller (MVC)
•
Part of the JEE 6 Specification (standard framework)