SlideShare uma empresa Scribd logo
Monday, July 27, 2009
JavaServer Faces
                               &
                              REST
                            Eduardo Bregaida




Monday, July 27, 2009
Monday, July 27, 2009
Você vai gostar




Monday, July 27, 2009
Quem Sou?
                •       Desenvolvedor Java há 5 anos;

                •       Possui experiência com J2SE, J2EE nas empresas:

                        •   Saargummi do Brasil LTDA, 3º Quadrante Informática, G&P, JAPI Informática LTDA, SOS
                            Computadores, Tata Consultancy Services - TCS (ABNAMRO Bank, VisaNet, Cardif), IT
                            Training, Masterdom (PRODESP), Possege (Co-Fundador) como Analista de Sistemas Java;

                •       Agente certificador do Projeto de ensino a distância JEDI no grande ABC em São Paulo:

                •       Membro do JCP - Java Community Process;

                •       Certificado IBM em Message Broker Developer Solution;

                •       Certificado Scrum Master;

                •       Criador do Blog Java Anywhere - www.javawora.blogspot.com

                •       Coordenador e palestrante em diversos eventos de Java.




Monday, July 27, 2009
Monday, July 27, 2009
CQ Teste
                        Primeira Pergunta:
                          O que é JSF?




Monday, July 27, 2009
Monday, July 27, 2009
JSF?




Monday, July 27, 2009
Monday, July 27, 2009
JSF?




Monday, July 27, 2009
Monday, July 27, 2009
JSF?




Monday, July 27, 2009
Monday, July 27, 2009
Não é nada disso, a
                         resposta certa
                                É:




Monday, July 27, 2009
JSF - Java Server Faces




Monday, July 27, 2009
O que é JSF?

                 • É mais do que um framework, é uma especificação baseada em MVC;
                 • Suporte a internacionalização;
                 • Facilita criação de telas;
                 • Facilita a transferência dos dados entre telas e camadas de negócio através da EL.
                 • Produtividade para conversores recebidos do formulário para os tipos nas classes;
                 • Flexibilidade para renderização.
                 • Criar modelos simples de eventos entre interfaces gráficas e as classes no servidor.
                 • Mecanismos produtivos para validação de campos na tela.
                 • Facilidade para criação de componentes;




Monday, July 27, 2009
Especificações
                 • JSF 1.0 e 1.1 – JSR 127
                     – Problemas com renderização
                     – ELs diferentes entre JSP e JSF
                     – Não portava a tag JSTL <c:forEach>

                 • JSF 1.2 – JSR 252
                     – Resolveram todos os problemas de incompatibilidade, pois o JSF 1.2 e o JSP 2.1 tiveram muitas
                       uniões e estão dentro do JEE.

                 • JSF 2.0 – JSR 314
                     – Novo ciclo de vida na parte do cliente (Browser);
                     – Escopo de navegação, antes utilizado através do MyFaces Tomahawk, JBoss Seam e Spring
                       Annotation;
                     – Adeus XML, configurações via Annotations;
                     – Exception Handler, quando ocorrer um erro direcionamos para uma página de erro;
                     – Templating;
                     – Subimissão Via GET, antes só podia via POST;
                     – AJAX nativo;
                     – Serviços JSF sendo acessador via REST;
                     – E muito mais, acompanhe pelo JCP a especificação.




Monday, July 27, 2009
Managed Beans
                 •É uma classe que expões objetos de negócio para camada de
                  apresentação;

                 •São Registrados no faces-config.xml;

                 •Objetos que sofrerão alterações em seus atributos durante uma
                  requisição, assim como seus métodos podem ser chamados a partir de
                  um command;

                 •São como as Actions do Struts, porém os form beans são injetados por
                  setters dentro do seu próprio bean;

                 •Os ManagedBeans serão usados na EL das páginas.




Monday, July 27, 2009
EL - Expression Language

                 •É uma poderosa linguagem de expressão (Linguagem de navegação)
                  para acessar propriedades de beans e coleções.

                 •Quando ocorrer uma requisição pelo browser é preenchido
                  dinamicamente os elementos da página pela camada de negócios.

                 •Quando ocorre um Submit ocorre a modificação no estado da camada
                  de negócio.




Monday, July 27, 2009
Roteiro de Uso




Monday, July 27, 2009
Roteiro Básico
1.Criar um bean que represente o formulário;
2.Criar os DAOs;
3.Criar um controlador (Handler) que leia os dados do formulário, chame a
  lógica de negócio, guarde os resultados em beans e tenha um retorno;
4.Criar os JSP´s responsáveis por cada retorno declarado;
5.NUNCA Esqueça: <f:view> e <h:form> para formulários;
6.Especificar o Action Controller com o atributo de ação
  <h:commandButton>;
7.O faces-config é usado para declarar o form bean e as regras de
  navegação.




Monday, July 27, 2009
Exemplo de Código



Monday, July 27, 2009
Bean
    •       @Entity

public class Ponto {
	 @Id
	 @GeneratedValue(strategy = GenerationType.IDENTITY)
	 private long id;
	 private Double latitude;
	 private Double longitude;
	 private Double raio;
	 private boolean status;
	 private String descricao;

             //getters and setters
}




