Monday, July 27, 2009
JavaServer Faces
                               &
                              REST
                            Eduardo B...
Monday, July 27, 2009
Você vai gostar




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

                •       Possui experiência com J2SE, J2EE...
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;
                 • Suport...
Especificações
                 • JSF 1.0 e 1.1 – JSR 127
                     – Problemas com renderização
               ...
Managed Beans
                 •É uma classe que expões objetos de negócio para camada de
                  apresentação;
...
EL - Expression Language

                 •É uma poderosa linguagem de expressão (Linguagem de navegação)
               ...
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 ...
Exemplo de Código



Monday, July 27, 2009
Bean
    •       @Entity

public class Ponto {
	 @Id
	 @GeneratedValue(strategy = GenerationType.IDENTITY)
	 private long ...
DAO
      public class pontoDAO {

	     private Session session;

	     private Logger logger = Logger.getLogger(Ponto.cl...
public class PontoHandler {
      private Ponto ponto = new Ponto();
      public void selecionaDados() {
      	
      	
...
JSP
      <f:view>
	     <h:form id="menuId">
	     	     <t:panelGrid align="center">
	     	     	     <h:selectOneMenu ...
Faces Config
    <?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Confi...
Run Forrest, Run




Monday, July 27, 2009
IDEs Java
                 •Netbeans

                 •Eclipse
                   – EasyEclipse
                   – MyEc...
Customizações




Monday, July 27, 2009
Customizações

                 •Facilidade na customização de:
                   –Validadores
                   –Conver...
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 l...
As Implementações




Monday, July 27, 2009
Implementações
                 • Apache
                     – MyFaces
                        • Tomahawk/ Sandbox/ Tobag...
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://p...
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 te...
REST
     • Utiliza Recursos (URI - Identificador Uniforme de
             Recurso);

     • Se comunicam através de uma in...
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")
    ...
Alguns Frameworks
        •       API REST para Java - JAX-RS:

              •         http://jcp.org/aboutJava/community...
JSF & REST
                    • Imagine que precise de tags em JSF para
                        criar um Web Service REST...
Monday, July 27, 2009
Não faço a menor idéia e
                            vocês aí da platéia?
                            Alguma idéia?




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


...
Tag Suport JSF/REST
   • RestFaces
     • https://restfaces.dev.java.net/
   • Para RSS
   • RSS4JSF
     • http://code.go...
Monday, July 27, 2009
Meninos e Meninas lembrem-se:
                        Nem REST, nem JSF é uma solução perfeita,
                          ...
Monday, July 27, 2009
É brincadeira viu, e se eu
                             precisar usar em um
                             aplicativo não JS...
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
     • ...
Monday, July 27, 2009
Vamos ver um exemplo.




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


         •           http://javawora.b...
•           Referências REST:
     •           Alguns poucos Sites - Pesquise no Google:


             •           http:/...
Dúvidas?




Monday, July 27, 2009
Fim




                                                       Obrigado!


                        eduardo.bregaida@gmail....
Upcoming SlideShare
Loading in...5
×

JSF & REST

3,608

Published on

Apresentação realizada na IT Training Sábado dia 25/07.

Published in: Technology, News & Politics
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,608
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
137
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

JSF & REST

  1. 1. Monday, July 27, 2009
  2. 2. JavaServer Faces & REST Eduardo Bregaida Monday, July 27, 2009
  3. 3. Monday, July 27, 2009
  4. 4. Você vai gostar Monday, July 27, 2009
  5. 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
  6. 6. Monday, July 27, 2009
  7. 7. CQ Teste Primeira Pergunta: O que é JSF? Monday, July 27, 2009
  8. 8. Monday, July 27, 2009
  9. 9. JSF? Monday, July 27, 2009
  10. 10. Monday, July 27, 2009
  11. 11. JSF? Monday, July 27, 2009
  12. 12. Monday, July 27, 2009
  13. 13. JSF? Monday, July 27, 2009
  14. 14. Monday, July 27, 2009
  15. 15. Não é nada disso, a resposta certa É: Monday, July 27, 2009
  16. 16. JSF - Java Server Faces Monday, July 27, 2009
  17. 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. 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. 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. 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. 21. Roteiro de Uso Monday, July 27, 2009
  22. 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. 23. Exemplo de Código Monday, July 27, 2009
  24. 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. 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. 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. 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. 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. 29. Run Forrest, Run Monday, July 27, 2009
  30. 30. IDEs Java •Netbeans •Eclipse – EasyEclipse – MyEclipse – Red Hat Developer Studio •Rational Application Developer – WSAD/RAD •JDeveloper Monday, July 27, 2009
  31. 31. Customizações Monday, July 27, 2009
  32. 32. Customizações •Facilidade na customização de: –Validadores –Conversores –Componentes de Interface –Renderizadores –Mensagens Monday, July 27, 2009
  33. 33. Mudando o Default Monday, July 27, 2009
  34. 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
  35. 35. As Implementações Monday, July 27, 2009
  36. 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
  37. 37. REST Monday, July 27, 2009
  38. 38. O que é Web Service? Monday, July 27, 2009
  39. 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
  40. 40. Monday, July 27, 2009
  41. 41. CQ Teste Primeira Pergunta: O que é REST? Monday, July 27, 2009
  42. 42. Monday, July 27, 2009
  43. 43. O que é REST? ? ? Monday, July 27, 2009
  44. 44. Monday, July 27, 2009
  45. 45. Errado, a resposta certa É: Monday, July 27, 2009
  46. 46. Web Services - REST Monday, July 27, 2009
  47. 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. 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. 49. Arquitetura REST http://brunopereira.org/webservicesrest-arquitetura/ Monday, July 27, 2009
  50. 50. Declarativo http://brunopereira.org/webservicesrest-arquitetura/ Monday, July 27, 2009
  51. 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. 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. 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
  54. 54. Monday, July 27, 2009
  55. 55. Não faço a menor idéia e vocês aí da platéia? Alguma idéia? Monday, July 27, 2009
  56. 56. Monday, July 27, 2009
  57. 57. Haaaaaa, acertou quem disse que há Tags para o JSF suportar Rest. Monday, July 27, 2009
  58. 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
  59. 59. Monday, July 27, 2009
  60. 60. Meninos e Meninas lembrem-se: Nem REST, nem JSF é uma solução perfeita, ou seja, No Silver Bullet. Monday, July 27, 2009
  61. 61. Monday, July 27, 2009
  62. 62. É brincadeira viu, e se eu precisar usar em um aplicativo não JSF? Monday, July 27, 2009
  63. 63. Monday, July 27, 2009
  64. 64. Fique frio, eu ainda não terminei, olhe agora... Monday, July 27, 2009
  65. 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
  66. 66. Monday, July 27, 2009
  67. 67. Vamos ver um exemplo. Monday, July 27, 2009
  68. 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. 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
  70. 70. Dúvidas? Monday, July 27, 2009
  71. 71. Fim Obrigado! eduardo.bregaida@gmail.com http://bregaida.com http://javawora.blogspot.com twitter: bregaida Monday, July 27, 2009
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×