JSF e outras tecnologias Web
Apresentação Eduardo Bregaida Analista de sistemas Java da Masterdom; Instrutor Java da IT Training; Fundador da FireAnt Software; Fundador do IMES.java; Membro do Java Community Process (JCP); Agente Certificador do projeto JEDI na região do grande ABC; Fundador do Blog Java Anhywhere.
JSF e outras tecnologias Web Um pouco de história HTML Servlets JSP Frameworks Action Based Component Based Demonstração Bate-Papo
JSF e outras tecnologias Web HTML Estático; Não tem conexão com Base De Dados; Simples.
JSF e outras tecnologias Web OlaMundo.html <html> <head>   <title>Olá Mundo</title> </head> <body> Olá Mundo. </body> </html>
JSF e outras tecnologias Web Servlets É uma extensão de servidores; Disponibiliza uma interface para o servidor; Recursos Dinâmicos para web; Interage com os clientes; Necessita de um Servlet Container.
JSF e outras tecnologias Web OlaMundoServlet.java 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(); } }
JSF e outras tecnologias Web Java Server Pages – JSP 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; Facilitar a criação de HTML; Scriplets NOJENTO, colocar código Java no JSP.
JSF e outras tecnologias Web OlaMundo.jsp <html> <body> <% String mensagem = &quot;Olá Mundo!&quot;;  out.println(mensagem); %> <br> Muito mais simples de editar o html e muito mais  complicado de editar o codigo Java<br> </body> </html>
JSF e outras tecnologias Web Frameworks 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.
JSF e outras tecnologias Web Frameworks MVC Action Based Frameworks baseados em ações, respondem a chamada de Actions.
JSF e outras tecnologias Web Struts Framework MVC-2 para construções de aplicações WEB; Cada solicitação HTTP tem que ser respondida com uma resposta HTTP; O .do  é mapeada no arquivo struts-config.xml; O  ActionServlet  define o  Action  correspondente para a solicitação; o  ActionServlet  coloca a entrada em um  JavaBean , estes  JavaBeans  são definidos como  FormBeans; O Action pode acessar o FormBean efetuar qualquer operação e armazenar o resultado em um ResultBean; O Action interage com a camada de negócio onde uma base de dados poderá ser atualizada.
JSF e outras tecnologias Web Demonstração Struts Framework
JSF e outras tecnologias Web Struts 2 Action Based; WebWork engine; Marketing sobre o nome Struts. ?
JSF e outras tecnologias Web HelloWorldStruts2.java package br.com.struts2.actions; import com.opensymphony.xwork2.ActionSupport; public class TesteAction extends ActionSupport { private static final long serialVersionUID = 218L; private String message; //getters and setters para Action public String execute() throws Exception { this.showHelloWorld(); return SUCCESS; } public void showHelloWorld() throws Exception { String strReturn = &quot;Olá Mundo&quot;;  setMessage(strReturn); } }
JSF e outras tecnologias Web hello.jsp <?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?> <%@ taglib prefix=&quot;s&quot; uri=&quot;/struts-tags&quot; %> <%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=ISO-8859-1&quot;  pageEncoding=&quot;ISO-8859-1&quot;%> <!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;> <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;> <head> <meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot; /> <title>HelloWorld</title> </head> <body> <h1>HelloWorld</h1> </body> </html>
JSF e outras tecnologias Web Existem milhares de outros frameworks Action Based: Mentawai; Vraptor; WebWork; E cada dia surge mais.
JSF e outras tecnologias Web Component Based Rápido aprendizado; Baseado em Componentes; Deixa o programador despreocupado com a parte visual; Programação Web como Desktop; Simplicidade; Agilidade.
JSF e outras tecnologias Web Frameworks Web Component Based JavaServer Faces RichFaces MyFaces JbossSeam Wicket
JSF e outras tecnologias Web JavaServer Faces – JSF
JSF e outras tecnologias Web JavaServer Faces – 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.
JSF e outras tecnologias Web 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 Em desenvolvimento, porém estão planejando deixar bem integrado e intuitivo JSF e JSP para criação de CRUDS.
JSF e outras tecnologias Web Managed Beans É uma classe que expões objetos de negócio para camada de apresentaçã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.
JSF e outras tecnologias Web Expression Language - EL É 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.
JSF e outras tecnologias Web Ciclo de Vida - JSF
JSF e outras tecnologias Web Roteiro de Uso Criar um bean que represente o formulário; Usar f:view e h:form para formulários; Especificar o Action Controller com o atributo de ação h:commandButton; 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; No faces-config é usado para declarar o form bean e as regras de navegação; Criar os JSP ́s responsáveis por cada retorno declarado.
JSF e outras tecnologias Web Customizações Facilidade na customização de: Validadores; Conversores; Componentes de Interface; Renderizadores; Mensagens.
JSF e outras tecnologias Web Pequenas mudanças no 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: podemos usar os beans do Spring ao invés dos managed beans do faces-config.xml; Renderização dos componentes: existem implementações, utilizando por exemplo XUL ou HTML + Ajax.
JSF e outras tecnologias Web Implementações Apache MyFaces Tomahawk/ Sandbox/ Tobago/ Trinidad/ Orchestra Red Hat/JBoss RichFaces Ajax4JSF Jboss Seam ICEsoft Technologies Inc. ICEfaces
JSF e outras tecnologias Web JSF 2.0 Suporte a templates, baseado no Facelets, Tiles, dentre outros; Simplificar a criação de aplicações do tipo CRUD; Melhor tratamento de mensagens de erro; Mecanismo de tratamento de exceções padrão; Criação de aplicações Web sem XML, utilizando anotações; Simplificação no desenvolvimento de componentes; 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; Permitir que artefatos sejam alterados sem a necessidade de reinicializar o servidor.
JSF e outras tecnologias Web Wicket
JSF e outras tecnologias Web Wicket Modelos HTML sem tags ou scripts proprietários; Pura orientação a objeto nos componentes e páginas;  Suporte nativo e extensivo a validações e conversões;  Mensagens de erros fáceis de se entender e corrigir; Integração com Spring, Ajax, segurança, suporte a POJO, reusabilidade através de componentização; Sem arquivos de configuração.
JSF e outras tecnologias Web Código Wicket – Classe Principal: public class JavaForDinnerApplication extends WebApplication{ public JavaForDinnerApplication(){ super(); } public Class getHomePage(){ return Index.class; } @Override protected void init() { super.init(); } }
JSF e outras tecnologias Web Código Wicket – Página Inicial: public class Index extends WebPage { private static final long serialVersionUID = 1L; public Index(final PageParameters parameters) { add(new Label(&quot;label&quot;, &quot;Olá Wicket&quot;)); } }
JSF e outras tecnologias Web Código Wicket – Página HTML: <html&quot;> <head> </head> <body> <span wicket:id=&quot;label&quot;></span> </body> </html>
JSF e outras tecnologias Web Frameworks, muitos frameworks: Echo Cocoon Millstone   OXF   Struts Tapestry  WebWork RIFE   Spring MVC  Canyamo    JPublish  JATO  Folium    Jucas Verge  Bishop  Barracuda  Action Framework  Shocks  TeaServlet  Expresso  Bento  jStatemachine  jZonic  OpenEmcee  Turbine  Scope  Warfare  JWAA  Jaffa  Jacquard  Macaw SOFIA wingS  Maverick Smile  MyFaces  Chiba  Jbanana Niggle Jeenius  JWarp  Genie  Melati Dovetail  Click  GWT Xoplon Japple Vraptor Nacho Helma Baritus Stripes Cassandra Mentawai Cameleon  Jformular  Dinamica  WebOnSwing
JSF e outras tecnologias Web Referências http://www.caelum.com.br http://javawora.blogspot.com/search/label/JSF http://www.ittraining.com.br http://www.masterdom.inf.br http://www.guj.com.br/java.tutorial.artigo.158.1.guj http://java.sun.com/javaee/javaserverfaces/ http://www.jspolympus.com/JSF/JSFLifeCycle.jsp http://www.nabble.com/Struts-+-JSF:-Vale-a-Pena--t4056131.html http://myfaces.apache.org/ http://wicket.apache.org/ http://www.icefaces.org/main/home/index.jsp https://ajax4jsf.dev.java.net/ Revistas: Mundo Java no: 21. Java Magazine no: 23; 26; 43; 44; 45; 46; 47; 48.
Agradecimentos Obrigado

JSF e outras tecnologias Java Web - IMES.java

  • 1.
    JSF e outrastecnologias Web
  • 2.
    Apresentação Eduardo BregaidaAnalista de sistemas Java da Masterdom; Instrutor Java da IT Training; Fundador da FireAnt Software; Fundador do IMES.java; Membro do Java Community Process (JCP); Agente Certificador do projeto JEDI na região do grande ABC; Fundador do Blog Java Anhywhere.
  • 3.
    JSF e outrastecnologias Web Um pouco de história HTML Servlets JSP Frameworks Action Based Component Based Demonstração Bate-Papo
  • 4.
    JSF e outrastecnologias Web HTML Estático; Não tem conexão com Base De Dados; Simples.
  • 5.
    JSF e outrastecnologias Web OlaMundo.html <html> <head> <title>Olá Mundo</title> </head> <body> Olá Mundo. </body> </html>
  • 6.
    JSF e outrastecnologias Web Servlets É uma extensão de servidores; Disponibiliza uma interface para o servidor; Recursos Dinâmicos para web; Interage com os clientes; Necessita de um Servlet Container.
  • 7.
    JSF e outrastecnologias Web OlaMundoServlet.java 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.
    JSF e outrastecnologias Web Java Server Pages – JSP 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; Facilitar a criação de HTML; Scriplets NOJENTO, colocar código Java no JSP.
  • 9.
    JSF e outrastecnologias Web OlaMundo.jsp <html> <body> <% String mensagem = &quot;Olá Mundo!&quot;; out.println(mensagem); %> <br> Muito mais simples de editar o html e muito mais complicado de editar o codigo Java<br> </body> </html>
  • 10.
    JSF e outrastecnologias Web Frameworks 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.
  • 11.
    JSF e outrastecnologias Web Frameworks MVC Action Based Frameworks baseados em ações, respondem a chamada de Actions.
  • 12.
    JSF e outrastecnologias Web Struts Framework MVC-2 para construções de aplicações WEB; Cada solicitação HTTP tem que ser respondida com uma resposta HTTP; O .do é mapeada no arquivo struts-config.xml; O ActionServlet define o Action correspondente para a solicitação; o ActionServlet coloca a entrada em um JavaBean , estes JavaBeans são definidos como FormBeans; O Action pode acessar o FormBean efetuar qualquer operação e armazenar o resultado em um ResultBean; O Action interage com a camada de negócio onde uma base de dados poderá ser atualizada.
  • 13.
    JSF e outrastecnologias Web Demonstração Struts Framework
  • 14.
    JSF e outrastecnologias Web Struts 2 Action Based; WebWork engine; Marketing sobre o nome Struts. ?
  • 15.
    JSF e outrastecnologias Web HelloWorldStruts2.java package br.com.struts2.actions; import com.opensymphony.xwork2.ActionSupport; public class TesteAction extends ActionSupport { private static final long serialVersionUID = 218L; private String message; //getters and setters para Action public String execute() throws Exception { this.showHelloWorld(); return SUCCESS; } public void showHelloWorld() throws Exception { String strReturn = &quot;Olá Mundo&quot;; setMessage(strReturn); } }
  • 16.
    JSF e outrastecnologias Web hello.jsp <?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?> <%@ taglib prefix=&quot;s&quot; uri=&quot;/struts-tags&quot; %> <%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=ISO-8859-1&quot; pageEncoding=&quot;ISO-8859-1&quot;%> <!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;> <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;> <head> <meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot; /> <title>HelloWorld</title> </head> <body> <h1>HelloWorld</h1> </body> </html>
  • 17.
    JSF e outrastecnologias Web Existem milhares de outros frameworks Action Based: Mentawai; Vraptor; WebWork; E cada dia surge mais.
  • 18.
    JSF e outrastecnologias Web Component Based Rápido aprendizado; Baseado em Componentes; Deixa o programador despreocupado com a parte visual; Programação Web como Desktop; Simplicidade; Agilidade.
  • 19.
    JSF e outrastecnologias Web Frameworks Web Component Based JavaServer Faces RichFaces MyFaces JbossSeam Wicket
  • 20.
    JSF e outrastecnologias Web JavaServer Faces – JSF
  • 21.
    JSF e outrastecnologias Web JavaServer Faces – 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.
  • 22.
    JSF e outrastecnologias Web 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 Em desenvolvimento, porém estão planejando deixar bem integrado e intuitivo JSF e JSP para criação de CRUDS.
  • 23.
    JSF e outrastecnologias Web Managed Beans É uma classe que expões objetos de negócio para camada de apresentaçã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.
  • 24.
    JSF e outrastecnologias Web Expression Language - EL É 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.
  • 25.
    JSF e outrastecnologias Web Ciclo de Vida - JSF
  • 26.
    JSF e outrastecnologias Web Roteiro de Uso Criar um bean que represente o formulário; Usar f:view e h:form para formulários; Especificar o Action Controller com o atributo de ação h:commandButton; 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; No faces-config é usado para declarar o form bean e as regras de navegação; Criar os JSP ́s responsáveis por cada retorno declarado.
  • 27.
    JSF e outrastecnologias Web Customizações Facilidade na customização de: Validadores; Conversores; Componentes de Interface; Renderizadores; Mensagens.
  • 28.
    JSF e outrastecnologias Web Pequenas mudanças no 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: podemos usar os beans do Spring ao invés dos managed beans do faces-config.xml; Renderização dos componentes: existem implementações, utilizando por exemplo XUL ou HTML + Ajax.
  • 29.
    JSF e outrastecnologias Web Implementações Apache MyFaces Tomahawk/ Sandbox/ Tobago/ Trinidad/ Orchestra Red Hat/JBoss RichFaces Ajax4JSF Jboss Seam ICEsoft Technologies Inc. ICEfaces
  • 30.
    JSF e outrastecnologias Web JSF 2.0 Suporte a templates, baseado no Facelets, Tiles, dentre outros; Simplificar a criação de aplicações do tipo CRUD; Melhor tratamento de mensagens de erro; Mecanismo de tratamento de exceções padrão; Criação de aplicações Web sem XML, utilizando anotações; Simplificação no desenvolvimento de componentes; 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; Permitir que artefatos sejam alterados sem a necessidade de reinicializar o servidor.
  • 31.
    JSF e outrastecnologias Web Wicket
  • 32.
    JSF e outrastecnologias Web Wicket Modelos HTML sem tags ou scripts proprietários; Pura orientação a objeto nos componentes e páginas; Suporte nativo e extensivo a validações e conversões; Mensagens de erros fáceis de se entender e corrigir; Integração com Spring, Ajax, segurança, suporte a POJO, reusabilidade através de componentização; Sem arquivos de configuração.
  • 33.
    JSF e outrastecnologias Web Código Wicket – Classe Principal: public class JavaForDinnerApplication extends WebApplication{ public JavaForDinnerApplication(){ super(); } public Class getHomePage(){ return Index.class; } @Override protected void init() { super.init(); } }
  • 34.
    JSF e outrastecnologias Web Código Wicket – Página Inicial: public class Index extends WebPage { private static final long serialVersionUID = 1L; public Index(final PageParameters parameters) { add(new Label(&quot;label&quot;, &quot;Olá Wicket&quot;)); } }
  • 35.
    JSF e outrastecnologias Web Código Wicket – Página HTML: <html&quot;> <head> </head> <body> <span wicket:id=&quot;label&quot;></span> </body> </html>
  • 36.
    JSF e outrastecnologias Web Frameworks, muitos frameworks: Echo Cocoon Millstone OXF Struts Tapestry WebWork RIFE Spring MVC Canyamo JPublish JATO Folium Jucas Verge Bishop Barracuda Action Framework Shocks TeaServlet Expresso Bento jStatemachine jZonic OpenEmcee Turbine Scope Warfare JWAA Jaffa Jacquard Macaw SOFIA wingS Maverick Smile MyFaces Chiba Jbanana Niggle Jeenius JWarp Genie Melati Dovetail Click GWT Xoplon Japple Vraptor Nacho Helma Baritus Stripes Cassandra Mentawai Cameleon Jformular Dinamica WebOnSwing
  • 37.
    JSF e outrastecnologias Web Referências http://www.caelum.com.br http://javawora.blogspot.com/search/label/JSF http://www.ittraining.com.br http://www.masterdom.inf.br http://www.guj.com.br/java.tutorial.artigo.158.1.guj http://java.sun.com/javaee/javaserverfaces/ http://www.jspolympus.com/JSF/JSFLifeCycle.jsp http://www.nabble.com/Struts-+-JSF:-Vale-a-Pena--t4056131.html http://myfaces.apache.org/ http://wicket.apache.org/ http://www.icefaces.org/main/home/index.jsp https://ajax4jsf.dev.java.net/ Revistas: Mundo Java no: 21. Java Magazine no: 23; 26; 43; 44; 45; 46; 47; 48.
  • 38.