Monday, July 27, 2009
DAO
      public class pontoDAO {

	     private Session session;

	     private Logger logger = Logger.getLogger(Ponto.class);

	     public pontoDAO(Session session) {
	     	    logger.info("Construtor" + session);
	     	    this.session = session;

	     }

	     public void salvar(Ponto ponto) {
	     	    session.saveOrUpdate(ponto);
	     }

	     public void excluir(Ponto ponto) {
	     	    session.delete(ponto);
	     }

	     public Ponto selecionar(Ponto ponto) {
	     	    return (Ponto) session.load(Ponto.class,
	     	    	     	    ponto.getId());
	     }

}




Monday, July 27, 2009
public class PontoHandler {
      private Ponto ponto = new Ponto();
      public void selecionaDados() {
      	
      	
           Session session = HibernateUtil.getCurrentSession();
           DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class);
                                                                    Managed Bean
	     	    dao.load((long) ponto.getId());
	     }

	     public Ponto getPonto() {
	     	    return ponto;
	     }

	     public void setPonto(Ponto ponto) {
	     	    this.ponto = ponto;
	     }

	     public List<Ponto> getAllPonto() {
	     	    Session session = HibernateUtil.getCurrentSession();
	     	    DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class);
	     	    return dao.list();
	     }

	     public void carregar(ActionEvent event) {
	     	    UIComponent comandLink = event.getComponent();
	     	    UIParameter parameter = (UIParameter) comandLink
	     	    	     	    .findComponent("editId");
	     	    Long id = (Long) parameter.getValue();
	     	    Session session = HibernateUtil.getCurrentSession();
	     	    DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class);
	     	    this.ponto = dao.load(id);

	     }

	     public void excluir(ActionEvent event) {
	     	    UIComponent comandLink = event.getComponent();
	     	    UIParameter parameter = (UIParameter) comandLink
	     	    	     	    .findComponent("editId");
	     	    Long id = (Long) parameter.getValue();
	     	    Session session = HibernateUtil.getCurrentSession();
	     	    DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class);
	     	    this.ponto = dao.load(id);
	     	    dao.deleta(ponto);
	     	    this.ponto = new Ponto();

	     }	    	

}


Monday, July 27, 2009
JSP
      <f:view>
	     <h:form id="menuId">
	     	     <t:panelGrid align="center">
	     	     	     <h:selectOneMenu title="Linha" value="#{pontoHandler.ponto.linha}"
	     	     	     	     converter="simpleIndexConverter">
	     	     	     	     <t:selectItems value="#{horarioHandler.allLinhas}" var="c"
	     	     	     	     	     itemLabel="#{c.nome}" itemValue="#{c}" />
	     	     	     </h:selectOneMenu>
	     	     	     <h:outputText value="Latitude:" styleClass="titulo_campos" />
	     	     	     <h:inputText value="#{pontoHandler.ponto.latitude}" required="true"
	     	     	     	     validator="#{validadorHandler.validaNumeroReal}" />
	     	     	     <h:commandButton styleClass="BUTTON_imagem" value="Gravar" action="#{pontoHandler.salvar}" />
	     	     </t:panelGrid>
	     </h:form>
	     <h:form>
	     	     <!-- Mostra as msgs de erro-->
	     	     <h:messages style="color:red" />
	     </h:form>
	     	     <h:form>
	     	     <t:panelGrid align="center">
	     	     	     <h:dataTable value="#{pontoHandler.allPonto}" id="tabelaDados"
	     	     	     	     rows="5" var="p" border="1"
	     	     	     	     rendered="#{not empty pontoHandler.allPonto}"
	     	     	     	     styleClass="EDIT_BACKGROUND" headerClass="cabecalho"
	     	     	     	     rowClasses="linha1,linha2">
	     	     	     	     <h:column>
	     	     	     	     	     <f:facet name="header">
	     	     	     	     	     	     <h:outputText value="ID" />
	     	     	     	     	     </f:facet>
	     	     	     	     	     <h:outputText value="#{p.id}" />
	     	     	     	     </h:column>
	     	     	     	     <h:column>
	     	     	     	     	     <f:facet name="header">
	     	     	     	     	     	     <h:outputText value="Latitude" />
	     	     	     	     	     </f:facet>
	     	     	     	     	     <h:outputText value="#{p.latitude}" />
	     	     	     	     </h:column>
                      <h:column>
	     	     	     	     	     <f:facet name="header">
	     	     	     	     	     	     <h:outputText value="Exclus‹o" />
	     	     	     	     	     </f:facet>
	     	     	     	     	     <h:commandLink actionListener="#{pontoHandler.excluir}">
	     	     	     	     	     	     <h:outputText value="Excluir" />
	     	     	     	     	     	     <f:param id="excluirId" name="id" value="#{p.id}" />
	     	     	     	     	     </h:commandLink>
	     	     	     	     </h:column>
	     	     	     </h:dataTable>
	     	     	     <t:dataScroller for="tabelaDados" paginator="true"
	     	     	     	     paginatorMaxPages="10"></t:dataScroller>
	     	     </t:panelGrid>
	     </h:form>
</f:view>

Monday, July 27, 2009
Faces Config
    <?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://
java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config>

<application>
	   	  <message-bundle>
	   	  	   messages
	   	  </message-bundle>
