Escolar Documentos
Profissional Documentos
Cultura Documentos
Java Server Faces
Java Server Faces
Tpicos
Introduo Aplicao Web Tecnologia Java Servlet Custom Tags JavaServer Pages JavaServer Faces
Aplicao Web
Aplicao web a extenso dinmica da web ou application server, e so divididas em dois tipos: Presentation-oriented: Cria pginas interativas contendo HTML, XML, e outros, e contedos dinmicos em resposta a uma requisio. Service-oriented: Implementa a parte final de um web service. Aplicaes presentation-oriented so frequentemente clientes de uma aplicao serviceoriented web.
Paginas JSP: so documentos textos que so executados como servlets e so apropriados para gerao de markup language tais com HTML, SVG, WML, e XML.
Desenvolvimento do cdigo do componente web. Desenvolvimento do descritor de implantao. Compilar componentes da aplicao web e classe auxilares. Opcionalmente empacotar a aplicao em uma unidade de implantao. Implantar a aplicao em um web container. Acessar a URL que referncia a aplicao web.
Mdulo Web
2. Copiando o pacote do mdulo web (arquivo *.war) no diretrio de implantao do web container.
Obs1: Pode-se ainda no caso do Tomcat configurar o descritor server.xml para que identifique o mdulo web. Obs2: Um context root identifica a aplicao web num JEE server (ex: http://host:port/context_root/alias).
Os pacotes javax.servlet e javax.sservlet.http provem interfaces e classes para escrever servlets. Todos servlets devem implementar a interface Servlet, a qual define os mtodos de ciclo de vida
Quando um request mapeado para uma pgina JSP, o web container primeiro checa se o servlet da pagina JSP mais velha do que a pagina JSP. Se for o web container traduz a pagina JSP para uma classe servlet e a compila. Durante o desenvolvimento , uma das vantagens das paginas JSP sobre o servlet que o processo de construo feito automticamente
Traduo e compilao Durante a fase de traduo cada tipo de dado na pagina JSP tratado diferentemente. Dados estticos so transformados em cdigo que emitiro dados para o stream de resposta.
Diretivas so usadas para controlar como o web container traduz e executa a pagina JSP. Elementos scripts so inseridos no servlet da pagina JSP.
O jsp:plugin elemento convertido num especfico browser markup para ativao num applet. Custom tags so convertidas em chamadas para o tag handler que implementa a custom tag. jsp:[include|forward] elemento convertido numa invocao da API Java Servlet.
Elementos scripts so usados tipicamente para criar e acessar objetos, definir mtodos, e gerenciar fluxo de controle. Muitas tarefas que usam scripts podem ser eliminadas usando custom tag library.
Texto HTML
out.print("<H1>Blah</H1>");
Comentrios HTML
<!-- Comentrio --> Mesmo que um outro HTML: Passado para o cliente
Comentrio JSP
Expresses
Scriptlets
Declaraes
Format: <%! code %> Inserido no corpo de uma classe servlet, fora de qualquer mtodo.
Expresses JSP
Formato
Result
Exemplos
Sintaxe XML
Correspondncia JSP/Servlet
JSP Original
Cdigo do servlet
public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); HttpSession session = request.getSession(true); JspWriter out = response.getWriter(); out.println("<H1>A Random Number</H1>"); out.println(Math.random()); ... }
Introduo Ciclo de vida Usando JSF em paginas JSP Usando tags JSF Usando dados localizados Conversores e validadores. Backing Bean
JSF Introduo
um framework do lado servidor baseado em aplicaes WEB.
JavaBeans Event Listener Pginas JSP Classes auxiliares do lado do servidor Biblioteca de componentes UI Biblioteca de event handlers, validators, e etc...
Definir entrada para JSF HTML render kit Definir entrada para JSF Core tag lib
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
Id: nico identificador do componente. Imediate: Se true, indica que qualquer evento, validao, e converso associado a um componente ser aplicada na fase request value ou nas prximas fases.
Style: Especifica um cascading style sheet (css) para a tag. styleClass: Especifica um css styleshet que contm definies de estilo. Value: Identifica uma fonte de dados externa e associa seu valor a ele.
Via backing bean Integer age = 0; public Integer getAge(){ return age;} public void setAge(Integer age) {this.age = age;} Via atributo converter <h:inputText converter="javax.faces.convert.I ntegerConverter" />
BigDecimalConverter, BigIntegerConverter, BooleanConverter, ByteConverter,CharacterConverter DateTimeConverter, DoubleConverter, FloatConverter, IntegerConverter, LongConverter,NumberConverter, ShortConverte
DataTimeConverter <h:outputText value="#{cashier.shipDate}"> <f:convertDateTime dateStyle="full" /> </h:outputText> NumberConverter <h:outputText value="#{cart.total}" > <f:convertNumber type="currency" </h:outputText>
Registrando value-change listener <h:inputText value="#{c.name}"> <f:valueChangeListener type="l.NameChanged" /> </h:inputText> Registrando action listener no componente <h:commandLink action="bookstore"> <f:actionListener type="listeners.LocaleChange" /> </h:commandLink>
Validadores padro DoubleRangeValidator LengthValidator LongRangeValidator Exemplo: <h:inputText id="q" size="4" value="#{item.quantity}" required=true> <f:validateLongRange minimum="1"/> </h:inputText> <h:message for="quantity"/>
Backing Bean
Suas propriedades devem referenciar: Um valor do componente Uma instncia do componente Uma instncia do converter Uma instncia do listener Uma instncia do validator
Exemplo
Formulrio de cadastro, onde os dados fornecidos pelo usurio faro com que o JSF tome a de qual pagina ser mostrada a seguir.
Exemplo (cont.)
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <f:view> <h:form> Nome: <h:inputText value=#{bean.nome/><BR>
Exemplo (cont.)
Sobrenome: <h:inputText value=#{bean.sobrenome}/><BR> ... <h:commandButton value=Cadastrar Dados" action="#{bean.cadastrar}"/> </h:form> </f:view>
Exemplo (cont.)
Criando um action controller package exemplo;
public class CadastroBean { private String nome = ; private String sobrenome = ; // getters e setters ...
Exemplo (continuao)
public String cadastrar() { if (nome.trim().equals() || sobrenome.trim().equals() ) { return(rejeitado"); } else { return(aceito"); } } }
Exemplo (cont.)
Declarando o action controller <faces-config> <managed-bean> <managed-bean-name> bean </managed-bean-name> <managed-bean-class> exemplo.CadastroBean </managed-bean-class>
Exemplo (cont.)
Exemplo
Especificando regras de navegao <faces-config> <navigation-rule> <from-view-id>/cadastro.jsp</from-view-id> <navigation-case> <from-outcome> aceito </from-outcome> <to-view-id>
Exemplo
(continuao) /WEB-INF/result/aceito.jsp </to-view-id> </navigation-case> <navigation-case> <from-outcome> rejeitado </from-outcome> <to-view-id> /WEB-INF/results/rejeitado.jsp
Exemplo
(continuao) </to-view-id> </navigation-case> </navigation-rule> </faces-config>
Exemplo (cont.)
<HTML> <HEAD></HEAD> <BODY> Cadastro do usurio ${bean.nome} ${bean.sobrenome} aceito. Parabns. </BODY></HTML>
Exemplo (cont.)
<HTML> <HEAD></HEAD> <BODY> Cadastro rejeitado.<br/> <A HREF=cadastro.faces">Tente de novo</A>. </BODY></HTML>
Referncias
Tutorial JEE da Sun: http://java.sun.com/javaee/5/docs/tutorial/doc/ www.coreservlets.com Geary, David; Horstmann Cay - Core JavaServer Faces, 2004 Bergsten, Hans; JavaServer Faces, OReilly, 2004