prof. marcelo estágio-i fa7 09/08/2008 desenvolvimento web em java com java server faces (jsf)
TRANSCRIPT
![Page 1: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/1.jpg)
09/08/2008
Prof. Marcelo
Estágio-I
FA7
Desenvolvimento Web em Java com Java Server Faces (JSF)
![Page 2: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/2.jpg)
2
Conteúdo
Java WebArquitetura ServletJSPEL, JSTL e TaglibsPadrão MVC
Java Server FacesIntroduçãoGerenciando a NavegaçãoManaged BeansJSF Expression LanguageJava Server Faces Standard TagsModelo de ComponentesConversão e ValidaçãoTratando EventosCiclo de Vida de um Requisição e PhaseListeners
![Page 3: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/3.jpg)
3
INTRODUÇÃO
![Page 4: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/4.jpg)
4
Aplicações Web
Acessada por meio de navegadores Web (Thin Client)Facilidade de atuliazação da aplicaçãoProcessamento centralizadoInterface com usuário muito poderosaDiversas tecnologias disponíveis
CGIPHPASPASP.NETJava Servlets/JSPetc
![Page 5: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/5.jpg)
5
Requisição/Resposta (Request/Response)
![Page 6: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/6.jpg)
6
Java e Web = J2EE
Servlets e JSPAssim como a linguagem Java, são independente de PlataformaAcesso completo a API do JavaMelhor desempenho (na maioria dos casos) do que CGI, ASP e PHPAdotado pelas grandes industrias de software mundial
![Page 7: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/7.jpg)
7
Aplicação Web em Java
Desenvolver o código dos componentes WebConfigurar aplicação (web.xml e context.xml)Compilar aplicaçãoEmpacotar aplicação em uma unidade instalávelInstalar a aplicação em um Servidor de Aplicação
TomcatJBossIBM WebSphere ...
Acessar a URL que referência a aplicação web
![Page 8: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/8.jpg)
8
Estrutura de pastas e conteúdo
![Page 9: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/9.jpg)
9
Empacotando e Instalando
Arquivo WARArquivo zip com todo o conteúdo da aplicação (JSP's, imagens, conteúdo estático, classes compiladas, web.xml, etc)Segue a estrutura definida anteriormentePronto para instalaçãoTarefa do Ant/Maven
Instalação no Tomcatcontext.xml – Arquivo com configurações específicas do TomcatPasta webappsTomcat Manager
![Page 10: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/10.jpg)
10
SERVLET
![Page 11: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/11.jpg)
11
Arquitetura Servlet
Classes Java que processam dinamicamente requisições e constroem respostasFundação de todas as tecnologias WebOs pacotes javax.servlet.* e javax.servlet.http.* provê as classes e interfaces necessárias para escrever ServletsA classe HttpServlet oferece os serviços HTTP através dos métodos doGet, doPost etcCiclo de vida gerenciado pelo ContainerMultithreaded
![Page 12: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/12.jpg)
12
Arquitetura Servlet
Classe deve herdar de javax.servlet.http.HttpServletQuando chega um requisição ao Servidor, o método service() da classe HttpServlet chama o método doXXX() equivalente a requisição
É passado um objeto contendo as informações da requisição (HttpServletRequest)É passado um objeto para se construir a resposta (HttpServletResponse)
![Page 13: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/13.jpg)
13
Arquitetura Servlet
public class UsuariosServlet extends HttpServlet { private static final long serialVersionUID = 6802030530738727745L;
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... }
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }
@Override public void init() throws ServletException { }}
![Page 14: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/14.jpg)
14
Arquitetura Servlet
Compartilhando InformaçõesOs vários componentes de uma aplicação web trabalham juntos (JSP, Servlet, Filters, Listeners, etc)É necessário compartilhar informaçõesAs informações são compartilhadas através de objetos mantidos como atributos dos chamados Objetos de Escopo (Scope Objects) usando os método [get|set]Attribute
Web Context – ServletContext: Escopo da Aplicação, visível a toda Aplicação (Variáveis globais)Session – HttpSession: Informações relativas a sessão de um Cliente, visível a um conjunto de requisiçõesRequest – HttpServletRequest: Relativa a apenas uma requisiçãoPage – JspContext: Criada pela página JSP, visível apenas ao JSP
![Page 15: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/15.jpg)
15
Tratando Requisições
Métodos HTTP mais comuns: GET e POSTExtrair informações da requisição, acessar recursos externos, e montar a resposta baseado nessas informaçõesURL da requisiçãohttp://[host]:[port][request path]?[query string]Context Path: "/nomeDoContexto" nome da aplicação webServlet Path: "/Teste" corresponde ao caminho para um componente (Servlet)Path Info: o que não faz parte do Context Path nem do Servlet Path
![Page 16: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/16.jpg)
16
Exemplo de Servlet
@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String nome = request.getParameter("nome"); List<Usuario> usuarios = usuarioFacade.listarUsuarios(nome);
out.println("<html>"); out.println("<head>"); out.println("<title>Usuarios</title>"); out.println("</head>"); out.println("<body>"); out.println("<ul>"); for(Usuario usuario: usuarios) { out.println("<li>"); out.println("<a href=\"mailto:" + usuario.getEmail() + "\">"); out.println(usuario.getNome()); out.println("</a>"); out.println("</li>"); } out.println("</ul>"); out.println("</body>"); out.println("</html>"); out.close();}
![Page 17: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/17.jpg)
17
JSP
![Page 18: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/18.jpg)
18
JSP - Introdução
Documento de texto capaz de gerar tanto conteúdo estático como dinâmicoConteúdo estático e dinâmico podem ser misturadosConteúdo estático
HTML, XML, Texto, etc
Conteúdo dinâmicoCódigo JavaPropriedades de Java BeansTags personalizadas
![Page 19: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/19.jpg)
19
JSP - Exemplo
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@page import="java.util.Date"%><html><head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Bem Vindo</title></head><body> Olá! Hoje é <%=new Date()%>.</body></html>
![Page 20: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/20.jpg)
20
JSP - Introdução
Assim como a linguagem Java, é independente de plataformaCódigo JavaFácil edição de páginas HTMLÉ instalado automaticamente pelo containerÉ compilado para um Servlet
Recompilado quando á página é modificada
Vantagens em relação ao ServletsNão é necessário usar println()Fácil edição e manutenção de páginas HTML
![Page 21: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/21.jpg)
21
JSP – Elementos de Scripting (Scriptlets)
Possibilita a inserção de código Java no servlet geradoUsar o mínimo possívelTrês maneiras
Expressões: <%= Expressão%>Scriplets: <% Código%>Declarações <%! Variáveis e Métodos%>
![Page 22: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/22.jpg)
22
JSP - Scriptlet
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@page import="java.util.List"%><%@page import="br.gov.serpro.curso.model.Usuario"%><%@page import="br.gov.serpro.curso.service.facade.GerenciadorUsuarioFacade"%><%@page import="br.gov.serpro.curso.service.FacadeFactory"%><% GerenciadorUsuarioFacade usuarioFacade = FacadeFactory .getInstance().getUsuarioFacade(); String nome = request.getParameter("nome"); List<Usuario> usuarios = usuarioFacade.listarUsuarios(nome);%><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Usuários</title></head><body> Olá <%=((Usuario)session.getAttribute("loggedUser")).getNome()%>! <ul> <%for (Usuario usuario: usuarios) { %> <li><a href="mailto:<%=usuario.getEmail()%>"><%=usuario.getNome()%></a></li> <%} %></ul></body></html>
![Page 23: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/23.jpg)
23
EL, JSTL e Taglibs
![Page 24: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/24.jpg)
24
Expression Language (EL)
Possibilita o acesso a propriedades dos Java Beans e de Map's• Exemplo: ${usuario.nome}
Reconhecido como saída de texto e como atributo para qualquer ação
Suporta Operadores Reduz o uso de Scriptlets Suporte a funções EL personalizadas
• Extensível via taglibs• Exemplo: ${fn:endsWith(filename, ".txt")}• O JSTL 1.1 já vem com 16 funções pré-definidas
![Page 25: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/25.jpg)
25
EL - Exemplo
Expression Language (EL) Exemplo
• Usando Scriptlets<% Map m = (Map)pageContext.getAttribute("estados" );
Estado e = ((State)m.get( "CE" ));
if( e != null ) {%>
<%= e.getCapital() %>
<% } %>
• Usando EL<center>
${estados["CE"].capital}
</center>
![Page 26: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/26.jpg)
26
JSTL – Java Standart Tag Lib
Java Standart Tag Lib (JSTL) Faz parte da especificação J2EE (Java EE) Encapsula funcionalidades comuns a muitas
aplicações JSP Conjunto de tags padrão Não é preciso escrever as Tags Portabilidade
![Page 27: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/27.jpg)
27
JSTL – Java Standart Tag Lib
JSTL – Bibliotecas Core (prefixo: c) Formatação (prefixo: fmt) Funções (prefixo: fn) – usado na EL XML (prefixo: x) Banco de Dados (prefixo: sql)
![Page 28: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/28.jpg)
28
JSTL – Java Standart Tag Lib
<%@ page language="java" contentType="text/html" pageEncoding="ISO-8859-1"%><%@page import="br.gov.serpro.curso.service.facade.GerenciadorUsuarioFacade"%><%@page import="br.gov.serpro.curso.service.FacadeFactory"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><% GerenciadorUsuarioFacade usuarioFacade = FacadeFactory.getInstance() .getUsuarioFacade(); String nome = request.getParameter("nome");%><c:set var="usuarios" value="<%=usuarioFacade.listarUsuarios(nome)%>" />...
![Page 29: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/29.jpg)
29
JSTL – Java Standart Tag Lib
<%@ page language="java" contentType="text/html" pageEncoding="ISO-8859-1"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>...<body><c:if test="${not empty usuarios}"> <ul> <c:forEach var="usuario" items="${usuarios}"> <li> <a href="mailto:${usuario.email}">${usuario.nome}</a><br> <c:choose> <c:when test='${usuario.estadoCivil eq 1}'> solteiro </c:when> <c:when test='${usuario.estadoCivil eq 2}'> casado </c:when> <c:otherwise> não informado </c:otherwise> </c:choose> </li> </c:forEach> </ul></c:if></body></html>
![Page 30: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/30.jpg)
30
Taglibs
Taglibs Elementos JSP definidos pelo usuário (diferente
das tags padrões) Encapsular tarefas recorrentes
• Reaproveitamento de código• Simplifica o desenvolvimento e a manutenção
São distribuídas em bibliotecas personalizadas (Taglib)
![Page 31: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/31.jpg)
31
Taglibs
Taglibs Podem ser personalizada a partir de atributos
passados pela página JSP Podem retornar variáveis para a página JSP Acesso a todas as variáveis disponíveis à página
JSP Podem se comunicar Podem ser aninhadas e comunicar-se através de
variáveis
![Page 32: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/32.jpg)
32
Taglibs
Taglibs – Exemplos Mostrar conteúdo Processar Forms Controle de Fluxo Iteração sobre Coleções ...
![Page 33: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/33.jpg)
33
Padrão MVC
![Page 34: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/34.jpg)
34
Aplicações Web - Desafios
Interface Web muda com frequência• Necessidade de separar lógica de negócios da
lógica de apresentação Páginas Complexas
• HTML Extensos• JavaScript• Conteúdo dinâmico geralmente representam
uma pequena porção da página• A separação de papéis pode ser uma boa
escolha
![Page 35: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/35.jpg)
35
Aplicações Web - Desafios
Não segue modelo tradicional de resposta a estímulos do MVC (Sistemas Desktop)
• Modelo requisição-resposta• Quando um componente muda de estado, a
página não é automaticamente atualizada Requisições HTTP podem carregar somente
strings como parâmetros• Necessidade de conversão para objetos Java• Tendência a geração de Erros
![Page 36: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/36.jpg)
36
Aplicações Web - Desafios
Dificuldade em validar/restrigir ações do usuário• Pouco controle sobre o navegador• Dependência de JavaScript
Pouca Quantidade de componentes gráficos Interoperabilidade
• As páginas devem aparecer e ser comportar de forma semelhante em todos os navegadores
Difícil de realizar testes automáticos
![Page 37: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/37.jpg)
37
Padrão MVC
Model• Objetos de dados (Entidades de Negócio)
View• Apresenta dados ao cliente• Captura ações do cliente
Controller• Reage a ações do usuário, atualizando o
Model da maneira apropriada• Determina o fluxo de navegação
![Page 38: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/38.jpg)
38
Padrão MVC
O cliente interage com o View e envia uma requisição
O Controller recebe a requisição e a delega, geralmente, para camada de negócios
O Model é atualizado e o fluxo volta para o Controller
O Controller decide o que será mostrado e qual view será mostrado
O View exibe ao cliente os dados do Model disponibilizados pelo Controller
![Page 39: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/39.jpg)
39
Padrão MVC
Padrão MVC em Java Servlets (Controller)
• Classes Java devem conter apenas código Java• Tem acesso a Camada de Negócio• Podem direcionar a requisição para outros JSP's
JSP (View)• são páginas e devem conter apenas lógica de
apresentação Camada de Negócio e Entidades de Negócio
(Model)
![Page 40: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/40.jpg)
40
Padrão MVC
![Page 41: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/41.jpg)
41
Padrão MVC
public class UsuariosServlet extends HttpServlet { private static final long serialVersionUID = 6802030530738727745L;
private GerenciadorUsuarioFacade usuarioFacade = FacadeFactory .getInstance().getUsuarioFacade();
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String nome = request.getParameter("nome"); List<Usuario> usuarios = usuarioFacade.listarUsuarios(nome);
request.setAttribute("usuarios", usuarios);
RequestDispatcher dispatcher = request.getRequestDispatcher( "/usuarios.jsp"); dispatcher.forward(request, response); }}
![Page 42: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/42.jpg)
42
Padrão MVC
<%@ page language="java" contentType="text/html" pageEncoding="ISO-8859-1"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Usuários</title></head><body><c:if test="${not empty usuarios}"> <ul> <c:forEach var="usuario" items="${usuarios}"> <li><a href="mailto:${usuario.email}">${usuario.nome}</a></li> </c:forEach> </ul></c:if></body></html>
![Page 43: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/43.jpg)
43
JSF – Java Server Faces
![Page 44: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/44.jpg)
44
O que é Java Server Faces
O que é o Java Server Faces Framework para simplificar o desenvolvimento de
aplicações web Baseado em Componentes Conjunto de componentes GUI para Web Modelo orientado a eventos Não é limitado a HTML Container IoC (provê injeção de dependências)
![Page 45: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/45.jpg)
45
O que é Java Server Faces
Vantagens• Componentes GUI personalizados• POJOs• Tratamento de Eventos• Conversão e Validação• Suporte a outras tecnologias de transporte e
apresentação• Managed Beans• Expression Language• Configuração mais simples
![Page 46: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/46.jpg)
46
O que é Java Server Faces
![Page 47: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/47.jpg)
47
JSF – Gerenciando a Navegação
Definida usando Regras de Navegação Configurado no faces-config.xml
<navigation-rule> <from-view-id>/login.jsp</from-view-id> <navigation-case > <from-action>#{loginBean.login}</from-action> (opcional) <from-outcome>sucesso</from-outcome> <to-view-id>/index.jsp</to-view-id> <redirect/> (opcional) </navigation-case></navigation-rule>
Estática – Configurado na própria página Dinamica – Saída de uma Action
![Page 48: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/48.jpg)
48
JSF – Gerenciando a Navegação
![Page 49: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/49.jpg)
49
JSF – Managed Beans
Usados para separação entre as lógicas de negócio e de apresentação
O que são Beans?• Definição de JavaBean : “a reusable software component
that can be manipulated in a builder tool”• Construtor Vazio• Propriedades privadas, acessadas por métodos get e set
(getXyz, setXyz)• Não é necessário herdar de nenhuma classe em
especial (POJO)• No JSF também são chamados de backing beans
Gerenciados pelo Framework
![Page 50: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/50.jpg)
50
JSF – Managed Beans
Definidos no faces-config.xml• Nome, classe, propriedades e escopo
Propriedades para os dados do Form Métodos Action (Controller) Propriedades para valores de saída Associados a páginas web através da EL Instanciados e inicializados pelo Container
![Page 51: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/51.jpg)
51
JSF – Managed Beans
Message Bundles Centralizar mensagens em um único lugar Arquivo .properties do tipo chave=valor Suporte a mensagens com parâmetros Suporte a internacionalização
![Page 52: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/52.jpg)
52
JSF – Managed Beans
#Page: guess.jsp#=================page.guess.title=Adivinhe o Númeropage.guess.label.numero=Digite um númeropage.guess.label.botao=Enviarpage.guess.denovo=Tentar Novamentepage.guess.maior=Tente um número maiorpage.guess.menor=Tente um número menorpage.guess.acerto=Você acertou em {0} tentativas.
SystemMessages.properties
<faces-config> <!-- Configurações gerais do JSF --> <application> <locale-config> <default-locale>pt_BR</default-locale> </locale-config> <message-bundle id="msg">SystemMessages</message-bundle> </application> ...<faces-config>
faces-config.xml
![Page 53: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/53.jpg)
53
JSF – Managed Beans
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %><%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %><f:view><f:loadBundle basename="SystemMessages" var="msg" /><html><head><title><h:outputText value="#{msg['page.guess.title']}" /></title><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></head><body> <h:form id="guessForm"> <h:outputText value="#{msg['page.guess.label.numero']}: " /> <h:inputText id="palpite" value="#{guessBean.palpite}" /> <br /> <h:commandButton action="#{guessBean.guess}" value="#{msg['page.guess.label.botao']}" /> </h:form></body></html></f:view>
guess.jsp
![Page 54: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/54.jpg)
54
JSF – Managed Beans
![Page 55: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/55.jpg)
55
JSF – Standard Tags
Disponibilizadas pelo JSF Componentes Base para desenvolvimento Duas bibliotecas: html e core (43 tags no total) São taglibs (importadas através da diretiva taglib)
• <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>• <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
![Page 56: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/56.jpg)
56
JSF – Standard Tags
Biblioteca core Serve como suporte para html (e outras) Toda página de ter um <f:view>
• Raiz da árvore de componentes Tag <f:loadBundle> usada para carregar
arquivo .properties A maioria das tags representam objetos a serem
adicionados a componentes• Atributos, Listeners, Converters, Validators, Facets,
Parametros, Select Items
![Page 57: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/57.jpg)
57
JSF – Standard Tags
Biblioteca html - IDs e Bindings Bindings
• “Liga” o componente a um propriedade do backing bean
<h:inputText id="nomeUsuario" binding="#{usuarioBean.nomeUsuarioInput}" />
private UIInput nomeUsuarioInput;
public UIInput getNomeUsuarioInput() { return nomeUsuarioInput;}
public void setNomeUsuarioInput(UIInput nomeUsuarioInput) { this.nomeUsuarioInput = nomeUsuarioInput;}
![Page 58: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/58.jpg)
58
JSF – Conversão e Validação
Conversão e Validação – Converters Em aplicações web os dados enviados do cliente são
sempre strings Java é uma linguagem tipada Precisamos converter os dados enviados JSF provê Conversores para todos os tipos básicos do
Java (Date, Integer, Double, Long) Convertem o valor dos componentes de e para string Aplicam formatação ou internacionlização Podemos definir novos conversores e associar aos
componentes
![Page 59: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/59.jpg)
59
JSF – Conversão e Validação
Conversão e Validação – Validators Tarefa que praticamente toda aplicação web precisa
• Verifica se todos os campos obrigatórios foram preenchido corretamente
• Mostrar página novamente se ocorrer algum problema Para campos obrigatórios o JSF provê o atributo required Provê também validação básicas (domínio e tamanho)
<f:validateDoubleRange maximum="1" minimum="2"/> <f:validateLongRange maximum="1" minimum="2"/> <f:validateLength maximum="3" minimum="3"/>
Podemos definir nosso próprio Validator Por default não suporta validação do lado do cliente :-(
![Page 60: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/60.jpg)
60
JSF – Eventos e Listeners
Usa o modelo de eventos JavaBean (semelhante ao Swing)
Componentes criam eventos que são “consumidos” por Listeners
Listeners podem ser métodos de um backing bean ou uma classe uma classe separada
Quando o cliente ativa um componente (apertar um botão), um evento é disparado
![Page 61: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/61.jpg)
61
JSF – Eventos e Listeners
Eventos e Listeners Duas variedades de eventos UI
• Eventos que disparam processamento back-end• Eventos que afetam apenas a forma da interface
Código para tratar esses eventos: action controllers e event listeners
Action Controllers (Action) lida com o envio completo do form
• Disparados após preenchimento das propriedades do bean
• Disparados após lógicas de validação• Retorna Strings que afetam a navegação
![Page 62: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/62.jpg)
62
JSF – Eventos e Listeners
Eventos e Listeners (cont.) Event Listeners lidam com eventos da UI
• Geralmente são disparados antes do preenchimento das propriedades do bean
• Geralmente pula a fase de validação• Não afeta a navegação (continua na página atual)
![Page 63: Prof. Marcelo Estágio-I FA7 09/08/2008 Desenvolvimento Web em Java com Java Server Faces (JSF)](https://reader035.vdocuments.pub/reader035/viewer/2022062219/552fc101497959413d8bd478/html5/thumbnails/63.jpg)
63
VAMOS PRATICAR!