Arquitetura de uma Webapp



Documentos relacionados
Java para Desenvolvimento Web

Java para WEB. Servlets

Java II. Sérgio Luiz Ruivace Cerqueira

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

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

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

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

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

Criando e Entendendo o Primeiro Servlet Por: Raphaela Galhardo Fernandes

Desenvolvimento Web com JSP/Servlets

Aula 03 - Projeto Java Web

Java na WEB Servlet. Sumário

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

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

UNIDADE II JAVA SERVLETS

Desenvolvimento Web TCC Turma A-1

Programação Web Aula 12 - Java Web Software

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

INTRODUÇÃO À TECNOLOGIA SERVLETS

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

Servlets e Applets, funcionamento e comparativo.

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Prática Sobre Servlets e JSP

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

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

Prof. Roberto Desenvolvimento Web Avançado

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

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

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

Orientada a serviços: JAX-WS SOAP API

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

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

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

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

Autenticação e Autorização

J2EE TM Java 2 Plataform, Enterprise Edition

JSP: JAVA SERVER PAGES

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

PROGRAMAÇÃO SERVIDOR WEBSERVICES EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

JSP: JAVA SERVER PAGES

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

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

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Servlets & JSP. Prof. Ramon Chiara

Servlets. João Carlos Pinheiro. Julho / 2005

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Relatório referente a compreensão da programação JSP. Realizado do dia de 22 abril de 2010 a 03 de maio de 2010.

Curso de Aprendizado Industrial Desenvolvedor WEB

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

20/08/14 JAVA SERVLETS CONCEITOS CONTEÚDO ARQUITETURA DE UMA APLICAÇÃO WEB ARQUITETURA DA APLICAÇÃO WEB

02 - Usando o SiteMaster - Informações importantes

Programando em PHP. Conceitos Básicos

Java II. Sérgio Luiz Ruivace Cerqueira

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

Programação Web Prof. Wladimir

CONTEÚDOS PROGRAMÁTICOS DA ACADEMIA

Java Servlets. Leonardo Gresta Paulino Murta

UFG - Instituto de Informática

Tecnologias para Web

J550 Segurança e Controle de erros

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

Programação WEB Introdução

Alfamídia Programação: Java Web

Programação para Web Artefato 01. AT5 Conceitos da Internet

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

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello


World Wide Web e Aplicações

Curso de Aprendizado Industrial Desenvolvedor WEB

Sistemas para internet e software livre

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

MVC e Camadas - Fragmental Bliki

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

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600

Kassius Vargas Prestes

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

4 O Workflow e a Máquina de Regras

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

Web Services. Autor: Rômulo Rosa Furtado

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

UM NOVO CONCEITO EM AUTOMAÇÃO. Série Ponto

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Padrões de Projeto WEB e o MVC

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

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

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

Java II. Sérgio Luiz Ruivace Cerqueira

Transcrição:

Arquitetura de uma Webapp Arquitetura J2EE Containers e componentes MVC: introdução Frederico Costa Guedes Pereira 2006 fredguedespereira@gmail.com Plataforma J2EE World Wide Web e a Economia da Informação Informação valerá tanto quanto bens e serviços Desafios das empresas atualmente: Gerenciamento das funções críticas do negócio por sistemas computadorizados (vem sendo feito) Integração entre os sistemas, correlacionando dados de diversas fontes e transformando-os em informações estratégicas (grande desafio) Forma para isso: aplicações distribuídas customizáveis 2 1

Plataforma J2EE O objetivo da J2EE é: Definir um conjunto padrão de funcionalidades que ajudem às empresas a integrarem e escalarem suas aplicações distribuídas às demandas do negócio Para isso, disponibiliza um conjunto de tecnologias novas que simplificam a definição de aplicações empresariais distribuídas através de um modelo baseado em componentes Variedade de aplicações: de cliente/servidor na intranet a aplicações Web baseadas na Internet 3 Plataforma J2EE Visão Geral da Plataforma J2EE: 4 2

Plataforma J2EE Características: Modelo multi-camadas partes diferentes da aplicação executando em diferentes dispositivos Gerenciamento de Componentes por Containers ambientes de execução padronizados que oferecem serviços aos componentes gerenciados Suporte para Componentes Clientes páginas HTML, Applets, aplicações desktop escritas em Java ou outras linguagens Suporte para Componentes de Negócio (EJB) backbone da plataforma e persistência 5 Cenários para aplicações J2EE Cenário completo * Figura obtida de [1] 6 3

Cenários para aplicações J2EE Cenário aplicação multicamadas * Figura obtida de [1] 7 Cenários para aplicações J2EE Cenário centrado na Web Cenário a ser utilizado neste curso! * Figura obtida de [1] 8 4

Cenários para aplicações J2EE Detalhe do container web * Figura obtida de [1] 9 Componentes e containers Componente Unidades de software utilizadas para compor as diversas partes de uma aplicação, tais como, interface e a lógica de negócio. Só existem sobre um ambiente executável especial chamado container Container Oferecem os serviços necessários para os componentes, tais como, gerenciamento do ciclo de vida, segurança, formatação, dados de configuração, etc. 10 5

