46
Play! Desenvolvendo aplicações Web com Java sem dor

Play Framework - FLISOL

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Play Framework - FLISOL

Play!Desenvolvendo aplicações

Web com Java sem dor

Page 2: Play Framework - FLISOL

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

[email protected] - [email protected]

Page 3: Play Framework - FLISOL

O que é?

Page 4: Play Framework - FLISOL

Quais as vantagens?

Page 5: Play Framework - FLISOL

Os Primeiros Passos!

Page 6: Play Framework - FLISOL

Instalaçãodo Framework

Page 7: Play Framework - FLISOL

Requisitos

• JDK 5 ou superior

• Editor de Texto (notepad++, Textmate, Vim)

• IDE Java - Eclipse ou Netbeans (Opcional)

Page 8: Play Framework - FLISOL

Ambientes Unix

• Baixar o Framework

• Extrair para uma pasta desejada (Ex: /opt/)

• Adicionar o caminho no $PATH;

Page 9: Play Framework - FLISOL

Ambientes Unix

• Dica: Editar o arquivo .bashrc e adicionar a linha a seguir:

export PATH=$PATH:/opt/play-1.1/

Page 10: Play Framework - FLISOL

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;

Page 11: Play Framework - FLISOL

Testando a instalação

Page 12: Play Framework - FLISOL

Testando a instalação

Page 13: Play Framework - FLISOL

Criando e rodando uma aplicação

Page 14: Play Framework - FLISOL

Criando a aplicaçãoplay new flisol

Rodando a aplicaçãoplay run flisol

Page 15: Play Framework - FLISOL
Page 16: Play Framework - FLISOL

Estrutura das pastas

Page 17: Play Framework - FLISOL

Configurando o projetopara o Eclipse

play eclipsify flisol

Page 18: Play Framework - FLISOL

Definindo o banco de dados

Page 19: Play Framework - FLISOL

Editando o arquivo conf/application.conf

Page 20: Play Framework - FLISOL

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}

Page 21: Play Framework - FLISOL

Selecionando itens do ModeloList<User> user = User.all();

List<User> user = User.find("admin = ?", "true").fetch();

User user = User.findById(1);

Page 22: Play Framework - FLISOL

Salvando e Atualizando itens do Banco de Dados

User user = new User("foo", "bar", "[email protected]");user.save();

User user = User.findById(1);user.email = "[email protected]";

user.save();

Page 23: Play Framework - FLISOL

Deletando itens do Banco de Dados

User user = User.findById(1);user.delete();

Page 24: Play Framework - FLISOL

Criando os Controllerspackage controllers;

import play.*;import play.mvc.*;import java.util.*;import models.*;

public class Application extends Controller { public static void index() {

render(); }}

Page 25: Play Framework - FLISOL

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

Page 26: Play Framework - FLISOL

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

Page 27: Play Framework - FLISOL

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

Page 28: Play Framework - FLISOL

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

Page 29: Play Framework - FLISOL

Tipos de Resultado - Controllers Response Result Types

• render()

• renderText()

• renderXML()

• renderJSON()

• renderBinary()

• redirect()

Page 30: Play Framework - FLISOL

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

Page 31: Play Framework - FLISOL

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

Page 32: Play Framework - FLISOL

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 - @{...}

Page 33: Play Framework - FLISOL

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 - %{...}%

Page 34: Play Framework - FLISOL

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

Page 35: Play Framework - FLISOL

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.

Page 36: Play Framework - FLISOL

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.

Page 37: Play Framework - FLISOL

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.

Page 38: Play Framework - FLISOL

Instalando Módulos no Play!

Page 39: Play Framework - FLISOL

Instalando o módulo PDF

play install pdf

Page 40: Play Framework - FLISOL

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

Page 41: Play Framework - FLISOL

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

Page 42: Play Framework - FLISOL

Dúvidas?

Page 43: Play Framework - FLISOL

Para maiores informações sobre o Play! Framework

http://www.playframework.orghttp://www.the-play-book.co.uk/

Page 45: Play Framework - FLISOL

Não deixem de se cadastrarem no nosso grupo de estudos!

www.grupoweblovers.co.cc

Page 46: Play Framework - FLISOL

Obrigado!