JSF e outras tecnologias Java Web - IMES.java

7.047 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
7.047
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.497
Ações
Compartilhamentos
0
Downloads
234
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

JSF e outras tecnologias Java Web - IMES.java

  1. 1. JSF e outras tecnologias Web
  2. 2. Apresentação <ul><li>Eduardo Bregaida </li></ul><ul><ul><li>Analista de sistemas Java da Masterdom; </li></ul></ul><ul><ul><li>Instrutor Java da IT Training; </li></ul></ul><ul><ul><li>Fundador da FireAnt Software; </li></ul></ul><ul><ul><li>Fundador do IMES.java; </li></ul></ul><ul><ul><li>Membro do Java Community Process (JCP); </li></ul></ul><ul><ul><li>Agente Certificador do projeto JEDI na região do grande ABC; </li></ul></ul><ul><ul><li>Fundador do Blog Java Anhywhere. </li></ul></ul>
  3. 3. JSF e outras tecnologias Web <ul><li>Um pouco de história </li></ul><ul><ul><li>HTML </li></ul></ul><ul><ul><li>Servlets </li></ul></ul><ul><ul><li>JSP </li></ul></ul><ul><li>Frameworks </li></ul><ul><ul><li>Action Based </li></ul></ul><ul><ul><li>Component Based </li></ul></ul><ul><li>Demonstração </li></ul><ul><li>Bate-Papo </li></ul>
  4. 4. JSF e outras tecnologias Web <ul><li>HTML </li></ul><ul><ul><li>Estático; </li></ul></ul><ul><ul><li>Não tem conexão com Base De Dados; </li></ul></ul><ul><ul><li>Simples. </li></ul></ul>
  5. 5. JSF e outras tecnologias Web <ul><li>OlaMundo.html </li></ul><html> <head> <title>Olá Mundo</title> </head> <body> Olá Mundo. </body> </html>
  6. 6. JSF e outras tecnologias Web <ul><li>Servlets </li></ul><ul><ul><li>É uma extensão de servidores; </li></ul></ul><ul><ul><li>Disponibiliza uma interface para o servidor; </li></ul></ul><ul><ul><li>Recursos Dinâmicos para web; </li></ul></ul><ul><ul><li>Interage com os clientes; </li></ul></ul><ul><ul><li>Necessita de um Servlet Container. </li></ul></ul>
  7. 7. JSF e outras tecnologias Web <ul><li>OlaMundoServlet.java </li></ul>import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(&quot;text/html&quot;); PrintWriter out = response.getWriter(); out.println(&quot;<html><body>Olá Mundo</body></html>&quot;); out.close(); } }
  8. 8. JSF e outras tecnologias Web <ul><li>Java Server Pages – JSP </li></ul><ul><ul><li>O JSP foi desenvolvido APENAS para mostrar resultados, o SERVLET deveria fazer a ponte com o banco de dados e fazer as regras de negócio; </li></ul></ul><ul><ul><li>Facilitar a criação de HTML; </li></ul></ul><ul><ul><li>Scriplets NOJENTO, colocar código Java no JSP. </li></ul></ul>
  9. 9. JSF e outras tecnologias Web <ul><li>OlaMundo.jsp </li></ul><ul><ul><li><html> </li></ul></ul><ul><ul><ul><li><body> </li></ul></ul></ul><ul><ul><ul><ul><li><% String mensagem = &quot;Olá Mundo!&quot;; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>out.println(mensagem); %> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><br> </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Muito mais simples de editar o html e muito mais complicado de editar o codigo Java<br> </li></ul></ul></ul></ul><ul><ul><ul><li></body> </li></ul></ul></ul><ul><ul><li></html> </li></ul></ul>
  10. 10. JSF e outras tecnologias Web <ul><li>Frameworks </li></ul><ul><ul><li>Frameworks são projetados com a intenção de facilitar o desenvolvimento de software, habilitando designers e programadores a gastarem mais tempo determinando as exigências do software do que com detalhes de baixo nível do sistema. </li></ul></ul>
  11. 11. JSF e outras tecnologias Web <ul><li>Frameworks MVC Action Based </li></ul><ul><ul><li>Frameworks baseados em ações, respondem a chamada de Actions. </li></ul></ul>
  12. 12. JSF e outras tecnologias Web <ul><li>Struts Framework </li></ul><ul><ul><li>MVC-2 para construções de aplicações WEB; </li></ul></ul><ul><ul><li>Cada solicitação HTTP tem que ser respondida com uma resposta HTTP; </li></ul></ul><ul><ul><li>O .do é mapeada no arquivo struts-config.xml; </li></ul></ul><ul><ul><li>O ActionServlet define o Action correspondente para a solicitação; </li></ul></ul><ul><ul><li>o ActionServlet coloca a entrada em um JavaBean , estes JavaBeans são definidos como FormBeans; </li></ul></ul><ul><ul><li>O Action pode acessar o FormBean efetuar qualquer operação e armazenar o resultado em um ResultBean; </li></ul></ul><ul><ul><li>O Action interage com a camada de negócio onde uma base de dados poderá ser atualizada. </li></ul></ul>
  13. 13. JSF e outras tecnologias Web <ul><li>Demonstração Struts Framework </li></ul>
  14. 14. JSF e outras tecnologias Web <ul><li>Struts 2 </li></ul><ul><ul><li>Action Based; </li></ul></ul><ul><ul><li>WebWork engine; </li></ul></ul><ul><ul><li>Marketing sobre o nome Struts. </li></ul></ul><ul><li>? </li></ul>
  15. 15. JSF e outras tecnologias Web <ul><li>HelloWorldStruts2.java </li></ul><ul><li>package br.com.struts2.actions; </li></ul><ul><li>import com.opensymphony.xwork2.ActionSupport; </li></ul><ul><li>public class TesteAction extends ActionSupport { </li></ul><ul><ul><li>private static final long serialVersionUID = 218L; </li></ul></ul><ul><ul><ul><li>private String message; </li></ul></ul></ul><ul><ul><ul><li>//getters and setters para Action </li></ul></ul></ul><ul><ul><li>public String execute() throws Exception { </li></ul></ul><ul><ul><ul><li>this.showHelloWorld(); </li></ul></ul></ul><ul><ul><ul><li>return SUCCESS; </li></ul></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public void showHelloWorld() throws Exception { </li></ul></ul><ul><ul><ul><li>String strReturn = &quot;Olá Mundo&quot;; </li></ul></ul></ul><ul><ul><ul><li>setMessage(strReturn); </li></ul></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>} </li></ul>
  16. 16. JSF e outras tecnologias Web <ul><li>hello.jsp </li></ul><ul><li><?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?> </li></ul><ul><ul><li><%@ taglib prefix=&quot;s&quot; uri=&quot;/struts-tags&quot; %> </li></ul></ul><ul><ul><li><%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=ISO-8859-1&quot; pageEncoding=&quot;ISO-8859-1&quot;%> </li></ul></ul><ul><ul><li><!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;> </li></ul></ul><ul><li><html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;> </li></ul><ul><ul><li><head> </li></ul></ul><ul><ul><ul><li><meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot; /> </li></ul></ul></ul><ul><ul><ul><li><title>HelloWorld</title> </li></ul></ul></ul><ul><ul><li></head> </li></ul></ul><ul><ul><li><body> </li></ul></ul><ul><ul><ul><li><h1>HelloWorld</h1> </li></ul></ul></ul><ul><ul><li></body> </li></ul></ul><ul><li></html> </li></ul>
  17. 17. JSF e outras tecnologias Web <ul><li>Existem milhares de outros frameworks Action Based: </li></ul><ul><ul><li>Mentawai; </li></ul></ul><ul><ul><li>Vraptor; </li></ul></ul><ul><ul><li>WebWork; </li></ul></ul><ul><ul><li>E cada dia surge mais. </li></ul></ul>
  18. 18. JSF e outras tecnologias Web <ul><li>Component Based </li></ul><ul><ul><li>Rápido aprendizado; </li></ul></ul><ul><ul><li>Baseado em Componentes; </li></ul></ul><ul><ul><li>Deixa o programador despreocupado com a parte visual; </li></ul></ul><ul><ul><li>Programação Web como Desktop; </li></ul></ul><ul><ul><li>Simplicidade; </li></ul></ul><ul><ul><li>Agilidade. </li></ul></ul>
  19. 19. JSF e outras tecnologias Web <ul><li>Frameworks Web Component Based </li></ul><ul><ul><li>JavaServer Faces </li></ul></ul><ul><ul><ul><li>RichFaces </li></ul></ul></ul><ul><ul><ul><li>MyFaces </li></ul></ul></ul><ul><ul><ul><li>JbossSeam </li></ul></ul></ul><ul><ul><li>Wicket </li></ul></ul>
  20. 20. JSF e outras tecnologias Web <ul><li>JavaServer Faces – JSF </li></ul>
  21. 21. JSF e outras tecnologias Web <ul><li>JavaServer Faces – JSF </li></ul><ul><ul><li>É mais do que um framework, é uma especificação baseada em MVC; </li></ul></ul><ul><ul><li>Suporte a internacionalização; </li></ul></ul><ul><ul><li>Facilita criação de telas; </li></ul></ul><ul><ul><li>Facilita a transferência dos dados entre telas e camadas de negócio através da EL; </li></ul></ul><ul><ul><li>Produtividade para conversores recebidos do formulário para os tipos nas classes; </li></ul></ul><ul><ul><li>Flexibilidade para renderização; </li></ul></ul><ul><ul><li>Criar modelos simples de eventos entre interfaces gráficas e as classes no servidor; </li></ul></ul><ul><ul><li>Mecanismos produtivos para validação de campos na tela; </li></ul></ul><ul><ul><li>Facilidade para criação de componentes. </li></ul></ul>
  22. 22. JSF e outras tecnologias Web <ul><li>Especificações </li></ul><ul><ul><li>JSF 1.0 e 1.1 – JSR 127 </li></ul></ul><ul><ul><ul><li>Problemas com renderização </li></ul></ul></ul><ul><ul><ul><li>ELs diferentes entre JSP e JSF </li></ul></ul></ul><ul><ul><ul><li>Não portava a tag JSTL <c:forEach> </li></ul></ul></ul><ul><ul><li>JSF 1.2 – JSR 252 </li></ul></ul><ul><ul><ul><li>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. </li></ul></ul></ul><ul><ul><li>JSF 2.0 – JSR 314 </li></ul></ul><ul><ul><ul><li>Em desenvolvimento, porém estão planejando deixar bem integrado e intuitivo JSF e JSP para criação de CRUDS. </li></ul></ul></ul>
  23. 23. JSF e outras tecnologias Web <ul><li>Managed Beans </li></ul><ul><ul><li>É uma classe que expões objetos de negócio para camada de apresentação; </li></ul></ul><ul><ul><li>Registrados no faces-config.xml; </li></ul></ul><ul><ul><li>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; </li></ul></ul><ul><ul><li>São como as Actions do Struts, porém os form beans são injetados por setters dentro do seu próprio bean; </li></ul></ul><ul><ul><li>Os ManagedBeans serão usados na EL das páginas. </li></ul></ul>
  24. 24. JSF e outras tecnologias Web <ul><li>Expression Language - EL </li></ul><ul><ul><li>É uma poderosa linguagem de expressão (Linguagem de navegação) para acessar propriedades de beans e coleções; </li></ul></ul><ul><ul><li>Quando ocorrer uma requisição pelo browser é preenchido dinamicamente os elementos da página pela camada de negócios; </li></ul></ul><ul><ul><li>Quando ocorre um Submit ocorre a modificação no estado da camada de negócio. </li></ul></ul>
  25. 25. JSF e outras tecnologias Web <ul><li>Ciclo de Vida - JSF </li></ul>
  26. 26. JSF e outras tecnologias Web <ul><li>Roteiro de Uso </li></ul><ul><ul><li>Criar um bean que represente o formulário; </li></ul></ul><ul><ul><li>Usar f:view e h:form para formulários; </li></ul></ul><ul><ul><li>Especificar o Action Controller com o atributo de ação h:commandButton; </li></ul></ul><ul><ul><li>Criar um controlador que leia os dados do formulário, chame a lógica de negócio, guarde os resultados em Beans e tenha um retorno; </li></ul></ul><ul><ul><li>No faces-config é usado para declarar o form bean e as regras de navegação; </li></ul></ul><ul><ul><li>Criar os JSP ́s responsáveis por cada retorno declarado. </li></ul></ul>
  27. 27. JSF e outras tecnologias Web <ul><li>Customizações </li></ul><ul><ul><li>Facilidade na customização de: </li></ul></ul><ul><ul><ul><li>Validadores; </li></ul></ul></ul><ul><ul><ul><li>Conversores; </li></ul></ul></ul><ul><ul><ul><li>Componentes de Interface; </li></ul></ul></ul><ul><ul><ul><li>Renderizadores; </li></ul></ul></ul><ul><ul><ul><li>Mensagens. </li></ul></ul></ul>
  28. 28. JSF e outras tecnologias Web <ul><li>Pequenas mudanças no Default </li></ul><ul><ul><li>Montagem de templates: como Clay (Shale) e Facelets e substituir um pelo outro é questão de uma linha de configuração; </li></ul></ul><ul><ul><li>A beans factory: podemos usar os beans do Spring ao invés dos managed beans do faces-config.xml; </li></ul></ul><ul><ul><li>Renderização dos componentes: existem implementações, utilizando por exemplo XUL ou HTML + Ajax. </li></ul></ul>
  29. 29. JSF e outras tecnologias Web <ul><li>Implementações </li></ul><ul><ul><li>Apache </li></ul></ul><ul><ul><ul><li>MyFaces </li></ul></ul></ul><ul><ul><ul><li>Tomahawk/ Sandbox/ Tobago/ Trinidad/ Orchestra </li></ul></ul></ul><ul><li>Red Hat/JBoss </li></ul><ul><ul><li>RichFaces </li></ul></ul><ul><ul><li>Ajax4JSF </li></ul></ul><ul><ul><li>Jboss Seam </li></ul></ul><ul><li>ICEsoft Technologies Inc. </li></ul><ul><ul><li>ICEfaces </li></ul></ul>
  30. 30. JSF e outras tecnologias Web <ul><li>JSF 2.0 </li></ul><ul><ul><li>Suporte a templates, baseado no Facelets, Tiles, dentre outros; </li></ul></ul><ul><ul><li>Simplificar a criação de aplicações do tipo CRUD; </li></ul></ul><ul><ul><li>Melhor tratamento de mensagens de erro; </li></ul></ul><ul><ul><li>Mecanismo de tratamento de exceções padrão; </li></ul></ul><ul><ul><li>Criação de aplicações Web sem XML, utilizando anotações; </li></ul></ul><ul><ul><li>Simplificação no desenvolvimento de componentes; </li></ul></ul><ul><ul><li>Especificar onde os artefatos (Conversores, Renderizadores, etc.) devem ser colocados no WAR, permitindo ao container encontrá-los sem a necessidade de sua definição em arquivos de configuração; </li></ul></ul><ul><ul><li>Permitir que artefatos sejam alterados sem a necessidade de reinicializar o servidor. </li></ul></ul>
  31. 31. JSF e outras tecnologias Web <ul><li>Wicket </li></ul>
  32. 32. JSF e outras tecnologias Web <ul><li>Wicket </li></ul><ul><ul><li>Modelos HTML sem tags ou scripts proprietários; </li></ul></ul><ul><ul><li>Pura orientação a objeto nos componentes e páginas; </li></ul></ul><ul><ul><li>Suporte nativo e extensivo a validações e conversões; </li></ul></ul><ul><ul><li>Mensagens de erros fáceis de se entender e corrigir; </li></ul></ul><ul><ul><li>Integração com Spring, Ajax, segurança, suporte a POJO, reusabilidade através de componentização; </li></ul></ul><ul><ul><li>Sem arquivos de configuração. </li></ul></ul>
  33. 33. JSF e outras tecnologias Web <ul><li>Código Wicket – Classe Principal: </li></ul><ul><ul><li>public class JavaForDinnerApplication extends WebApplication{ </li></ul></ul><ul><ul><li>public JavaForDinnerApplication(){ </li></ul></ul><ul><ul><li>super(); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public Class getHomePage(){ </li></ul></ul><ul><ul><ul><li>return Index.class; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>@Override </li></ul></ul></ul><ul><ul><ul><li>protected void init() { </li></ul></ul></ul><ul><ul><ul><li>super.init(); </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>} </li></ul></ul>
  34. 34. JSF e outras tecnologias Web <ul><li>Código Wicket – Página Inicial: </li></ul><ul><ul><li>public class Index extends WebPage { </li></ul></ul><ul><ul><li>private static final long serialVersionUID = 1L; </li></ul></ul><ul><ul><ul><li>public Index(final PageParameters parameters) { </li></ul></ul></ul><ul><ul><ul><li>add(new Label(&quot;label&quot;, &quot;Olá Wicket&quot;)); </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>} </li></ul></ul>
  35. 35. JSF e outras tecnologias Web <ul><li>Código Wicket – Página HTML: </li></ul><ul><ul><li><html&quot;> </li></ul></ul><ul><ul><ul><li><head> </li></ul></ul></ul><ul><ul><ul><li></head> </li></ul></ul></ul><ul><ul><ul><li><body> </li></ul></ul></ul><ul><ul><ul><ul><li><span wicket:id=&quot;label&quot;></span> </li></ul></ul></ul></ul><ul><ul><ul><li></body> </li></ul></ul></ul><ul><ul><li></html> </li></ul></ul>
  36. 36. JSF e outras tecnologias Web <ul><li>Frameworks, muitos frameworks: </li></ul><ul><ul><li>Echo Cocoon Millstone OXF Struts </li></ul></ul><ul><ul><li>Tapestry WebWork RIFE Spring MVC Canyamo </li></ul></ul><ul><ul><li>JPublish JATO Folium Jucas Verge </li></ul></ul><ul><ul><li>Bishop Barracuda Action Framework Shocks TeaServlet </li></ul></ul><ul><ul><li>Expresso Bento jStatemachine jZonic OpenEmcee </li></ul></ul><ul><ul><li>Turbine Scope Warfare JWAA Jaffa </li></ul></ul><ul><ul><li>Jacquard Macaw SOFIA wingS Maverick </li></ul></ul><ul><ul><li>Smile MyFaces Chiba Jbanana Niggle </li></ul></ul><ul><ul><li>Jeenius JWarp Genie Melati Dovetail </li></ul></ul><ul><ul><li>Click GWT Xoplon Japple Vraptor </li></ul></ul><ul><ul><li>Nacho Helma Baritus Stripes Cassandra </li></ul></ul><ul><ul><li>Mentawai Cameleon Jformular Dinamica WebOnSwing </li></ul></ul>
  37. 37. JSF e outras tecnologias Web <ul><li>Referências </li></ul><ul><ul><li>http://www.caelum.com.br </li></ul></ul><ul><ul><li>http://javawora.blogspot.com/search/label/JSF </li></ul></ul><ul><ul><li>http://www.ittraining.com.br </li></ul></ul><ul><ul><li>http://www.masterdom.inf.br </li></ul></ul><ul><ul><li>http://www.guj.com.br/java.tutorial.artigo.158.1.guj </li></ul></ul><ul><ul><li>http://java.sun.com/javaee/javaserverfaces/ </li></ul></ul><ul><ul><li>http://www.jspolympus.com/JSF/JSFLifeCycle.jsp </li></ul></ul><ul><ul><li>http://www.nabble.com/Struts-+-JSF:-Vale-a-Pena--t4056131.html </li></ul></ul><ul><ul><li>http://myfaces.apache.org/ </li></ul></ul><ul><ul><li>http://wicket.apache.org/ </li></ul></ul><ul><ul><li>http://www.icefaces.org/main/home/index.jsp </li></ul></ul><ul><ul><li>https://ajax4jsf.dev.java.net/ </li></ul></ul><ul><li>Revistas: </li></ul><ul><ul><li>Mundo Java no: 21. </li></ul></ul><ul><ul><li>Java Magazine no: 23; 26; 43; 44; 45; 46; 47; 48. </li></ul></ul>
  38. 38. Agradecimentos <ul><li>Obrigado </li></ul>

×