Componentes e containers Suporte de comunicação O container cuida de toda a comunicação e detalhes do protocolo HTTP com o cliente, dando ao servlet objetos ao invés de strings de caracteres. Gerenciamento do ciclo de vida É o container quem instancia e termina o seu servlet, quem chama os seus métodos e fornece todos os objetos indicados nos parâmetros destes. 11 Componentes e containers Suporte ao multi-threading O container cria um thread do método de serviço para cada requisição recebida. Segurança declarativa O container permite que você configure vários aspectos de segurança e autenticação de forma declarativa (XML) e não programaticamente dentro de cada aplicação Suporte a documentos JSP O container cria um servlet para cada documento JSP que você escreve, automatica e transparentemente. 12 6

Componentes e containers Ilustrativamente: componente envia dados recebe dados cria Cliente Container 13 Componentes e containers Componentes cliente Applets e aplicações desktop Exemplo de container:o browser ou a JVM cliente Componentes Web Servlets programa Java que estende a funcionalidade de um servidor Web através do modelo requisição-resposta Páginas JSP documentos HTML gerados dinamicamente por um servlet Exemplos de container: Tomcat, JBOSS, Resin, etc... 14 7

Componentes e containers Servlets Objetos Java criados pelo container web para tratar uma requisição do usuário e produzir a resposta (geralmente um documento HTML) A API de servlets é capaz de: Inicializar e finalizar um servlet Acessar o ambiente de execução do servlet Receber requisições e produzir respostas Manter sessões e informações relacionadas a elas Interagir com outros servlets e componentes 15 Componentes e containers Páginas JSP Documento em modo texto com enxertos de código Java via marcadores (ou tags) especiais Uma página JSP contém: Gabaritos (templates) para formatação do documento, geralmente em linguagem HTML. Nos servlets isso é feito dentro do código da classe. Elementos de marcação JSP: produzem o conteúdo dinâmico do documento através de diversos elementos onde código Java pode ser inserido 16 8

Container Web e uma requisição ❶O servidor web recebe um pedido de execução de um servlet http://localhost:8080/teste/show.do GET... webapp server container web servlet 17 Container Web e uma requisição ❷O container cria um objeto HttpServletRequest e HttpServletResponse webapp server container web servlet request response 18 9

Container Web e uma requisição ❸O container cria uma thread do método de serviço do servlet e passa os objetos previamente alocados como parâmetros webapp server container web request response servlet thread de service() 19 Container Web e uma requisição ❹O container chama o método service() que, por sua vez, chama o método adequado (doget ou dopost), dependendo do método HTTP usado webapp server container web request response service() doget() servlet thread 20 10

Container Web e uma requisição ❺O container chama o método service() que, por sua vez, chama o método adequado (doget ou dopost), dependendo do método HTTP usado webapp server container web <html>... </html> response service() doget() servlet thread 21 Container Web e uma requisição ❻O container monta uma resposta HTTP anexando o HTML produzido pelo servlet e destrói os objetos request e response e a thread webapp server 200... <html>... </html> container web request response servlet thread de service() 22 11

Um servlet... Identificando alguns elementos no código: import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class AloMundoServlet extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse resp) throws IOException { resp.setcontenttype("text/html"); PrintWriter out = resp.getwriter(); out.println("<h1>alo, Mundo!</h1>"); } } 23 Como é que o container sabe que é para executar o servlet? Como ele descobre, qual é o servlet? 24 12

Mapeando uma URL num servlet Todo servlet tem 3 nomes: Um nome URL, que é o que o usuário e o programador HTML conhece Um nome interno usado no arquivo de mapeamento XML O nome da classe (precedido do pacote, se for o caso) O container recebe o path para o recurso (servlet) e tem que se virar com ele GET /teste/show.do HTTP/1.1 25 Puts! Três nomes para uma mesma coisa! Não é complicar demais não? Por que não usamos simplesmente o nome da classe? 26 13

Mapeando uma URL num servlet Desvantagens de utilizar o path e nome do servlet (nos links, formulários HTML, etc): Se o path mudar, você terá que reescrever todos os HTMLs que apontam para o servlet C:\aplications\tomcat\webapps\teste\ WEB-INF\classes\pacote\MeuServlet /usr/local/tomcat/webapp/teste/web- INF/classes/pacote/MeuServlet 27 Mapeando uma URL num servlet Desvantagens de utilizar o path e nome do servlet (nos links, formulários HTML, etc): O mundo externo fica sabendo muitos detalhes de como você organiza seu sistema internamente Nomes de classes podem ser grandes, precedidos por nomes de pacotes ainda maiores. Imagine digitar tudo isso numa URL!!! http://servidor:8080/aplications/tomcat/ webapps/teste/web-inf/classes/pacote/ MeuServlet 28 14

