javaone brazil 2012: integrando ext js 4 com java ee

78
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

Upload: loiane-groner

Post on 12-Jul-2015

1.292 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Integrando Ext JS 4 com Java EE

Diferentes Frameworks: Prós e Contrase alguns cuidados que devemos ter

Loiane Groner@loiane

http://loiane.com

Page 2: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Loiane Groner

Apaixonada por Java e Sencha

7+ XP Java4+ XP Sencha

Software Development Manager @ Citibank

@loianehttp://loiane.com

Page 4: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Ext JS 4

Page 5: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

sencha.com

Page 6: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Cross-Browser

Page 7: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Alguns Exemplos

Page 8: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Fácil Integração

Page 9: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Fácil Integração

Page 10: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Fácil Integração

Page 11: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Fácil Integração

Page 12: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Construindo Aplicações Ext JS 4

Page 13: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Como Organizar

um Projeto JS?

Page 14: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Incluir JS em cada jsp?

Page 15: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Incluir JS em cada jsp?

listarCliente.jsp<script> listarCliente.js?

Page 16: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Incluir JS em cada jsp?

Não é assim em Ext JS!

listarCliente.jsp<script> listarCliente.js?

Page 17: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Projeto Java + Ext JS

1 index.jsp apenas

Page 18: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Projeto Java + Ext JS

1 index.jsp apenas

Ext JS também usa MVC

Page 19: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

MVC

Page 20: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Código precisa ser organizado

Boas práticas precisam ser seguidas

Fácil manutenção

Fácil trabalho em equipe

Page 21: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Model

Page 22: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Ext JS

Carrega e Gerencia dados da app

Dados dos requests da View

Page 23: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Java

POJO

Representa entidade banco de dados

Page 24: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Page 25: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

View

Page 26: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Ext JS

Gerencia dados na View

Componentes UI

Page 27: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Java

JSP

Ext JS assume responsabilidade

Page 28: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Java

JSP

Ext JS assume responsabilidade

MVC dentro de MVC!!!

Page 29: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Page 30: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Page 31: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Controller

Page 32: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Page 33: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Ext JS

Gerencia inputs do usuário

Atualiza Model e View

Page 34: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Java

Gerencia requests da view...

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

Retorna response para a View

Page 35: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Java

Gerencia requests da view...

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

Retorna response para a View

View == Ext JS

Page 36: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

DAO

Page 37: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Java

Classe DAO

Hibernate, JPA ou outro

Comunicação com Banco

Page 38: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Ext JS

Não comunica com bando de dados

Stores - Coleção de Models

Proxies - comunica com Server

Page 39: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Arquitetura

Ext JS 4 + Java

Page 40: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Page 41: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Comunicação Ext JS <-> Java

Page 42: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Servlets

Page 43: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

               //get  out  Grid  paging  toolbar  parameters                String  start  =  request.getParameter("start");                String  limit  =  request.getParameter("limit");

Page 44: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

               //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");

Page 45: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

               //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();

Page 46: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

WebSocketsJava EE 7

Page 47: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Arun Gupta Talkhttp://www.slideshare.net/arungupta1/websocket-10

Page 48: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Arun Gupta Talkhttp://www.slideshare.net/arungupta1/websocket-10

Page 49: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Jax-RS

Page 50: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Page 51: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

VRaptor

Page 52: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

     public  void  list()  {     result.use(ExtJSJson.class).from(this.contactDao.list())

.success(true).serialize();   }

Page 53: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

@Post @Consumes("application/json") public void create(Contact data){

this.contactDao.create(data);

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

Page 54: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

ExtJSJon.class

Page 55: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

ExtJSJon.class

Apenas para Grid e Tree!

Page 56: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Spring 2.5

Page 57: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

<bean  name="jsonView"  class="net.sf.json.spring.web.servlet.view.JsonView"  />

Page 58: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

         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);

  }

Page 59: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Spring 3.x

Page 60: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

@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.");     }   }

Page 61: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

     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;   }

Page 62: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Alguns Cuidados

Page 63: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

FormsUpload de Arquivos

(Ajax Request)

Page 64: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Leitura de Nested Models(Associations)

Page 65: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Envio (server) de Nested Models(Associations)

Page 66: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Comunicação Cross-Browser

Page 67: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Ajax?

Page 68: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

JSON-P?

Page 69: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

WebServices - Ext JS?

Page 70: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

WebServices - Ext JS?

$21,950

Page 71: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

WebServices - Ext JS?

$21,950 #Fail!

Page 72: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

WebServices - Java

Page 73: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Sencha Touch

Page 74: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Page 75: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

json json

Views Views

Controllers

Models

Stores

Proxies

Servidor == Java

.

.

.

Page 76: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE

Conclusão

Page 78: Javaone Brazil 2012: Integrando Ext JS 4 com Java EE