Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Play!Desenvolvendo aplicações Web com Java sem dor
Quem souAllyson Barros - @allysonbarrosGraduando em Análise e Desenvolvimento de Sistemas - IFRNDesenvolvedor Web desde 20...
O que é?
Quais as vantagens?
Os Primeiros  Passos!
Instalaçãodo Framework
Requisitos• JDK 5 ou superior• Editor de Texto (notepad++, Textmate,Vim)• IDE Java - Eclipse ou Netbeans (Opcional)
Ambientes Unix• Baixar o Framework• Extrair para uma pasta desejada (Ex: /opt/)• Adicionar o caminho no $PATH;
Ambientes Unix• Dica: Editar o arquivo .bashrc e adicionar a  linha a seguir:          export PATH=$PATH:/opt/play-1.1/
Ambientes Windows• Baixar o Framework• Extrair para uma pasta desejada (Ex: C:)  (Recomendado extrair para C: ou diretório...
Testando a instalação
Testando a instalação
Criando e rodando  uma aplicação
Criando a aplicação     play new flisolRodando a aplicação     play run flisol
Estrutura das pastas
Configurando o projeto    para o Eclipse   play eclipsify flisol
Definindo o banco   de dados
Editando o arquivoconf/application.conf
Criando os Modelospackage models;import   play.*;import   play.db.jpa.*;import   javax.persistence.*;import   java.util.*;...
Selecionando itens    do Modelo      List<User> user = User.all();            List<User> user = User.find("admin = ?", "tr...
Salvando e Atualizandoitens do Banco de Dados User user = new User("foo", "bar", "a@a.com");                  user.save();...
Deletando itens do Banco       de Dados     User user = User.findById(1);            user.delete();
Criando os Controllerspackage controllers;import   play.*;import   play.mvc.*;import   java.util.*;import   models.*;publi...
Interceptações -Controllers Annotations• @Before - Antes da ação ser chamada• @After - Depois da ação ser chamada• @Finall...
Controllers Annotations@Before - Antes da ação ser chamada@Before(unless={“login”,“notauthorised”})static void checkAdmin(...
Controllers Annotations@After - Depois da ação ser chamadapublic class Admin extends Application {    @After    static voi...
Controllers Annotations@Finally - Depois da ação ser executada completamentepublic class Admin extends Application {    @F...
Tipos de Resultado -Controllers Response Result Types• render()        • renderJSON()• renderText()    • renderBinary()• r...
Definindo o layout da app <!DOCTYPE html> <html>     <head>         <title>#{get title /}</title>         <meta http-equiv=...
Criando as Views#{extends application.html /}#{set title:Listagem dos Contatos /}#{if contatos.size() == 0}  <div class="l...
Engine de Templates (Groovy)Expressões - ${...}        <h1>Hello ${myName ?: guest}!</h1>Tags - #{...}   <li>#{a @Applicat...
Engine de Templates (Groovy)Mensagens - &{...}        <h1>Hello ${myName ?: guest}!</h1>Comentários - *{...}* *{ Loop thro...
Validações de campospublic static void register(String user, String email,String password) {  validation.required(user);  ...
Validações de campospublic static void register(String user, Stringemail, String password) {  validation.required(user).me...
Validações de campospublic static void register(String user, String email, Stringpassword) {  // Código do Slide Anterior ...
Validações de campos#{ifErrors}  <h1>Errors Encountered</h1>  <p>There were validation errors encountered while processing...
Instalando Módulos       no Play!
Instalando o módulo PDF   play install pdf
Carregando o módulo PDF     para a aplicação  module.pdf=${play.path}/modules/pdf-head  Adicionar esta linha ao final do ar...
Exemplo de uso do       módulo PDFpackage controllers;import play.mvc.*;import static play.modules.pdf.PDF.*;public Applic...
Dúvidas?
Para maiores informações sobre o        Play! Framework http://www.playframework.orghttp://www.the-play-book.co.uk/
Confira o código das aplicações       finalizadas em:  www.github.com/  grupoweblovers
Não deixem de se cadastrarem no    nosso grupo de estudos! www.grupoweblovers.co.cc
Obrigado!
Play Framework - FLISOL
Upcoming SlideShare
Loading in …5
×

Play Framework - FLISOL

3,140 views

Published on

Palestra realizada durante o FLISOL no dia 09 de Abril de 2011 na IT Cursos em Natal / RN

Published in: Technology
  • Be the first to comment

Play Framework - FLISOL

  1. 1. Play!Desenvolvendo aplicações Web com Java sem dor
  2. 2. Quem souAllyson Barros - @allysonbarrosGraduando em Análise e Desenvolvimento de Sistemas - IFRNDesenvolvedor Web desde 2006Idealizador do Grupo WebLovers - http://grupoweblovers.co.ccallysonbarrosrn@gmail.com - allyson_barros_irm@hotmail.com
  3. 3. O que é?
  4. 4. Quais as vantagens?
  5. 5. Os Primeiros Passos!
  6. 6. Instalaçãodo Framework
  7. 7. Requisitos• JDK 5 ou superior• Editor de Texto (notepad++, Textmate,Vim)• IDE Java - Eclipse ou Netbeans (Opcional)
  8. 8. Ambientes Unix• Baixar o Framework• Extrair para uma pasta desejada (Ex: /opt/)• Adicionar o caminho no $PATH;
  9. 9. Ambientes Unix• Dica: Editar o arquivo .bashrc e adicionar a linha a seguir: export PATH=$PATH:/opt/play-1.1/
  10. 10. Ambientes Windows• Baixar o Framework• Extrair para uma pasta desejada (Ex: C:) (Recomendado extrair para C: ou diretórios sem espaços para evitar problemas futuros.)• Adicionar o caminho no $PATH;
  11. 11. Testando a instalação
  12. 12. Testando a instalação
  13. 13. Criando e rodando uma aplicação
  14. 14. Criando a aplicação play new flisolRodando a aplicação play run flisol
  15. 15. Estrutura das pastas
  16. 16. Configurando o projeto para o Eclipse play eclipsify flisol
  17. 17. Definindo o banco de dados
  18. 18. Editando o arquivoconf/application.conf
  19. 19. Criando os Modelospackage models;import play.*;import play.db.jpa.*;import javax.persistence.*;import java.util.*;@Entitypublic class foo extends Model { // Seu Código aqui}
  20. 20. Selecionando itens do Modelo List<User> user = User.all(); List<User> user = User.find("admin = ?", "true").fetch(); User user = User.findById(1);
  21. 21. Salvando e Atualizandoitens do Banco de Dados User user = new User("foo", "bar", "a@a.com"); user.save(); User user = User.findById(1); user.email = "flisol@rn.softwarelivre.org"; user.save();
  22. 22. Deletando itens do Banco de Dados User user = User.findById(1); user.delete();
  23. 23. Criando os Controllerspackage controllers;import play.*;import play.mvc.*;import java.util.*;import models.*;public class Application extends Controller { public static void index() { render(); }}
  24. 24. Interceptações -Controllers Annotations• @Before - Antes da ação ser chamada• @After - Depois da ação ser chamada• @Finally - Depois da ação ser executada completamente
  25. 25. Controllers Annotations@Before - Antes da ação ser chamada@Before(unless={“login”,“notauthorised”})static void checkAdmin() { String usr = session.get(“user”); if (usr == null) { login(); } else { User user = User.find(“byUsername”,usr).first(); if (!user.isAdmin) { notauthorised(); } }}
  26. 26. Controllers Annotations@After - Depois da ação ser chamadapublic class Admin extends Application { @After static void log() { Logger.info("Action executed ..."); } public static void index() { List<User> users = User.findAll(); render(users); }}
  27. 27. Controllers Annotations@Finally - Depois da ação ser executada completamentepublic class Admin extends Application { @Finally static void log() { Logger.info("Response contains : " +response.out); } public static void index() { List<User> users = User.findAll(); render(users); }}
  28. 28. Tipos de Resultado -Controllers Response Result Types• render() • renderJSON()• renderText() • renderBinary()• renderXML() • redirect()
  29. 29. Definindo o layout da app <!DOCTYPE html> <html> <head> <title>#{get title /}</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" media="screen" href="@{/ public/stylesheets/main.css}"> #{get moreStyles /} <link rel="shortcut icon" type="image/png" href="@{/public/images/ favicon.png}"> <script src="@{/public/javascripts/jquery-1.4.2.min.js}" type="text/javascript" charset="utf-8"></script> #{get moreScripts /} </head> <body> #{doLayout /} </body> </html> Arquivo app/views/application.html
  30. 30. Criando as Views#{extends application.html /}#{set title:Listagem dos Contatos /}#{if contatos.size() == 0} <div class="linha"> <p>Nenhum contato cadastrado.</p> </div>#{/if}#{else} #{list items:contatos, as:contato} <div class="linha"> <p><a href="@{Application.visualizar(contato.email)}">&raquo; ${contato.nome} - ${contato.email}</a></p> </div> #{/list}#{/else} Arquivo app/views/application/index.html
  31. 31. Engine de Templates (Groovy)Expressões - ${...} <h1>Hello ${myName ?: guest}!</h1>Tags - #{...} <li>#{a @Application.admin()}Admin#{/a}</li>Ações - @{...} #{a @Application.admin()}Admin#{/a}
  32. 32. Engine de Templates (Groovy)Mensagens - &{...} <h1>Hello ${myName ?: guest}!</h1>Comentários - *{...}* *{ Loop through the list of users and output each user wrapped in a <li> tag }*Scripts - %{...}% %{ fullname = user.firstname + “ “ + user.lastname; }% <h1>Welcome ${fullname}!</h1>
  33. 33. Validações de campospublic static void register(String user, String email,String password) { validation.required(user); validation.email(email); validation.minSize(password, 6); validation.maxSize(password, 10); if (user == null || user.length() == 0) { validation.addError(“user”, "You must enter a username"); } render();} Exemplo de validação básica
  34. 34. Validações de campospublic static void register(String user, Stringemail, String password) { validation.required(user).message("You must enter ausername."); validation.email(email).message("You must enter avalid email address."); validation.minSize(password, 6).message("Passwordsmust be at least 6 characters long."); validation.maxSize(password, 10).message("Passwordsmust be no more than 10 characters long."); render();} Exemplo de validação básica com mensagens personalizadas.
  35. 35. Validações de campospublic static void register(String user, String email, Stringpassword) { // Código do Slide Anterior if(validation.hasErrors()) { params.flash(); validation.keep(); registrationForm(); } render();} Exemplo de redirecionamento caso exista erros de validação.
  36. 36. Validações de campos#{ifErrors} <h1>Errors Encountered</h1> <p>There were validation errors encountered while processingyour registration request.</p> <ul> #{errors} <li>${error}</li> #{/errors} </ul> <p>Please go back and check the details and try again</p>#{/ifErrors}#{else} The registration process was successful!#{/else} Exemplo de visualização dos erros na view.
  37. 37. Instalando Módulos no Play!
  38. 38. Instalando o módulo PDF play install pdf
  39. 39. Carregando o módulo PDF para a aplicação module.pdf=${play.path}/modules/pdf-head Adicionar esta linha ao final do arquivo config/application.conf
  40. 40. Exemplo de uso do módulo PDFpackage controllers;import play.mvc.*;import static play.modules.pdf.PDF.*;public Application extends Controller { public static void index() { renderPDF(); }}
  41. 41. Dúvidas?
  42. 42. Para maiores informações sobre o Play! Framework http://www.playframework.orghttp://www.the-play-book.co.uk/
  43. 43. Confira o código das aplicações finalizadas em: www.github.com/ grupoweblovers
  44. 44. Não deixem de se cadastrarem no nosso grupo de estudos! www.grupoweblovers.co.cc
  45. 45. Obrigado!

×