Mapeando uma URL num servlet Por tudo isso, deve-se registrar o servlet no descritor de implantação (deployment descriptor DD) <servlet> mapeia o nome interno no nome completo da classe (do pacote em diante) <servlet-mapping> mapeia o nome interno no nome URL O DD é um arquivo chamado web.xml com uma DTD própria para configurar vários aspectos da sua aplicação web 29 Mapeando uma URL num servlet Exemplo de arquivo web.xml <webapp> Nome interno do servlet <servlet> <servlet-name>alo</servlet-name> <servlet-class>fred.alomundoservlet</servlet-class> </servlet> Nome qualificado da classe <servlet-mapping> <servlet-name>alo</servlet-name> <url-mapping>/show.do</url-mapping> </servlet-mapping> Nome URL do servlet </web-app> 30 15

Neste arquivo você só mapeou o nome da classe no nome URL. Como o container sabe o path real da classe se você não o colocou no arquivo web.xml? 31 O container sabe onde procurar por aplicações web! E dentro de uma aplicação a estrutura de diretórios é padronizado na especificação de servlets! 32 16

Resumo da ópera... O container recebe a requisição e o path do recurso (que neste caso é o nome da aplicação seguida do nome URL do servlet) http://localhost:8080/teste/show.do container web 33 Resumo da ópera... O container procura no diretório de aplicações web dele por uma aplicação chamada teste??? Tomcat container web webapps /teste/show.do teste loja blog 34 17

Resumo da ópera... Utilizando o arquivo web.xml da aplicação teste, ele procura por um mapeamento chamado /show.do container web show.do??? <webapp>...... </webapp> web.wml <servlet-mapping> <servlet-name>alo </servlet-name> <url-mapping>/show.do </url-mapping> </servlet-mapping> 35 Resumo da ópera... Com o nome interno do servlet (Alo), ele pega o nome da classe lá no marcador <servlet> container web Alo <webapp>...... </webapp> web.wml <servlet> <servlet-name>alo </servlet-name> <servlet-class> fred.alomundoservlet </servlet-class> </servlet> 36 18

Resumo da ópera... Por fim, procura pelo arquivo AloMundoServlet.class dentro do diretório específico (isso é padrão!) na aplicação web: Achei! teste WEB-INF container web web.wml classes fred 1001 0110 AloMundoServlet.class 37 Um estudo de caso Construir um sistema de registro de bugs registra/atende bug login ok pesquisa bug 38 19

Um estudo de caso Servlets projetados: ChecaLoginServlet Verifica se o login e senha conferem com o fonecido pelo usuário a partir do formulário de login. Se login ok, página principal. EditaBugServlet GravaBugServlet Exibem a página com os detalhes cadastrados para o bug e gravam qualquer alteração realizadas nestas informações PesquisaBugServlet Faz uma pesquisa a partir de critérios fornecidos e exibe uma listagem com os bugs que os possuem 39 Um estudo de caso Fazendo o login web container login.html ChecaLoginServlet main.html 40 20

Um estudo de caso Cadastrando um novo bug web container login.html ChecaLoginServlet main.html EditaBugServlet bug.html 41 Um estudo de caso Alterando as informações de um bug web container login.html ChecaLoginServlet main.html EditaBugServlet bug.html GravaBugServlet 42 21

Um estudo de caso Pesquisando os bugs da base web container login.html ChecaLoginServlet PesquisaBugServlet main.html bugs.html 43 Um estudo de caso Editando um bug web container login.html ChecaLoginServlet main.html EditaBugServlet bug.html PesquisaBugServlet bugs.html 44 22

Um estudo de caso Fluxo completo web container login.html ChecaLoginServlet main.html EditaBugServlet bug.html PesquisaBugServlet bugs.html GravaBugServlet 45 Características desta webapp Alto acoplamento entre processamento e apresentação Os servlets realizam a lógica de negócio e a apresentação dos resultados (interface com o usuário) Dificuldade de manutenção A alteração do layout da apresentação dos dados implica em alteração e recompilação de muitos servlets dificuldade de manutenção e evolução 46 23

Adicionando JSP ao modelo Separação entre lógica e apresentação web container servidor web PesquisaBugServlet resultado do select <html>... </html> <html> <%=..%> </html> ListaBugs.jsp 47 MVC na web MVC = Model View Controller Padrão que mantém separados a lógica de negócio (M) da apresentação (V) e interação (C) com o usuário. Nas aplicações desktop, o controller e o view geralmente estão mais acoplados que estes e o modelo Na web, o controller determina o fluxo em que as ações irão acontecer na aplicação No modelo utilizamos todas as técnicas de POO aprendidas, é programação Java pura 48 24

MVC na web Interação entre as partes: Apresentação dos dados e recepção dos dados Controller Decide como juntar o modelo com a visão adequada <html> <%=..%> </html> View Lógica de negócios da aplicação Model 49 Bibliografia [1] Kassem, Nicholas. Designing Enterprise Applications with the Java 2 Plataform, Enterprise Edition. Addision Wesley. 2000. [2] Basham, Bryan; Sierra, Kathy. Head First Servlets & JSP. 2005. 50 25