Portais e Frameworks MVC

Documentos relacionados
Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

Desenvolvimento Web TCC Turma A-1

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

Prof. Roberto Desenvolvimento Web Avançado

Desenvolvimento WEB em JAVA. Palestrante: Lourival F. de Almeida Júnior

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces. Gustavo Lira Consultor 4Linux

Associação Carioca de Ensino Superior Centro Universitário Carioca

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04

Curso de Introdução ao

J550. Apache Struts. Helder da Rocha

!" # # # $ %!" " & ' ( 2

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Java para Desenvolvimento Web

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:

Programação em Rede. Servlets. Manipulação de dados de input em Servlets

Java II. Sérgio Luiz Ruivace Cerqueira

Minicurso de MVC web com Struts. Felipe F Nascimento felipenasc@inf.puc-rio.br

Java para WEB. Servlets

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Java na WEB Servlet. Sumário

Escrevendo meu primeiro porlet. Gustavo Lira Consultor 4Linux

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

Arquitetura de uma Webapp

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

WebWork 2. João Carlos Pinheiro.

Autenticação e Autorização

Nos Trilhos com RAILS. Sylvestre Mergulhão

Aula 4. Objetivos. Conteúdo dinâmico na internet.

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Introdução. Entendendo os Controles. Definindo um controle. Introdução MOCKDOMAIN() Testando uma classe de domínio mockdomain

Desenvolvimento Web com JSP/Servlets

Programação Na Web. Sessão II. Índice. Visão geral da API Sessão. Obter dados sobre uma sessão. Extrair informação sobre uma Sessão

Programação II Programação para a Web. Christopher Burrows

Java Server Pages. Arquitectura de uma aplicação distribuída em Internet. Figura 1 Modelo 2

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

programação de páginas de conteúdo dinâmico

Programação Web Aula 12 - Java Web Software

Guia para Iniciantes do WebWork

Prática Sobre Servlets e JSP

UNIDADE II JAVA SERVLETS

Introdução. Servlet. Ciclo Vida. Servlet. Exemplos. Prof. Enzo Seraphim

Evolução guiada por APIs. com REST para modernizar seu legado

II Semana de Tecnologia da Informação. Rails Framework

Aula 03 - Projeto Java Web

Java II. Sérgio Luiz Ruivace Cerqueira

JSP e Servlet Princípio de MVC

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web

Java na Web. Aplicações Web

Programando em PHP. Conceitos Básicos

Fundamentos de Servlets. Conceitos e ciclo de vida Classes e Interfaces da API Exemplos de Servlets

J550. Model View Controller

4 O Workflow e a Máquina de Regras

J550. Helder da Rocha

Relatório do GPES. Conhecendo o Framework Struts

Servlets e Applets, funcionamento e comparativo.

Registo de condutor (Protótipo funcional) Página apresentada ao utilizador

Sistema Gerador de Anúncios para Compra e Venda On-line. Leandro de Oliveira ol.leandro@gmail.com

Padrões de Projeto WEB e o MVC

Scriptlets e Formulários

Começando com Ruby on

Gerador de código JSP baseado em projeto de banco de dados MySQL

J550 Segurança e Controle de erros

Frameworks - Grails. Aécio Costa

WebApps em Java com uso de Frameworks

Servlets, JSPs e Java Beans

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Centro Universitário Metodista Benne1 Rio de Janeiro, Dezembro de Rafael Polo e Sabrina Arêas

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado

Luiz Arão Araújo Carvalho Bacharel em Ciência da Computação Desenvolvedor RedeSat-TO

JSF - Controle de Acesso FERNANDO FREITAS COSTA

PADRÃO PARA MONITORAMENTO DE APLICATIVOS PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ

Tutorial Jogo da Velha WEB

Exibir relatórios gerados pelo Jasper Report em Flex

World Wide Web e Aplicações

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração

JSP (Java Server Pages)

FBV - Linguagem de Programação II. Um pouco sobre Java

Universidade Católica de Brasília Pró-Reitoria de Graduação Sistemas de Informação. na Prática. Por: Fernando Goulart

Executando comandos do Sistema Operacional em uma aplicação WEB Java

gerenciamento de portais e websites corporativos interface simples e amigável, ágil e funcional não dependendo mais de um profissional especializado

Servlets & JSP. Prof. Ramon Chiara

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

SOA Introdução. SOA Visão Departamental das Organizações

