SlideShare uma empresa Scribd logo
1 de 78
Baixar para ler offline
Integrando Ext JS 4 com Java EE
Diferentes Frameworks: Prós e Contras
  e alguns cuidados que devemos ter

            Loiane Groner
               @loiane
          http://loiane.com
Loiane Groner

Apaixonada por Java e
Sencha

7+ XP Java
4+ XP Sencha

Software Development
Manager @ Citibank

@loiane
http://loiane.com
http://www.dfjug.org/
      amigos.jsp
Ext JS 4
sencha.com
Cross-Browser
Alguns Exemplos
Fácil
Integração
Fácil
Integração
Fácil
Integração
Fácil
Integração
Construindo
Aplicações Ext JS 4
Como
 Organizar
um Projeto
    JS?
Incluir JS em cada jsp?
Incluir JS em cada jsp?

    listarCliente.jsp
<script> listarCliente.js?
Incluir JS em cada jsp?

    listarCliente.jsp
<script> listarCliente.js?

 Não é assim em Ext JS!
Projeto Java + Ext JS

 1 index.jsp apenas
Projeto Java + Ext JS

  1 index.jsp apenas


Ext JS também usa MVC
MVC
Código precisa ser organizado

Boas práticas precisam ser seguidas

        Fácil manutenção

     Fácil trabalho em equipe
Model
Ext JS
Carrega e Gerencia dados da app

  Dados dos requests da View
Java
           POJO

Representa entidade banco de
           dados
View
Ext JS
Gerencia dados na View

   Componentes UI
Java

             JSP
Ext JS assume responsabilidade
Java

             JSP
Ext JS assume responsabilidade
    MVC dentro de MVC!!!
Controller
Ext JS
Gerencia inputs do usuário

  Atualiza Model e View
Java
 Gerencia requests da view...

 Enviar request pro Serviço
         (opcional)...

Retorna response para a View
Java
 Gerencia requests da view...

 Enviar request pro Serviço
         (opcional)...

Retorna response para a View

      View == Ext JS
DAO
Java

     Classe DAO

Comunicação com Banco

Hibernate, JPA ou outro
Ext JS
Não comunica com bando de dados

   Stores - Coleção de Models

 Proxies - comunica com Server
Arquitetura

Ext JS 4 + Java
Comunicação
Ext JS <-> Java
Servlets
 	
  	
  	
  	
  	
  	
  	
  //get	
  out	
  Grid	
  paging	
  toolbar	
  parameters
	
  	
  	
  	
  	
  	
  	
  	
  String	
  start	
  =	
  request.getParameter("start");
	
  	
  	
  	
  	
  	
  	
  	
  String	
  limit	
  =	
  request.getParameter("limit");
 	
  	
  	
  	
  	
  	
  	
  //get	
  out	
  Grid	
  paging	
  toolbar	
  parameters
	
  	
  	
  	
  	
  	
  	
  	
  String	
  start	
  =	
  request.getParameter("start");
	
  	
  	
  	
  	
  	
  	
  	
  String	
  limit	
  =	
  request.getParameter("limit");



	
  	
  	
  	
  	
  	
  	
  	
  //printwriter	
  to	
  send	
  the	
  JSON	
  response	
  back
	
  	
  	
  	
  	
  	
  	
  	
  PrintWriter	
  out	
  =	
  response.getWriter();
	
  	
  	
  	
  	
  	
  	
  	
  //set	
  content	
  type
	
  	
  	
  	
  	
  	
  	
  	
  response.setContentType("text/html");
 	
  	
  	
  	
  	
  	
  	
  //Create	
  a	
  JSON	
  object	
  to	
  wrap	
  your	
  JSOn	
  array
	
  	
  	
  	
  	
  	
  	
  	
  JSONObject	
  myObj	
  =	
  new	
  JSONObject();
	
  	
  	
  	
  	
  	
  	
  	
  //sets	
  success	
  to	
  true
	
  	
  	
  	
  	
  	
  	
  	
  myObj.put("success",	
  true);
	
  	
  	
  	
  	
  	
  	
  	
  //set	
  the	
  JSON	
  root	
  to	
  items
	
  	
  	
  	
  	
  	
  	
  	
  myObj.put("root",	
  arrayObj);
	
  	
  	
  	
  	
  	
  	
  	
  //set	
  the	
  total	
  number	
  of	
  Items
	
  	
  	
  	
  	
  	
  	
  	
  myObj.put("total",	
  itemInformation.getTotalCount());
	
  
	
  	
  	
  	
  	
  	
  	
  	
  //convert	
  the	
  JSON	
  object	
  to	
  string	
  and	
  send	
  the	
  response
	
  	
  	
  	
  	
  	
  	
  	
  out.println(myObj.toString());
	
  	
  	
  	
  	
  	
  	
  	
  out.close();