</application>
<managed-bean>
	   	  <managed-bean-name>pontoHandler</managed-bean-name>
	   	  <managed-bean-class>br.com.possege.nx.handler.ponto.PontoHandler</managed-bean-class>
	   	  <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<navigation-rule>
	   <from-view-id>*</from-view-id>
	   <navigation-case>
	   	   	  <from-outcome>menuCadastroPonto</from-outcome>
	   	   	  <to-view-id>/ponto.jsp</to-view-id>
	   </navigation-case>
</navigation-rule>




Monday, July 27, 2009
Run Forrest, Run




Monday, July 27, 2009
IDEs Java
                 •Netbeans

                 •Eclipse
                   – EasyEclipse
                   – MyEclipse
                   – Red Hat Developer Studio

                 •Rational Application Developer – WSAD/RAD

                 •JDeveloper




Monday, July 27, 2009
Customizações




Monday, July 27, 2009
Customizações

                 •Facilidade na customização de:
                   –Validadores
                   –Conversores
                   –Componentes de Interface
                   –Renderizadores
                   –Mensagens




Monday, July 27, 2009
Mudando o Default




Monday, July 27, 2009
Mudando o Default

  •Montagem de templates: como Clay (Shale) e Facelets e substituir um pelo outro é
   questão de uma linha de configuração.


  •A beans factory: porque não usar Spring do que managed beans?


  •Renderização dos componentes: existem implementações, utilizando por exemplo XUL
   ou HTML + Ajax.




Monday, July 27, 2009
As Implementações




Monday, July 27, 2009
Implementações
                 • Apache
                     – MyFaces
                        • Tomahawk/ Sandbox/ Tobago/ Trinidad/ Orchestra

                 • Red Hat/JBoss
                     – RichFaces
                     – Ajax4JSF

                 • Red Hat/JBoss
                     – JBoss Seam

                 • ICEsoft Technologies Inc.
                     – ICEfaces

                 • Oracle
                     – Mojarra

                 • Oracle
                     – ADF Faces




Monday, July 27, 2009
REST




Monday, July 27, 2009
O que é Web Service?



Monday, July 27, 2009
Web Services

   • Comunicação entre aplicações via INTERNET;

   • Mais informações?
    • Consulte o Wikipédia: http://pt.wikipedia.org/wiki/Web_service

Monday, July 27, 2009
Monday, July 27, 2009
CQ Teste
                        Primeira Pergunta:
                          O que é REST?




Monday, July 27, 2009
Monday, July 27, 2009
O que é REST?


                                 ?


                             ?
Monday, July 27, 2009
Monday, July 27, 2009
Errado, a resposta certa
                           É:




Monday, July 27, 2009
Web Services - REST




Monday, July 27, 2009
REST
    •      REpresentational State Transfer (Transferência de Estado
           Representacional);

    •      Este termo surgiu no ano de 2000;

    •      Em uma tese de doutorado de Roy Fielding;

    •      Baseado no protocolo HTTP;

          •      POST, GET, PUT e DELETE (Menos o POST as demais são
                 freqüentemente envolvidas com CRUD).

    •      Cada recurso é direcionado através de sua URI;

    •      Sintaxe Universal;

    •      Mais simples;

    •      Menos Overhead de protocolos.
Monday, July 27, 2009
REST
     • Utiliza Recursos (URI - Identificador Uniforme de
             Recurso);

     • Se comunicam através de uma interface HTTP;
     • Pode ser transmitido por diversos conectores, porém
             não poderá ver mais nada do que o seu pedido;

     • Assim não é necessário conhecer proxys, caches e etc.


Monday, July 27, 2009
Arquitetura REST




         http://brunopereira.org/webservicesrest-arquitetura/


Monday, July 27, 2009
Declarativo




         http://brunopereira.org/webservicesrest-arquitetura/



Monday, July 27, 2009
Código Rest com Jersey
 @Path("/paisesWS")
 public class PaisesRest {

         @GET
         @Produces("text/plain")
         public String getClichedMessage() {
         	 List<String> paises = new ArrayList<String>();
         	 paises.add("======Listando alguns Paises via REST + Jersey======");
         	 paises.add("n Brasil");
         	 paises.add("n India");
         	 paises.add("n Argentina");
         	 paises.add("n Guatemala");
         	 paises.add("n Estou no meu WebService sendo acessado");
         	
              return paises.toString();
         }
 }

Monday, July 27, 2009
Alguns Frameworks
        •       API REST para Java - JAX-RS:

              •         http://jcp.org/aboutJava/communityprocess/final/jsr311/
                        index.html

        •       GlassFish Jersey:

              •         https://jersey.dev.java.net/

        •       JBoss RestEasy:

              •         http://www.jboss.org/resteasy/

        •       Restlet:

              •         http://www.restlet.org/

        •       Apache CXF:

              •
Monday, July 27, 2009
                        http://cxf.apache.org/
JSF & REST
                    • Imagine que precise de tags em JSF para
                        criar um Web Service REST como um
                        ATOM, padrão que segue a mesma idéia de
                        RSS.
                    • Como faria?

                    • É com você Rafinha...
Monday, July 27, 2009
Monday, July 27, 2009
Não faço a menor idéia e
                            vocês aí da platéia?
                            Alguma idéia?




Monday, July 27, 2009
Monday, July 27, 2009
Haaaaaa, acertou quem disse
                           que há Tags para o JSF
                           suportar Rest.