INTRODUÇÃO À TECNOLOGIA SERVLETS

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Padrão Arquitetura em Camadas

Tecnologias Web. Java Enterprise Edition

Mini-Tutorial. Como criar relatórios Java para Web com JasperReports e ireport por Roberto J. Furutani 20/07/2005

Programação Web com PHP. Prof. Wylliams Barbosa Santos Optativa IV Projetos de Sistemas Web

Aplicações de Linguagem de Programação Orientada a Objeto

Kassius Vargas Prestes

Transcrição:

Portais e Frameworks MVC DAS 5316 Integração de Sistemas Corporativos Rui J. Tramontin Jr. 1

Tópicos Introdução Web Dinâmica Portais Web Portlets JSR-168 WSRP Frameworks MVC Struts Ruby on Rails 2

Servidor Web Páginas Estáticas Pedido Resposta Docu mento Cliente Servidor Web 3

Servidor Web CGI Common Gateway Interface Pedido Aplicação Externa Gera Cliente Resposta Servidor Web Docu mento 4

Java Servlets Pedido Servlet Engine JVM Servlet Gera Cliente Resposta Servidor Web Docu mento 5

Java Servlets Servlets são objetos Java, rodando dentro de uma máquina virtual Java, que ampliam a funcionalidade de servidores Web Servlets rodam em threads dentro do processo do servidor, e podem interagir com ele Limitação: Código HTML precisa ficar escrito dentro de uma classe Java, dificultando o uso de editores visuais de HTML 6

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; Servlet Exemplo public class HelloWorld extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException,IOException { response.setcontenttype("text/html"); PrintWriter pw = response.getwriter(); pw.println("<html>"); pw.println("<head><title>hello World</title></title>"); pw.println("<body>"); pw.println("<h1>hello World</h1>"); pw.println("</body></html>"); } } 7

Páginas Dinâmicas - JSP Pedido Aplicação Web Gera Cliente Resposta Docu mento Templates Servidor Web 8

JSP Exemplo <% String cliente = request.getremoteaddr(); %> <html> <body> Olá <%= cliente %>! </body> </html> 9

Portais Web Portais são sites que: Agregam diversas fontes de conteúdo e serviços Permitem personalização a seus visitantes Exemplos: Google, Yahoo!, Terra, UOL Portais Empresariais: Portais Web utilizados no contexto de uma empresa. 10

Portais Empresariais: Características Segurança Administradores podem limitar o acesso a determinados conteúdos 11

Portais Empresariais: Características Single Sign-on Permite que usuários do portal acessem diversas funcionalidades tendo que se autenticar apenas uma vez. 12

Portais Empresariais: Características Personalização Membros do portal podem se cadastrar para ver tipos específicos de conteúdo Configuração da aparência do ambiente 13

Portais Empresariais: Características Gerenciamento de documentos e de conteúdo Suporte ao ciclo de vida de conteúdo e documentos: criação edição aprovação controle de versões 14

Portais Empresariais: Características Busca Indexação dos conteúdos e serviços providos pelo portal para busca eficiente Quanto mais conteúdo disponível, mais valioso o portal, mas mais difícil de se encontrar aquilo que se quer 15

Portais Empresariais: Características Colaboração Membros do portal podem comunicar-se entre si por meio de: Troca de mensagens Fóruns de discussão Blogs 16

Portlets Portlets são componentes de interface de usuário plugáveis, gerenciados por e apresentados em portais web Portais apresentam portlets como pequenas janelas Cada portlet pode ser visto como uma aplicação independente, rodando na página do portal 17

Agregação de Portlets Portlet A Portlet B Portlet C Portlet D Servidor de Portais Página de Portal Portlet B Portlet A Portlet C Portlet D 18

Portlets - Vantagens Permitem o desenvolvimento modularizado O desenvolvedor se preocupa com um portlet de cada vez O gerenciamento de ciclo de vida de cada portlet e a montagem da página com eles é trabalho do portal Portlet pode ser reutilizado em outros portais. 19

JSR-168 Padrão Java para o desenvolvimento de portlets Portlets possuem modos (visualização, edição, ajuda, etc) para indicar a tarefa sendo excetutada no momento Janelas de portlets com estado (normal, maximizado, minimizado) 20

JSR-168 (cont.) Processamento de requisições separado Requisição por conteúdo (renderização) Requisição para alterar estado (ação) Gerenciamento de sessão e armazenamento de preferências de usuário Oferece padrão para empacotar portlets para distribuição 21

