play framework - flisol
Post on 07-Dec-2014
3.200 Views
Preview:
DESCRIPTION
TRANSCRIPT
Play!Desenvolvendo aplicações
Web com Java sem dor
Quem sou
Allyson Barros - @allysonbarrosGraduando em Análise e Desenvolvimento de Sistemas - IFRN
Desenvolvedor Web desde 2006
Idealizador do Grupo WebLovers - http://grupoweblovers.co.cc
allysonbarrosrn@gmail.com - allyson_barros_irm@hotmail.com
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órios sem espaços para evitar problemas futuros.)
• Adicionar o caminho no $PATH;
Testando a instalação
Testando a instalação
Criando e rodando uma aplicação
Criando a aplicaçãoplay new flisol
Rodando a aplicaçãoplay run flisol
Estrutura das pastas
Configurando o projetopara o Eclipse
play eclipsify flisol
Definindo o banco de dados
Editando o arquivo conf/application.conf
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}
Selecionando itens do ModeloList<User> user = User.all();
List<User> user = User.find("admin = ?", "true").fetch();
User user = User.findById(1);
Salvando e Atualizando itens 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();
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.*;
public class Application extends Controller { public static void index() {
render(); }}
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
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(); } } }
Controllers Annotations@After - Depois da ação ser chamada
public class Admin extends Application { @After static void log() { Logger.info("Action executed ..."); } public static void index() { List<User> users = User.findAll(); render(users); }}
Controllers Annotations@Finally - Depois da ação ser executada completamente
public 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); }}
Tipos de Resultado - Controllers Response Result Types
• render()
• renderText()
• renderXML()
• renderJSON()
• renderBinary()
• redirect()
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
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)}">» ${contato.nome} - ${contato.email}</a></p> </div> #{/list}#{/else}
Arquivo app/views/application/index.html
Engine de Templates (Groovy)
<h1>Hello ${myName ?: 'guest'}!</h1>
Expressões - ${...}
<li>#{a @Application.admin()}Admin#{/a}</li>
Tags - #{...}
#{a @Application.admin()}Admin#{/a}
Ações - @{...}
Engine de Templates (Groovy)
<h1>Hello ${myName ?: 'guest'}!</h1>
Mensagens - &{...}
*{ Loop through the list of users and output each user wrapped in a <li> tag }*
Comentários - *{...}*
%{ fullname = user.firstname + “ “ + user.lastname; }%<h1>Welcome ${fullname}!</h1>
Scripts - %{...}%
Validações de campos
public 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
Validações de campos
public static void register(String user, String email, String password) { validation.required(user).message("You must enter a username."); validation.email(email).message("You must enter a valid email address."); validation.minSize(password, 6).message("Passwords must be at least 6 characters long."); validation.maxSize(password, 10).message("Passwords must be no more than 10 characters long."); render();}
Exemplo de validação básica com mensagens personalizadas.
Validações de campos
public static void register(String user, String email, String password) { // Código do Slide Anterior if(validation.hasErrors()) { params.flash(); validation.keep(); registrationForm(); } render();}
Exemplo de redirecionamento caso exista erros de validação.
Validações de campos
#{ifErrors} <h1>Errors Encountered</h1> <p>There were validation errors encountered while processing your 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.
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 arquivo config/application.conf
Exemplo de uso do módulo PDF
package controllers;
import play.mvc.*; import static play.modules.pdf.PDF.*;
public Application extends Controller { public static void index() { renderPDF(); }}
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!
top related