Monday, July 27, 2009
Tag Suport JSF/REST
   • RestFaces
     • https://restfaces.dev.java.net/
   • Para RSS
   • RSS4JSF
     • http://code.google.com/p/rss4jsf/wiki/Usage
   • FaceRSS
     • http://rsslib4j.sourceforge.net
   • YARFRAW
     • http://yarfraw.sourceforge.net/
Monday, July 27, 2009
Monday, July 27, 2009
Meninos e Meninas lembrem-se:
                        Nem REST, nem JSF é uma solução perfeita,
                                          ou seja,
                                   No Silver Bullet.




Monday, July 27, 2009
Monday, July 27, 2009
É brincadeira viu, e se eu
                             precisar usar em um
                             aplicativo não JSF?




Monday, July 27, 2009
Monday, July 27, 2009
Fique frio, eu ainda não terminei, olhe agora...




Monday, July 27, 2009
Outros Frameworks e Linguagens

    • Struts2Rest
     • http://code.google.com/p/fulworx/
    • SpringMVC+Restlet
     • http://www.dehora.net/journal/2007/11/19/java-rest/
    • PHP
     • http://www.xml.lt/Resources/Framework
Monday, July 27, 2009
Monday, July 27, 2009
Vamos ver um exemplo.




Monday, July 27, 2009
•         Referências JSF:
   •         Alguns poucos Sites - Pesquise no Google:


         •           http://javawora.blogspot.com/search/label/JSF


         •           http://groups.google.com.br/group/javasf/?pli=1


         •           http://www.rponte.com.br/2008/06/30/o-que-esperar-do-jsf-20/


         •           http://www.caelum.com.br


         •           http://www.guj.com.br/java.tutorial.artigo.158.1.guj


         •           http://java.sun.com/javaee/javaserverfaces/


         •           www.jcp.org


                 •         JSRs: 127; 252; 314.

• Revistas:
    – Mundo Java nº: 21 e posteriores.
    – Java Magazine nº: 23; 26; 43; 44; 45; 46; 47; 48 e posteriores.

• Livros:
     – Faces in Action (Kito Mann – Manning, 2004);
     – JavaServer Faces (Hans Bergsten – O´Reilly, 2004);
     – Core JavaServer Faces (David Geary e Cay Horstmann).




Monday, July 27, 2009
•           Referências REST:
     •           Alguns poucos Sites - Pesquise no Google:


             •           http://blpsilva.wordpress.com/2008/04/24/apresentacao-sobre-web-services-rest/


             •           http://unfoldingtheweb.com/2009/07/20/to-rest-or-not-to-rest/


             •           http://iv.incubadora.fapesp.br/portal/doc/TutorialReST


             •           http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm


             •           http://pt.wikipedia.org/wiki/REST


             •           http://www.megginson.com/blogs/quoderat/2005/03/09/public-rest-application-seniors-canada-online/


             •           http://www.markbaker.ca/blog//2005/04/14/#2005-04-amazon-next


             •           http://jim.webber.name/2008/09/17/595957ef-63a2-4ff9-a477-43ea8db51cdd.aspx


             •           http://www.infoq.com/interviews/jim-webber-qcon-london


             •           http://www.devmedia.com.br/articles/viewcomp.asp?comp=7357


             •           http://wikis.sun.com/display/Jersey/Main


             •           www.jcp.org


                     •         JSR: 311.

 • Revistas:
     – Mundo Java;
     – Java Magazine.

 • Livros:
      – Developing Enterprise Web Services: An Architect's Guide (James Webber e Sandeep Chatterjee);
      – RESTful Web Services (Leonard Richardson, Sam Ruby e David Heinemeier Hansson).

Monday, July 27, 2009
Dúvidas?




Monday, July 27, 2009
Fim




                                                       Obrigado!


                        eduardo.bregaida@gmail.com
                             http://bregaida.com
                        http://javawora.blogspot.com
                               twitter: bregaida

Monday, July 27, 2009

Mais conteúdo relacionado

PDF
Java Web - MVC básico com JSP e Servlets
PPTX
Introdução a jsf
PPTX
Apresentação JSF
PDF
Tutorial +login+mvc
PPT
JavaServer Faces Produtividade em Desenvolvimento
PDF
Introdução ao Desenvolvimento de aplicações WEB com JSP
PDF
Repensando padrões e boas práticas java ee
PDF
JSF - JavaServer Faces
Java Web - MVC básico com JSP e Servlets
Introdução a jsf
Apresentação JSF
Tutorial +login+mvc
JavaServer Faces Produtividade em Desenvolvimento
Introdução ao Desenvolvimento de aplicações WEB com JSP
Repensando padrões e boas práticas java ee
JSF - JavaServer Faces

Mais procurados (20)