Exemplo Portlet class GrettingsPortlet extends GenericPortlet { } public void doview(...) {...} public void doedit(...) {...} public void processaction(...) {...} 22

Exemplo Portlet doview public void doview(renderrequest request, RenderResponse response) throws PortletException, IOException { response.setcontenttype("text/html"); PortletContext context = getportletcontext(); PortletRequestDispatcher rd = context.getrequestdispatcher("/view.jsp"); } rd.include(request, response); 23

Exemplo Portlet edit.jsp <%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %> <portlet:actionurl var="changeurl" portletmode="view" /> <portlet:actionurl var="reseturl" portletmode="edit" /> <form action="${ changeurl }" method="post"> Name: <input name="name"> <input type="submit" value="change Name"> </form> <a href="${ reseturl }">Reset to Default</a> 24

Exemplo Portlet processaction public void processaction(actionrequest request, ActionResponse response) throws PortletException, IOException { PortletPreferences prefs = request.getpreferences(); String name = request.getparameter("name"); if (name!= null) prefs.setvalue("name", name); else prefs.setvalue("name", "World"); } prefs.store(); 25

Resultado 26

WSRP Web Services for Remote Portlets Padrão que permite acesso remoto a portlets através de serviços web Cria o conceito de serviços web orientados à apresentação 27

WSRP - Características Separa requisições por conteúdo e de ação da mesma forma que JSR-168 Portlets não são acessados diretamente, mas através de seus contêineres X X Cliente Servidor 28

Portlets Locais Portal Portlet A Serviço A Portlet B Serviço B 29

Portlets Remotos Portal Proxy Portlet A Serviço A Proxy Portlet B Serviço B 30

MVC Modelo-Visão-Controlador 31

MVC Modelo-Visão-Controlador Arquitetura que divide aplicações interativas em três componentes distintos: Modelo: mantém o estado da aplicação Visão: apresentam o modelo ao usuário Controlador: trata as entradas do usuário para atualizar o modelo e apresenta os visualizadores apropriados ao usuário 32

MVC Modelo-Visão-Controlador O controlador atua diretamente sobre o modelo e a visão, sendo notificado de operações efetuadas pelo usuário através da visão Controlador A visão acessa diretamente os dados do modelo e pode ser notificada de alterações neste. Visão Modelo 33

MVC Foi criado no final da década de 70, para o desenvolvimento de aplicações gráficas no ambiente Smalltalk Recentemente foi redescoberto e aplicado ao desenvolvimento de aplicações interativas na web 34

Struts Projeto da Apache para o desenvolvimento de aplicações web em Java de acordo com a arquitetura MVC Requisições são tratadas por um servlet, que instancia componentes (Javabeans) e redireciona a requisição para uma página JSP. Componentes ficam disponíveis para a página e encapsulam o acesso a bases de dados. 35

Arquitetura Struts Requisições Servlet (Controlador) Instancia Redireciona ActiveRecor Javabens (Modelo) ActiveRecor d (Modelo) d (Modelo) Dados Respostas Páginas JSP (Visão) Páginas JSP (Visão) JSP (Visão) Interação com Modelo 36

