play framework - flisol

Post on 07-Dec-2014

3.200 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

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)}">&raquo; ${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/

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

www.grupoweblovers.co.cc

Obrigado!

top related