Your SlideShare is downloading. ×
0
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
JSF & REST
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

JSF & REST

3,535

Published on

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

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,535
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
136
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Monday, July 27, 2009
  • 2. JavaServer Faces & REST Eduardo Bregaida Monday, July 27, 2009
  • 3. 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
  • 6. Monday, July 27, 2009
  • 7. CQ Teste Primeira Pergunta: O que é JSF? Monday, July 27, 2009
  • 8. Monday, July 27, 2009
  • 9. JSF? Monday, July 27, 2009
  • 10. Monday, July 27, 2009
  • 11. JSF? Monday, July 27, 2009
  • 12. Monday, July 27, 2009
  • 13. JSF? Monday, July 27, 2009
  • 14. 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
  • 31. Customizações 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
  • 35. As Implementações 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
  • 37. REST 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
  • 40. Monday, July 27, 2009
  • 41. CQ Teste Primeira Pergunta: O que é REST? Monday, July 27, 2009
  • 42. Monday, July 27, 2009
  • 43. O que é REST? ? ? Monday, July 27, 2009
  • 44. 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
  • 54. 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
  • 56. 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
  • 59. 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
  • 61. Monday, July 27, 2009
  • 62. É brincadeira viu, e se eu precisar usar em um aplicativo não JSF? Monday, July 27, 2009
  • 63. 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
  • 66. 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
  • 70. Dúvidas? Monday, July 27, 2009
  • 71. Fim Obrigado! eduardo.bregaida@gmail.com http://bregaida.com http://javawora.blogspot.com twitter: bregaida Monday, July 27, 2009

×