PDF
Java Web 1 Introducao
PPT
WEB 2 - Aula 01 - 02.08
PPT
Produtividade com JavaServer Faces
PDF
Java Web 5 - JSP, Expression Language e Taglibs
PDF
JavaServer Faces - Desenvolvendo aplicações web com produtividade
PDF
Introdução ao JavaServer Faces
PDF
J530 15 workshop
PDF
Asp.Net Mvc Dev Days09 V3 Pt
KEY
Melhores apps rails
KEY
CakePHP e o desenvolvimento rápido
PPTX
Apresentação jsf 2.0
ODP
Arquitetura MVC, JavaBeans e DAO
PDF
Apache Wicket - Desenvolvimento WEB orientado a componentes
PDF
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
PPT
Java Web Dev Introdução
PDF
Apresentação jsf 1_2
PPT
Desenvolvendo aplicações web com o framework cakephp
PDF
Desenvolvimento Front end (AngularJS e Bootstrap)
PDF
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
PDF
Model View Controller
Java Web 1 Introducao
WEB 2 - Aula 01 - 02.08
Produtividade com JavaServer Faces
Java Web 5 - JSP, Expression Language e Taglibs
JavaServer Faces - Desenvolvendo aplicações web com produtividade
Introdução ao JavaServer Faces
J530 15 workshop
Asp.Net Mvc Dev Days09 V3 Pt
Melhores apps rails
CakePHP e o desenvolvimento rápido
Apresentação jsf 2.0
Arquitetura MVC, JavaBeans e DAO
Apache Wicket - Desenvolvimento WEB orientado a componentes
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Java Web Dev Introdução
Apresentação jsf 1_2
Desenvolvendo aplicações web com o framework cakephp
Desenvolvimento Front end (AngularJS e Bootstrap)
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Model View Controller
Anúncio

Semelhante a JSF & REST (20)

PDF
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
PDF
JSF com Primefaces
PDF
GUJavaSC - Combinando AngularJS com Java EE
PDF
QCon 2015 - Combinando AngularJS com Java EE
PDF
Minicurso Java Server Faces
PPT
WebSiviu - Sistema de Informação sobre Violência Urbana.
PDF
Começando com Java EE 6
PDF
Interfaces ricas JSF
PDF
Mvc model view controller - java para desenvolvimento web
PDF
Java Server Faces 2 & Rich Faces 4
PDF
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
PDF
Java EE 6 e JBoss 6.0
PDF
Sistema S2DG e Tecnologias Web
PPT
Enterprise JavaBeans simples e descomplicado, na prática
PDF
Novidades do JSF: Um tour completo no JSF 2.2
PDF
Apostilava Java EE 5 - 2007
PDF
Como escolher o Framework Java para web?
PDF
Aula parte 1 de JSF 2.2
PPT
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
PDF
Java com Excelência
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
JSF com Primefaces
GUJavaSC - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EE
Minicurso Java Server Faces
WebSiviu - Sistema de Informação sobre Violência Urbana.
Começando com Java EE 6
Interfaces ricas JSF
Mvc model view controller - java para desenvolvimento web
Java Server Faces 2 & Rich Faces 4
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Java EE 6 e JBoss 6.0
Sistema S2DG e Tecnologias Web
Enterprise JavaBeans simples e descomplicado, na prática
Novidades do JSF: Um tour completo no JSF 2.2
Apostilava Java EE 5 - 2007
Como escolher o Framework Java para web?
Aula parte 1 de JSF 2.2
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
Java com Excelência
Anúncio

Mais de Eduardo Bregaida (20)

PDF
War Room - Bregaida - V1
PDF
Feedbacks - V1
PDF
Treinamento Agile com Scrum - V2
PDF
Treinamento Agile com scrum
PDF
Aviação Civil LT sciensa
PDF
Management 3.0 - V. Revisada
PDF
Minha história
PDF
DDD + BDD + TDD + Scrum
PDF
Java acsp
PDF
Aula 15 minutos
PDF
Java+DDD+BDD+TDD=Sucesso Total
PDF
DDD + BDD + TDD - RF 2015
PDF
DDD - Linguagem Ubíqua
PDF
Scrum - IMES 2013 (Remodelada)
KEY
Spring MVC - QConSP
KEY
Cultura da Empresa - um problema na Adoção Ágil - Conexão Java
KEY
Scrum - passos e desafios - agile tour
PDF
Cultura da empresa - um problema na adoção ágil
PDF
Refatoração de código com Capitão Nascimento versão completa
PDF
Falhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeis
War Room - Bregaida - V1
Feedbacks - V1
Treinamento Agile com Scrum - V2
Treinamento Agile com scrum
Aviação Civil LT sciensa
Management 3.0 - V. Revisada
Minha história
DDD + BDD + TDD + Scrum
Java acsp
Aula 15 minutos
Java+DDD+BDD+TDD=Sucesso Total
DDD + BDD + TDD - RF 2015
DDD - Linguagem Ubíqua
Scrum - IMES 2013 (Remodelada)
Spring MVC - QConSP
Cultura da Empresa - um problema na Adoção Ágil - Conexão Java
Scrum - passos e desafios - agile tour
Cultura da empresa - um problema na adoção ágil
Refatoração de código com Capitão Nascimento versão completa
Falhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeis

Último (19)

PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Processos na gestão de transportes, TM100 Col18
PDF
COBITxITIL-Entenda as diferença em uso governança TI
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Aula04-Academia Heri- Tecnologia Geral 2025
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula 18 - Manipulacao De Arquivos python
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Apple Pippin Uma breve introdução. - David Glotz
Custos e liquidação no SAP Transportation Management, TM130 Col18
Processos na gestão de transportes, TM100 Col18
COBITxITIL-Entenda as diferença em uso governança TI