Exemplo Struts Modelo import org.apache.struts.action.*; public class RegisterForm extends ActionForm { private String username; private String password1; private String password2; public String getusername () { return username; } public void setusername (String username) { this.username = username; } //outros getters e setters } 37

Exemplo Struts Visão <%@ taglib uri="/web-inf/struts-form.tld" prefix="form" %> <form:form action="register.do"> Nome: <form:text property="username"/><br> Password: <form:password property="password1"/><br> Repita a password: <form:password property="password2"/><br> <form:submit value="registrar"/> </form:form> 38

Exemplo Struts Ação import org.apache.struts.action.*; import javax.servlet.http.*; import java.io.*; public class RegisterAction extends Action { public ActionForward perform ( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { //implementação } } 39

Exemplo Struts Ação (cont) public ActionForward perform (ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) { RegisterForm rf = (RegisterForm) form; if (rf.getpassword1().equals(rf.getpassword2())) { try { UserDirectory.getInstance(). setuser(rf.getusername(),rf.getpassword1()); return mapping.findforward("success"); } catch (UserDirectoryException e) { return mapping.findforward("failure"); } } else return mapping.findforward("failure"); } 40

Exemplo Struts Configuração <?xml version="1.0"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd"> <struts-config> <form-beans> <form-bean name="registerform" type="registerform" /> </form-beans> <action-mappings> <action path="/register" name="registerform" type="registeraction" > <forward name="success" path="/success.html" /> <forward name="failure" path="/failure.html" /> </action> </action-mappings> </struts-config> 41

Ruby on Rails Framework MVC baseado na linguagem Ruby Nessecidade de arquivos de configuração eliminada Aplicações orientadas a bancos de dados 42

Ruby Linguagem de programação dinâmica orientada a objetos Focada em simplicidade e produtividade Sintaxe elegante e natural 43

Ruby Tudo são objetos 10.class => "Fixnum" -4.abs => 4 "ruby".upcase => "RUBY" 5.times do puts "Viva Ruby!" end 44

Ruby - Classes e Métodos class Mensagem def initialize(msg) @msg = msg end def saudacao(nome) puts "#{@msg} #{nome}!" end end m = Mensagem.new("Alô") m.saudacao("mundo") # Alô Mundo m.saudacao "Sem Parênteses" # Alô Sem Parênteses 45

Ruby - Arrays e Hashes a = ["a", "b", "c"] puts a[1] # imprime "b" a.size # 3 h = { "a" => 100, "b" => 200, "c" => 300, "d" => 400 } puts h["c"] # imprime 300 puts h[a[0]] # imprime 100 h.keys # ["a", "b", "c", "d"] 46

Ruby - Blocos cores = ["Azul", "Amarelo", "Vermelho"] cores.each do c puts c end cores.map { c c.size } => [4, 7, 8] cores.find_all { c c.include? "m" } => ["Amarelo", "Vermelho"] 47

Ruby - Tipagem Dinâmica class Galo def som "cocoricó!" end end class Pato def som "quaquá!" end end def cantar(aves) aves.each do ave if ave.respond_to? :som ave.som end end end aves = [Pato.new, Galo.new, Object.new] cantar(aves) 48

Ruby - method_missing class Roman def romantoint(str) #...? end def method_missing(metodo) str = metodo.to_s romantoint(str) end end r = Roman.new r.iv # 4 r.xxiii # 23 r.mm # 2000 49

Rails Bibliotecas Ruby que formam um framework MVC dinâmico Modelo baseado em banco de dados ActiveRecord Controlador e visão interligados 50

Arquitetura Rails Requisições Roteador Seleção de Controlador ActionControler (Controlador) Interação com Modelo Invocação da Visão Respostas Páginas ERb (Visão) Páginas JSP (Visão) JSP (Visão) ActiveRecord ActiveRecord (Modelo) ActiveRecord (Modelo) (Modelo) Dados 51

Active Record (Modelo) Mapeamento automático entre banco de dados e objetos CREATE TABLE entries ( id INTEGER(11) NOT NULL, name VARCHAR(255), comments VARCHAR(255), PRIMARY KEY (id) ); class Entry < ActiveRecord::Base # nada aqui dentro end entry = Entry.new entry.name = "Joãozinho" entry.comments = "Eu adoro essa aula!" entry.save entry = Entry.find(1) puts entry.name # saída: Joãozinho 52

Action Controller (Controlador) Responsável por tratar requisições Ações mapeadas para métodos Variáveis de instância acessíveis pela visão 53

Roteamento de URLs http://www.xxx.com/recados/list Controlador Método 54

Controlador e Visão class RecadosController < ActionController::Base def list @entries = Entry.find_all end def new @entry = Entry.new end end <html> <body> <h1>página de Recados</h1> <% @entries.each do e %> <p><%= e.name %> : <%= e.comments %></p> <% end %> </body> </html> views/recados/list.rhtml 55

Controlador e Visão <html> <body> <h1>novo Recado</h1> <%= star_form_tag :action => :create %> <p>nome: <%= text_field "entry", "name" %></p> <p>comentário: <%= text_area "entry", "comments" %></p> <%= submit_tag "Submeter Comentário" %> <%= end_form_tag %> </body> </html> views/recados/new.rhtml def create @entry = Entry.new(@params['entry']) if @entry.save redirect_to :action => :list else render_action :new end end 56

Validação no Modelo Validação class Project < ActiveRecord::Base validates_presence_of :name, :description validates_uniqueness_of :name validates_length_of :name, :maximum => 50 validates_numericality_of :size validates_format_of :name, :with => /^\w+$/ end Na visão: <%= error_messages_for "modelo" %> 57

Resultado 58