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,037 views
2,952 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,037
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
56
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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!

×