WebSockets
 Java EE 7
Arun Gupta Talk
http://www.slideshare.net/arungupta1/websocket-10
Arun Gupta Talk
http://www.slideshare.net/arungupta1/websocket-10
Jax-RS
VRaptor
 	
  	
  public	
  void	
  list()	
  {
	
   	
   result.use(ExtJSJson.class).from(this.contactDao.list())
                .success(true).serialize();
	
   }
@Post
	   @Consumes("application/json")
	   public void create(Contact data){

	   	   this.contactDao.create(data);

	   	   result.use(ExtJSJson.class).from(data)
         .success(true).serialize();
	   }
ExtJSJon.class
ExtJSJon.class

Apenas para Grid e Tree!
Spring 2.5
<bean	
  name="jsonView"	
  
class="net.sf.json.spring.web.servlet.view.JsonView"	
  />
 	
  	
  	
  	
  public	
  ModelAndView	
  handleRequest(HttpServletRequest	
  request,
	
   	
   	
   HttpServletResponse	
  response)	
  throws	
  Exception	
  {

	
     	
     //obtém	
  o	
  parâmetro	
  de	
  início
	
     	
     String	
  iniParam	
  =	
  request.getParameter("start");
	
     	
     int	
  inicio	
  =	
  (iniParam	
  ==	
  null)	
  ?	
  0	
  :	
  Integer.parseInt(iniParam);

	
     	
     //gera	
  os	
  contatos
	
     	
     List<Contato>	
  contatos	
  =	
  GerenciaContatos.getJson(inicio);

	
     	
     Map<String,Object>	
  modelMap	
  =	
  new	
  HashMap<String,Object>(2);
	
     	
     modelMap.put("total",	
  GerenciaContatos.LIMITE);
	
     	
     modelMap.put("rows",	
  contatos);

	
     	
     return	
  new	
  ModelAndView("jsonView",	
  modelMap);

	
     }