JSF & REST

  • 2. JavaServer Faces & REST Eduardo Bregaida Monday, July 27, 2009
  • 4. Você vai gostar Monday, July 27, 2009
  • 5. Quem Sou? • Desenvolvedor Java há 5 anos; • Possui experiência com J2SE, J2EE nas empresas: • Saargummi do Brasil LTDA, 3º Quadrante Informática, G&P, JAPI Informática LTDA, SOS Computadores, Tata Consultancy Services - TCS (ABNAMRO Bank, VisaNet, Cardif), IT Training, Masterdom (PRODESP), Possege (Co-Fundador) como Analista de Sistemas Java; • Agente certificador do Projeto de ensino a distância JEDI no grande ABC em São Paulo: • Membro do JCP - Java Community Process; • Certificado IBM em Message Broker Developer Solution; • Certificado Scrum Master; • Criador do Blog Java Anywhere - www.javawora.blogspot.com • Coordenador e palestrante em diversos eventos de Java. Monday, July 27, 2009
  • 7. CQ Teste Primeira Pergunta: O que é JSF? Monday, July 27, 2009
  • 15. Não é nada disso, a resposta certa É: Monday, July 27, 2009
  • 16. JSF - Java Server Faces Monday, July 27, 2009
  • 17. O que é JSF? • É mais do que um framework, é uma especificação baseada em MVC; • Suporte a internacionalização; • Facilita criação de telas; • Facilita a transferência dos dados entre telas e camadas de negócio através da EL. • Produtividade para conversores recebidos do formulário para os tipos nas classes; • Flexibilidade para renderização. • Criar modelos simples de eventos entre interfaces gráficas e as classes no servidor. • Mecanismos produtivos para validação de campos na tela. • Facilidade para criação de componentes; Monday, July 27, 2009
  • 18. Especificações • JSF 1.0 e 1.1 – JSR 127 – Problemas com renderização – ELs diferentes entre JSP e JSF – Não portava a tag JSTL <c:forEach> • JSF 1.2 – JSR 252 – Resolveram todos os problemas de incompatibilidade, pois o JSF 1.2 e o JSP 2.1 tiveram muitas uniões e estão dentro do JEE. • JSF 2.0 – JSR 314 – Novo ciclo de vida na parte do cliente (Browser); – Escopo de navegação, antes utilizado através do MyFaces Tomahawk, JBoss Seam e Spring Annotation; – Adeus XML, configurações via Annotations; – Exception Handler, quando ocorrer um erro direcionamos para uma página de erro; – Templating; – Subimissão Via GET, antes só podia via POST; – AJAX nativo; – Serviços JSF sendo acessador via REST; – E muito mais, acompanhe pelo JCP a especificação. Monday, July 27, 2009
  • 19. Managed Beans •É uma classe que expões objetos de negócio para camada de apresentação; •São Registrados no faces-config.xml; •Objetos que sofrerão alterações em seus atributos durante uma requisição, assim como seus métodos podem ser chamados a partir de um command; •São como as Actions do Struts, porém os form beans são injetados por setters dentro do seu próprio bean; •Os ManagedBeans serão usados na EL das páginas. Monday, July 27, 2009
  • 20. EL - Expression Language •É uma poderosa linguagem de expressão (Linguagem de navegação) para acessar propriedades de beans e coleções. •Quando ocorrer uma requisição pelo browser é preenchido dinamicamente os elementos da página pela camada de negócios. •Quando ocorre um Submit ocorre a modificação no estado da camada de negócio. Monday, July 27, 2009
  • 21. Roteiro de Uso Monday, July 27, 2009
  • 22. Roteiro Básico 1.Criar um bean que represente o formulário; 2.Criar os DAOs; 3.Criar um controlador (Handler) que leia os dados do formulário, chame a lógica de negócio, guarde os resultados em beans e tenha um retorno; 4.Criar os JSP´s responsáveis por cada retorno declarado; 5.NUNCA Esqueça: <f:view> e <h:form> para formulários; 6.Especificar o Action Controller com o atributo de ação <h:commandButton>; 7.O faces-config é usado para declarar o form bean e as regras de navegação. Monday, July 27, 2009
  • 23. Exemplo de Código Monday, July 27, 2009
  • 24. Bean • @Entity public class Ponto { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private Double latitude; private Double longitude; private Double raio; private boolean status; private String descricao; //getters and setters } Monday, July 27, 2009
  • 25. DAO public class pontoDAO { private Session session; private Logger logger = Logger.getLogger(Ponto.class); public pontoDAO(Session session) { logger.info("Construtor" + session); this.session = session; } public void salvar(Ponto ponto) { session.saveOrUpdate(ponto); } public void excluir(Ponto ponto) { session.delete(ponto); } public Ponto selecionar(Ponto ponto) { return (Ponto) session.load(Ponto.class, ponto.getId()); } } Monday, July 27, 2009
  • 26. public class PontoHandler { private Ponto ponto = new Ponto(); public void selecionaDados() { Session session = HibernateUtil.getCurrentSession(); DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class); Managed Bean dao.load((long) ponto.getId()); } public Ponto getPonto() { return ponto; } public void setPonto(Ponto ponto) { this.ponto = ponto; } public List<Ponto> getAllPonto() { Session session = HibernateUtil.getCurrentSession(); DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class); return dao.list(); } public void carregar(ActionEvent event) { UIComponent comandLink = event.getComponent(); UIParameter parameter = (UIParameter) comandLink .findComponent("editId"); Long id = (Long) parameter.getValue(); Session session = HibernateUtil.getCurrentSession(); DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class); this.ponto = dao.load(id); } public void excluir(ActionEvent event) { UIComponent comandLink = event.getComponent(); UIParameter parameter = (UIParameter) comandLink .findComponent("editId"); Long id = (Long) parameter.getValue(); Session session = HibernateUtil.getCurrentSession(); DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class); this.ponto = dao.load(id); dao.deleta(ponto); this.ponto = new Ponto(); } } Monday, July 27, 2009
  • 27. JSP <f:view> <h:form id="menuId"> <t:panelGrid align="center"> <h:selectOneMenu title="Linha" value="#{pontoHandler.ponto.linha}" converter="simpleIndexConverter"> <t:selectItems value="#{horarioHandler.allLinhas}" var="c" itemLabel="#{c.nome}" itemValue="#{c}" /> </h:selectOneMenu> <h:outputText value="Latitude:" styleClass="titulo_campos" /> <h:inputText value="#{pontoHandler.ponto.latitude}" required="true" validator="#{validadorHandler.validaNumeroReal}" /> <h:commandButton styleClass="BUTTON_imagem" value="Gravar" action="#{pontoHandler.salvar}" /> </t:panelGrid> </h:form> <h:form> <!-- Mostra as msgs de erro--> <h:messages style="color:red" /> </h:form> <h:form> <t:panelGrid align="center"> <h:dataTable value="#{pontoHandler.allPonto}" id="tabelaDados" rows="5" var="p" border="1" rendered="#{not empty pontoHandler.allPonto}" styleClass="EDIT_BACKGROUND" headerClass="cabecalho" rowClasses="linha1,linha2"> <h:column> <f:facet name="header"> <h:outputText value="ID" /> </f:facet> <h:outputText value="#{p.id}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Latitude" /> </f:facet> <h:outputText value="#{p.latitude}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Exclus‹o" /> </f:facet> <h:commandLink actionListener="#{pontoHandler.excluir}"> <h:outputText value="Excluir" /> <f:param id="excluirId" name="id" value="#{p.id}" /> </h:commandLink> </h:column> </h:dataTable> <t:dataScroller for="tabelaDados" paginator="true" paginatorMaxPages="10"></t:dataScroller> </t:panelGrid> </h:form> </f:view> Monday, July 27, 2009
  • 28. Faces Config <?xml version="1.0"?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http:// java.sun.com/dtd/web-facesconfig_1_1.dtd"> <faces-config> <application> <message-bundle> messages </message-bundle> </application> <managed-bean> <managed-bean-name>pontoHandler</managed-bean-name> <managed-bean-class>br.com.possege.nx.handler.ponto.PontoHandler</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <navigation-rule> <from-view-id>*</from-view-id> <navigation-case> <from-outcome>menuCadastroPonto</from-outcome> <to-view-id>/ponto.jsp</to-view-id> </navigation-case> </navigation-rule> Monday, July 27, 2009
  • 29. Run Forrest, Run Monday, July 27, 2009
  • 30. IDEs Java •Netbeans •Eclipse – EasyEclipse – MyEclipse – Red Hat Developer Studio •Rational Application Developer – WSAD/RAD •JDeveloper Monday, July 27, 2009
  • 32. Customizações •Facilidade na customização de: –Validadores –Conversores –Componentes de Interface –Renderizadores –Mensagens Monday, July 27, 2009
  • 33. Mudando o Default Monday, July 27, 2009
  • 34. Mudando o Default •Montagem de templates: como Clay (Shale) e Facelets e substituir um pelo outro é questão de uma linha de configuração. •A beans factory: porque não usar Spring do que managed beans? •Renderização dos componentes: existem implementações, utilizando por exemplo XUL ou HTML + Ajax. Monday, July 27, 2009
  • 36. Implementações • Apache – MyFaces • Tomahawk/ Sandbox/ Tobago/ Trinidad/ Orchestra • Red Hat/JBoss – RichFaces – Ajax4JSF • Red Hat/JBoss – JBoss Seam • ICEsoft Technologies Inc. – ICEfaces • Oracle – Mojarra • Oracle – ADF Faces Monday, July 27, 2009
  • 38. O que é Web Service? Monday, July 27, 2009
  • 39. Web Services • Comunicação entre aplicações via INTERNET; • Mais informações? • Consulte o Wikipédia: http://pt.wikipedia.org/wiki/Web_service Monday, July 27, 2009
  • 41. CQ Teste Primeira Pergunta: O que é REST? Monday, July 27, 2009
  • 43. O que é REST? ? ? Monday, July 27, 2009
  • 45. Errado, a resposta certa É: Monday, July 27, 2009
  • 46. Web Services - REST Monday, July 27, 2009
  • 47. REST • REpresentational State Transfer (Transferência de Estado Representacional); • Este termo surgiu no ano de 2000; • Em uma tese de doutorado de Roy Fielding; • Baseado no protocolo HTTP; • POST, GET, PUT e DELETE (Menos o POST as demais são freqüentemente envolvidas com CRUD). • Cada recurso é direcionado através de sua URI; • Sintaxe Universal; • Mais simples; • Menos Overhead de protocolos. Monday, July 27, 2009
  • 48. REST • Utiliza Recursos (URI - Identificador Uniforme de Recurso); • Se comunicam através de uma interface HTTP; • Pode ser transmitido por diversos conectores, porém não poderá ver mais nada do que o seu pedido; • Assim não é necessário conhecer proxys, caches e etc. Monday, July 27, 2009
  • 49. Arquitetura REST http://brunopereira.org/webservicesrest-arquitetura/ Monday, July 27, 2009
  • 50. Declarativo http://brunopereira.org/webservicesrest-arquitetura/ Monday, July 27, 2009
  • 51. Código Rest com Jersey @Path("/paisesWS") public class PaisesRest { @GET @Produces("text/plain") public String getClichedMessage() { List<String> paises = new ArrayList<String>(); paises.add("======Listando alguns Paises via REST + Jersey======"); paises.add("n Brasil"); paises.add("n India"); paises.add("n Argentina"); paises.add("n Guatemala"); paises.add("n Estou no meu WebService sendo acessado"); return paises.toString(); } } Monday, July 27, 2009
  • 52. Alguns Frameworks • API REST para Java - JAX-RS: • http://jcp.org/aboutJava/communityprocess/final/jsr311/ index.html • GlassFish Jersey: • https://jersey.dev.java.net/ • JBoss RestEasy: • http://www.jboss.org/resteasy/ • Restlet: • http://www.restlet.org/ • Apache CXF: • Monday, July 27, 2009 http://cxf.apache.org/
  • 53. JSF & REST • Imagine que precise de tags em JSF para criar um Web Service REST como um ATOM, padrão que segue a mesma idéia de RSS. • Como faria? • É com você Rafinha... Monday, July 27, 2009
  • 55. Não faço a menor idéia e vocês aí da platéia? Alguma idéia? Monday, July 27, 2009
  • 57. Haaaaaa, acertou quem disse que há Tags para o JSF suportar Rest. Monday, July 27, 2009
  • 58. Tag Suport JSF/REST • RestFaces • https://restfaces.dev.java.net/ • Para RSS • RSS4JSF • http://code.google.com/p/rss4jsf/wiki/Usage • FaceRSS • http://rsslib4j.sourceforge.net • YARFRAW • http://yarfraw.sourceforge.net/ Monday, July 27, 2009
  • 60. Meninos e Meninas lembrem-se: Nem REST, nem JSF é uma solução perfeita, ou seja, No Silver Bullet. Monday, July 27, 2009
  • 62. É brincadeira viu, e se eu precisar usar em um aplicativo não JSF? Monday, July 27, 2009
  • 64. Fique frio, eu ainda não terminei, olhe agora... Monday, July 27, 2009
  • 65. Outros Frameworks e Linguagens • Struts2Rest • http://code.google.com/p/fulworx/ • SpringMVC+Restlet • http://www.dehora.net/journal/2007/11/19/java-rest/ • PHP • http://www.xml.lt/Resources/Framework Monday, July 27, 2009
  • 67. Vamos ver um exemplo. Monday, July 27, 2009
  • 68. Referências JSF: • Alguns poucos Sites - Pesquise no Google: • http://javawora.blogspot.com/search/label/JSF • http://groups.google.com.br/group/javasf/?pli=1 • http://www.rponte.com.br/2008/06/30/o-que-esperar-do-jsf-20/ • http://www.caelum.com.br • http://www.guj.com.br/java.tutorial.artigo.158.1.guj • http://java.sun.com/javaee/javaserverfaces/ • www.jcp.org • JSRs: 127; 252; 314. • Revistas: – Mundo Java nº: 21 e posteriores. – Java Magazine nº: 23; 26; 43; 44; 45; 46; 47; 48 e posteriores. • Livros: – Faces in Action (Kito Mann – Manning, 2004); – JavaServer Faces (Hans Bergsten – O´Reilly, 2004); – Core JavaServer Faces (David Geary e Cay Horstmann). Monday, July 27, 2009
  • 69. Referências REST: • Alguns poucos Sites - Pesquise no Google: • http://blpsilva.wordpress.com/2008/04/24/apresentacao-sobre-web-services-rest/ • http://unfoldingtheweb.com/2009/07/20/to-rest-or-not-to-rest/ • http://iv.incubadora.fapesp.br/portal/doc/TutorialReST • http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm • http://pt.wikipedia.org/wiki/REST • http://www.megginson.com/blogs/quoderat/2005/03/09/public-rest-application-seniors-canada-online/ • http://www.markbaker.ca/blog//2005/04/14/#2005-04-amazon-next • http://jim.webber.name/2008/09/17/595957ef-63a2-4ff9-a477-43ea8db51cdd.aspx • http://www.infoq.com/interviews/jim-webber-qcon-london • http://www.devmedia.com.br/articles/viewcomp.asp?comp=7357 • http://wikis.sun.com/display/Jersey/Main • www.jcp.org • JSR: 311. • Revistas: – Mundo Java; – Java Magazine. • Livros: – Developing Enterprise Web Services: An Architect's Guide (James Webber e Sandeep Chatterjee); – RESTful Web Services (Leonard Richardson, Sam Ruby e David Heinemeier Hansson). Monday, July 27, 2009
  • 71. Fim Obrigado! eduardo.bregaida@gmail.com http://bregaida.com http://javawora.blogspot.com twitter: bregaida Monday, July 27, 2009