Spring 3.x
@RequestMapping(value="/contact/view.action")
	
     public	
  @ResponseBody	
  Map<String,?	
  extends	
  Object>	
  
           view(@RequestParam	
  int	
  start,	
  @RequestParam	
  int	
  limit)	
  throws	
  Exception	
  {

	
     	
     try{

	
     	
     	
     List<Contact>	
  contacts	
  =	
  contactService.getContactList(start,limit);

	
     	
     	
     int	
  total	
  =	
  contactService.getTotalContacts();

	
     	
     	
     return	
  ExtJSReturn.mapOK(contacts,	
  total);

	
     	
     }	
  catch	
  (Exception	
  e)	
  {

	
     	
     	
     return	
  ExtJSReturn.mapError("Error	
  retrieving	
  Contacts	
  from	
  database.");
	
     	
     }
	
     }
 	
  	
  public	
  static	
  Map<String,Object>	
  mapOK(List<Contact>	
  contacts){

	
     	
     Map<String,Object>	
  modelMap	
  =	
  new	
  HashMap<String,Object>(3);
	
     	
     modelMap.put("total",	
  contacts.size());
	
     	
     modelMap.put("data",	
  contacts);
	
     	
     modelMap.put("success",	
  true);

	
     	
     return	
  modelMap;
	
     }
Alguns Cuidados
Forms
Upload de Arquivos
  (Ajax Request)
Leitura de
Nested Models
(Associations)
Envio (server) de
 Nested Models
 (Associations)
Comunicação
Cross-Browser
Ajax?
JSON-P?
WebServices - Ext JS?
WebServices - Ext JS?




   $21,950
WebServices - Ext JS?




   $21,950   #Fail!
WebServices - Java
Sencha Touch
.

               .
Views                      Views
               .
          Controllers
            Models
            Stores
            Proxies

        Servidor == Java
              on
              n
Conclusão
@loiane
http://loiane.com
github.com/loiane
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Mais conteúdo relacionado

Mais procurados

Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsEduardo Mendes
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Eduardo Mendes
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Frederico Maia Arantes
 
Javascript - Princípios da linguagem e utilização de frameworks
Javascript - Princípios da linguagem e utilização de frameworksJavascript - Princípios da linguagem e utilização de frameworks
Javascript - Princípios da linguagem e utilização de frameworksBruno Abrantes
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3David Ruiz
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasRodrigo Branas
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Boas práticas com jpa 2 e hibernate flisol 2012
Boas práticas com jpa 2 e hibernate   flisol 2012Boas práticas com jpa 2 e hibernate   flisol 2012
Boas práticas com jpa 2 e hibernate flisol 2012Frederico Maia Arantes
 
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Elvis Rocha
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYraquelcarsi
 
Jpa – Java Persistence Api
Jpa – Java Persistence ApiJpa – Java Persistence Api
Jpa – Java Persistence Apiguestf54162
 

Mais procurados (20)

POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
JPA com Hibernate
JPA com HibernateJPA com Hibernate
JPA com Hibernate
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
JPA - Java Persistence API
JPA - Java Persistence APIJPA - Java Persistence API
JPA - Java Persistence API
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012
 
Javascript - Princípios da linguagem e utilização de frameworks
Javascript - Princípios da linguagem e utilização de frameworksJavascript - Princípios da linguagem e utilização de frameworks
Javascript - Princípios da linguagem e utilização de frameworks
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Boas práticas com jpa 2 e hibernate flisol 2012
Boas práticas com jpa 2 e hibernate   flisol 2012Boas práticas com jpa 2 e hibernate   flisol 2012
Boas práticas com jpa 2 e hibernate flisol 2012
 
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITY
 
Frameworks Ajax
Frameworks AjaxFrameworks Ajax
Frameworks Ajax
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 
Jpa – Java Persistence Api
Jpa – Java Persistence ApiJpa – Java Persistence Api
Jpa – Java Persistence Api
 

Semelhante a Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
React + Flux (Alt)
React + Flux (Alt)React + Flux (Alt)
React + Flux (Alt)Cezar Luiz
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
Backbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosBackbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosHenrique Gogó
 
Apache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesApache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesCI&T
 
Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6danielfcampos
 
Cactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusCactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusDenis L Presciliano
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no FrontendHenrique Gogó
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Javaelliando dias
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkRafael Dohms
 
Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stackSidney Roberto
 
Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusDenis L Presciliano
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMCAlisson Agiani
 
WEB 2 - Aula 01 - 02.08
WEB 2 - Aula 01 - 02.08WEB 2 - Aula 01 - 02.08
WEB 2 - Aula 01 - 02.08Gilson Silva
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationMario Sergio
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoEduardo Bregaida
 

Semelhante a Javaone Brazil 2012: Integrando Ext JS 4 com Java EE (20)

Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
React + Flux (Alt)
React + Flux (Alt)React + Flux (Alt)
React + Flux (Alt)
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
Backbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosBackbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectados
 
Apache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesApache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentes
 
Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6
 
Cactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusCactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta Cactus
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Java
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao Framework
 
Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stack
 
Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com Cactus
 
Apache Struts
Apache StrutsApache Struts
Apache Struts
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMC
 
WEB 2 - Aula 01 - 02.08
WEB 2 - Aula 01 - 02.08WEB 2 - Aula 01 - 02.08
WEB 2 - Aula 01 - 02.08
 
JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em Desenvolvimento
 

Javaone Brazil 2012: Integrando Ext JS 4 com Java EE