Projeto de Sistemas de Software

Slides:



Advertisements
Apresentações semelhantes
Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Ferramenta de Desenvolvimento Material II-Bimestre Conceitos de lógica.
Advertisements

INFORMAÇÕES COMPLEMENTARES
ARQUITETURA EM CAMADAS
UNIPAC – ARAGUARI CAMPUS – IX PROF. EVERTON HIPÓLITO DE FREITAS
Framework para desenvolvimento web
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
Objetos Implícitos Contextuais
JSP Segundo Semestre – 2008 Professor Glaucio Bianchini
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Modelo Cliente-Servidor
Curso de ADMINISTRAÇÃO
Projeto de Sistemas de Software
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
Alcides Calsavara JSP JavaServer Pages Alcides Calsavara
Java Server Pages (JSPs)
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
EXPRESSÕES ARITMÉTICAS
Aula 4 Nomes, Vinculações, Tipos e Escopos
Prof.: Carlos Hairon R. Gonçalves
Geração Dinâmica de Páginas com JSP Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação.
Model-View-Controller (MVC) em Aplicações Web Eduardo Martins Guerra Desenvolvimento de Soluções WEB.
Desenvolvimento de Soluções WEB Escopos de uma Aplicação Web
Classes e objetos P. O. O. Prof. Grace.
Tecnologias para Internet
EL e JSTL Prof. Danton Cavalcanti Franco Junior
Desenvolvimento de Projeto e Aplicações Web
Desenvolvimento de Projetos e Aplicações Web
Aplicativos Web Com Orientação a Objetos
Desenvolvimento WEB I Camila Nunes
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
Introdução ao Desenvolvimento Web
Capítulo 2 Java Servlets.
Plataforma Brasil – Submissão de pesquisa
 Muitas aplicações se faz necessário o acompanhamento da navegação do usuário armazenando informações específicas de cada um.  É comum hoje em dia acessarmos.
Configuração do Ambiente de Desenvolvimento
Curso de JavaWeb Instrutores: Rodrigo Cardoso e Maria Carolina
Conceitos de J2EE para a WEB
Aula 2 – Primeiros Passos com a arquitetura Web Servidor
Prof. Alexandre Monteiro Recife
Tópicos Especiais J2EE Prof. Cristina Valadares Curso de Ciência da Computação.
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
1 Servlet Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n /gtalk:
JSP / Servlets Avançado
Olhe fixamente para a Bruxa Nariguda
Servlets e JSP Desenvolvimento de Aplicações Web
Aula 2 – Primeiros Passos com a arquitetura Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas.
Arquitetura das JSP - Aula 2
Aplicações Web com Orientação a Objetos
Interface HttpServletResquest
Conceitos da arquitetura
Introdução a JEE Marco A. S. Reis Arquiteto de Software Abril/2011.
Padrões de Interação com o Usuário
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Tópicos Especiais J2EE Prof. Cristina Valadares Curso de Ciência da Computação.
PEC - JSP Jobson Ronan Objetivos Esta aula apresenta tudo o que é necessário para implementar servlets escrevendo JavaServer Pages.
Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos
OBJETIVO Nesta aula será apresentado o desenvolvimento básico sobre HTTP Servlets. Espera-se que, ao final da apresentação, o aluno tenha noções de como.
Programação Distribuída em Java Aula Na aula passada vimos: TomCat –Instalação e configuração –Criação de contexto JSP... uma introdução –Expressões.
Java Server Pages Um estudo de caso para aprendizagem Renata França de Pontes.
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Servidores.
Aula 1 - Fundamentos Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros.
Aplicativos para Internet Prof. Wolley W. Silva
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
Desenvolvimento WEB II Aula 3 – Conexão com o Banco de Dados
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
Prof. Rogerio Alessandro Bueno 1 JavaServer Pages (JSP) Prof. Rogério A. Bueno.
Servlets Manoel Neto Objetivos Aprender  Como escrever um servlet  Como compilar um servlet  Como executar Também serão.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Java TM Platform, Enterprise Edition (Java EE) Projeto de Sistemas de Software.
Transcrição da apresentação:

Projeto de Sistemas de Software Java EE Projeto de Sistemas de Software

Visão geral da Arquitetura Java EE Servlets JSP Boas Práticas Agenda Visão geral da Arquitetura Java EE Servlets JSP Boas Práticas MVC Command © LES/PUC-Rio

JavaTM Platform, Enterprise Edition (Java EE) Arquitetura de referência Plataforma de Tecnologias Desenvolvimento de aplicações corporativas distribuídas Provê Suporte ao gerenciamento automático de componentes Infra-estrutura de serviços complexos Transações Segurança Persistência Objetivo Central Desenvolvedores podem concentrar-se no desenvolvimento da lógica de negócio © LES/PUC-Rio

Componentes Java EE Aplicações Java EE Componente Java EE Constituídas por componentes Componente Java EE Unidade funcional de software Formada por Conjunto de classes Arquivos relacionados Pode se comunicar com outros componentes Pode ser reusado durante a construção de aplicações Java EE Deve seguir a especificação Java EE © LES/PUC-Rio

Modelos de Componente Java EE A especificação Java EE define os seguintes componentes Java EE: Aplicações stand-alone aplicação Java mantidos e executados no cliente GUI Componentes Web Servlet Objetos java que respondem requisições em HTTP Resposta normalmente é Html gerado dinamicamente Mantidos e executados no servidor JSP Linguagem de script adequada para escrita de servlets de apresentação Applets Normalmente executados dentro do browser Mantidos pelo servidor e executados no cliente Enterprise JavaBeans (EJBs) componentes mantidos e executados em um ambiente gerenciado pelo servidor Provê Monitoramento transacional Persistência Distribuição de objetos Segurança Não são JavaBeans! © LES/PUC-Rio

Exemplos de Componentes Java EE Componentes Clientes Applets Aplicações Java Stand-Alone Componentes Web Servlets JSPs Componentes EJB Session Beans Message-Driven Beans © LES/PUC-Rio

Arquitetura de Aplicações Java EE © LES/PUC-Rio

Servidores Java EE Componentes Java EE são instalados em servidores Oferecem infra-estrutura para gerenciamento do ciclo de vida dos componentes Incluem containers Web e EJB Provêem diversos serviços para os componentes Transações Persistência Segurança Nomes Distribuição © LES/PUC-Rio

Java EE – Tecnologias Associadas Panacéia de tecnologias Ambientes de desenvolvimento Servidores de aplicação Frameworks de apoio ao desenvolvimento Padrões de Projeto Ferramentas de geração de código © LES/PUC-Rio

Java Servlets

Servlet - Conceito Aplicação Java executada do lado do servidor, estendendo a capacidade do servidor web Alternativa Java para os scripts CGI Gerenciado pelo módulo web Vantagens Melhor aproveitamento dos recursos do sistema Fácil de programar Portável © LES/PUC-Rio

Arquitetura Cliente-Servidor GET (request) Documento HTML retorna (response) Documento HTML Cliente / Browser Servidor Formulário Submetido via POST (request) Servidor retorna HTML gerado pelo Servlet © LES/PUC-Rio

Arquitetura Cliente-Servidor Arquitetura baseada na divisão do processamento em processos distintos Servidor responsável pela manutenção da informação Clientes responsáveis pela obtenção dos dados envio de pedidos ao processo servidor Cliente faz requisições utilizando protocolo HTTP Para cada requisição o servidor cria uma nova Thread © LES/PUC-Rio

Requisitando um Servlet via GET GET (HTTP) http://localhost/servlet/ServletHyperMed?Comando=SetCtxLabPorNome&Por=&No=Apsen © LES/PUC-Rio

Requisitando um Servlet via POST © LES/PUC-Rio

API de Servlet API de Servlet java.lang.Object | Conjunto de classes Java Define interface padrão entre o cliente web e o servidor web java.lang.Object | +----javax.servlet.GenericServlet +----javax.servlet.http.HTTPServlet +----com.teccomm.pss.MeuServlet © LES/PUC-Rio

HttpServlet Tratador de requisições HTTP Trata métodos HTTP específicos doGet(HttpServletRequest req, HttpServletResponse resp) doPost(HttpServletRequest req, HttpServletResponse resp) doGet e doPost Chamados pelo método service() Subclasses reescrevem os métodos doGet doPost Podem reescrever os métodos init() destroy() © LES/PUC-Rio

Ciclo de Vida do Servlet Criação e inicialização Realizado uma única vez init(ServletConfig config) Sempre chama o método da super classe primeiro super.init(config) Pode sinalizar a exceção UnavailableException caso ocorra algum erro durante o processo de inicialização Os médotos service(), doGet(), doPost() são chamados para atender requisições de clientes Cada requisição é atendida por uma nova thread destroy() e Coleta de lixo Executado somente uma vez Alguns servidores somente removem o servlet quando ocorre o shutdown Utilizado para liberar recursos © LES/PUC-Rio

Recapitulando... Para criar um Servlet é necessário Estender a classe HttpServlet pacote javax.servlet.http do JSDK Implementar os métodos doGet ou doPost © LES/PUC-Rio

Request e Response Métodos doGet(), doPost() recebem dois parâmetros HttpServletRequest encapsula os parâmetros da requisição HttpServletResponse encapsula a resposta ao cliente © LES/PUC-Rio

HttpServletRequest Interface que encapsula a requisição feita pelo cliente através do protocolo HTTP Possui métodos que permitem recuperar os dados da requisição cabeçalho dados de formulários ou parâmetros enviados informações sobre a sessão do cliente © LES/PUC-Rio

HttpServletRequest Alguns métodos definidos em HttpServletRequest para manipulação de Parâmetros java.util.Enumeration getParameterNames() Obtém listagem, contendo nomes de parâmetros da requisição java.lang.String[] getParameterValues(java.lang.String name) Obtém valores do parâmetro “name” da requisição java.lang.String getParameter(java.lang.String name) Obtém valor do parâmetro “name” da requisição © LES/PUC-Rio

HttpServletResponse Interface que encapsula a resposta ao cliente Possui um método responsável por recuperar o canal de resposta com o cliente getWriter() retorna um PrintWriter Ex: PrintWriter out = response.getWriter(); out.println(“Escrevendo no cliente”); Também é possível configurar qual é o tipo dos dados que estão sendo enviados de volta ao cliente setContentType(String type) Os tipos mais comuns são text/html, text/xml O método setContentType deve ser chamado antes do método getWriter © LES/PUC-Rio

Primeiro Exemplo: Hello World! © LES/PUC-Rio

Segundo Exemplo © LES/PUC-Rio

Gerenciamento de sessão (I) Protocolo HTTP Protocolo sem estado Não é possível a princípio conhecer o estado do cliente anterior à uma requisição O gerenciamento de sessão provê uma maneira de identificar usuários através de várias requisições HTTPs e recuperar suas informações Dados do estado do cliente Para obter uma sessão HttpSession getSession() Obtém sessão existente, caso não exista retorna uma nova sessão HttpSession getSession(boolean create) Obtém sessão existente ou cria uma nova sessão dependendo do valor do parâmetro create © LES/PUC-Rio

Gerenciamento de sessão (II) Métodos para manipulação de objetos em sessão void removeAttribute(java.lang.String name) Retira objeto da sessão void setAttribute(java.lang.String name, java.lang.Object value) Coloca ou sobreescreve objeto na sessão identificado por name java.lang.Object getAttribute(java.lang.String name) Obtém objeto da sessão java.util.Enumeration getAttributeNames() Obtém os nomes de todos os objetos armazenados na sessão © LES/PUC-Rio

Gerenciamento de sessão (III) Tempo de duração da sessão Sessões em geral tem intervalo máximo de tempo que podem ficar inativas public int getMaxInactiveInterval() public void setMaxInactiveInterval(int interval) As sessões também podem ser encerradas explicitamente pelo programador public void invalidate() © LES/PUC-Rio

Exemplo – Carrinho de compras (I) Adicionando parâmetros à Sessão © LES/PUC-Rio

Exemplo – Carrinho de compras (II) Recuperando parâmetros da Sessão © LES/PUC-Rio

Exemplo – Carrinho de compras (III) Recuperando parâmetros da Sessão © LES/PUC-Rio

Exemplo – Carrinho de compras (IV) Encerrando a Sessão © LES/PUC-Rio

Colocando para Funcionar Para que o servlet “funcione” Necessário que um servidor web/aplicação com suporte a java que escute as requisições do cliente Ex: IBM WebSphere Application Server Jakarta Tomcat Java Web Server Etc. Servidor gratuito baseado em java Configurável de maneira simples via XML Oferece suporte a Java (Servlets e JSP) © LES/PUC-Rio

Configurando o Tomcat Onde colocar as classes dos Servlets? Em geral as classes são colocadas no diretório: %TOMCAT_HOME%\webapps\XXX\WEB-INF\classes A partir deste diretório devem ser colcadas em seus próprios pacotes © LES/PUC-Rio

Configurando o Tomcat Registrando os Servlets Servlets devem ser chamados com seu nome completo (Pacotes e classe) Muitas vezes o nome se torna grande demais Pode-se então dar um nome ao servlet através do qual o servidor redirecionará a chamada à classe específica Arquivo web.xml Localizado em geral no diretório %TOMCAT_HOME%\webapps\ROOT\WEB-INF Registrando um servlet <web-app> <servlet> <servlet-name>ServletSes</servlet-name> <servlet-class>interfPesquisa.ServletSes</servlet-class> </servlet> </web-app> © LES/PUC-Rio

Jakarta Tomcat © LES/PUC-Rio

Configurando o Tomcat Outras configurações Arquivo server.xml Localizado no diretório %TOMCAT_HOME%\conf Configuração da porta do servidor <Connector className="org.apache.tomcat.service.SimpleTcpConnector"> … <Parameter name="port" value="8081"/> </Connector> © LES/PUC-Rio

JSP

Servlet + Controladores Arquitetura HTML de resposta montado a partir de sucessivos comandos out.println(...). Servlet + Controladores (Controle) Objetos de Negócio (Modelo) JavaBean de Resposta Browser JSP doGet() doPost() (Visão) © LES/PUC-Rio

JSP - Conceito Tecnologia que permite combinar informações estáticas com informações geradas dinamicamente Script executado no servidor Combinação de sintaxe JSP e tags de marcação Tags estáticos HTML, XML Conteúdo dinâmico gerado pelo código do script Java Exemplo <HTML><HEAD><TITLE>Primeiro JSP</TITLE></HEAD> <BODY> <H1>Data e hora: <%= new java.util.Date() %></H1> </BODY></HTML> © LES/PUC-Rio

Compilação de JSP (cont.) requisição para xxx.jsp resposta de erro xxx.jsp Geração de Código Java xxx.java (servlet) Compilação xxx.class (servlet) resposta © LES/PUC-Rio

Tags JSP Diretivas Comandos de script Ações Configuração do processador JSP Inclusão estática de conteúdo Encaminhamento de requisições para outros servidores Comandos de script Inserção de código para a programação de conteúdo dinâmico Ações Tags de alto nível que encapsulam padrões de programação mais corriqueiros © LES/PUC-Rio

Diretivas <%@ nome-da-diretiva [nome-atributo = “valor-do-atributo”]* %> Diretivas disponíveis <%@ include file=“url-relativa” %> Inclusão em tempo de compilação <%@ taglib uri=“url-relativa-da-biblioteca-de-tags” prefix=“prefixo-das-tags” %> <%@ page lista-de-atributos %> © LES/PUC-Rio

Atributos da Diretiva Page language=“nome-da-linguagem-de-script” contentType=“mime-type | mime-type; charset=nome-charset” errorPage=“url-página-de-erro” isErrorPage=“true | false” buffer=“none|tamanho-em-kb” auto-flush=“true | false” import=“lista-de-pacotes” extends=“nome-da-classe-base” session=“true | false” isThreadSafe=“true | false” info=“texto-informativo” © LES/PUC-Rio

Exemplos de Diretivas Diretiva Include <%@ include file=“/teccommdoc/header.html” %> Diretiva Taglib <%@ taglib uri=“/tags/teccommtags” prefix=“teccomm” %> <teccomm:exemplo parametro=“demonstracao” /> Diretiva Page <%@ page language=“java” errorPage=“erro.jsp” isErrorPage=“false” buffer=“12kb” auto-flush=“true” session=“true” isThreadSafe=“true” info=“TecComm” %> Ou <%@ page language=“java” %> <%@ page errorPage=“erro.jsp” %> <%@ page import=“com.teccomm.output.*” %> © LES/PUC-Rio

Tags de Script Declarações <%! declaração %> Scriptlets <% comandos %> Expressões <%= expressão %> Comentários <!-- comentário html --> <%-- comentário jsp --> © LES/PUC-Rio

Declarações <%! declarações %> Exemplos <%! int i = 0; public void metodo {...} %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %>  Declara variáveis ou métodos a serem utilizados no código JSP © LES/PUC-Rio

Scriptlets <% fragmento_de_código_válido %> Exemplo <% String name = null; if (request.getParameter(“nome") == null) { %> <%@ include file="error.html" %> <% } else { foo.setName(request.getParameter(“nome")); } %>   Um scriptlet pode conter qualquer número de instruções, variáveis, métodos, declarações ou expressões válidos © LES/PUC-Rio

Expressão <%= expressão %> Exemplo O mapa tem <font color="blue"><%= mapa.getCount() %></font> entradas. Esta tag contém uma expressão que é avaliada e convertida para string, depois de processada. © LES/PUC-Rio

Comentários <!-- comentário [ <%= expressão %> ] --> Exemplo <!-- Comentário --> <!-- Esta página foi carregada em <%= (new java.util.Date()).toLocaleString() %> -->  O processador JSP trata um comentário como texto HTML não interpretado, retornando-o ao cliente. Uma expressão pode ser incluída em um comentário, sendo avaliada e seu resultado é retornado ao usuário juntamente com o HTML de resposta © LES/PUC-Rio

Comentários para Desenvolvimento Exemplo <%@ page language="java" %> <html><head><title>Um teste - comentário</title></head> <body><h2>Um teste - comentário</h2> <%-- Este comentário não estará disponível para o cliente --%> </body></html> O processador JSP simplesmente ignora este tipo de comentário e não processa nenhum código ou expressão contida entre os delimitadores. Este tipo de comentário não será enviado para o cliente © LES/PUC-Rio

Objetos Pré-Definidos Disponíveis para scriplets e expressões request response session out exception (somente em páginas de erro) page © LES/PUC-Rio

© LES/PUC-Rio

Ações jsp:include jsp:forward ou então tags personalizadas via taglib © LES/PUC-Rio

jsp:include e jsp:forward Ações utilizadas para o encadeamento de páginas jsp <jsp:include page=“url-relativa-da-página” /> Suspende o processamento da página chamadora e repassa o controle para a página chamada até que esta retorne-o <jsp:forward page=“url-relativa-da-página” /> O processamento da página chamadora é terminado e o controle é repassado sem espera de retorno para a página chamada © LES/PUC-Rio

jsp:include <jsp:include page="{URLrelativa |<%=expressão%>}"/>  Exemplo <jsp:include page="scripts/login.jsp" /> <jsp:include page="copyright.html" /> <jsp:include page="/index.html" /> © LES/PUC-Rio

jsp:forward <jsp:forward page="{URLrelativa|<%=expressão%>}"/> Exemplo <jsp:forward page="scripts/login.jsp" /> A tag <jsp:forward> repassa o objeto request enviado para o arquivo JSP para que seja processado por outra aplicação O processador JSP não executa o restante das instruções contidas após a tag. © LES/PUC-Rio

Boas Práticas MVC

Servlet + Modelo de Objetos Agora sabemos Programar servlets Modelar um sistema orientado a objetos Mas como fazer os dois funcionarem juntos? © LES/PUC-Rio

Servlet + Modelo de Objetos browser HTTP Servlet ?? © LES/PUC-Rio

Arquitetura MVC O que é MVC? MVC – Model-View-Controller Surgiu nos anos 80 com SmallTalk Sugere a divisão de uma aplicação visual em 3 partes fundamentais Model Representa o modelo da sua aplicação, com as regras de negócio (business logic) e todo o processamento da aplicação View Representa a informação e recolhe os dados fornecidos pelo usuário Controller Recebe as informações da entrada e as transmite para o modelo © LES/PUC-Rio

Servlet + Controladores Arquitetura MVC Pela arquitetura, a interação de um usuário com o sistema se dá através de seqüências de chamadas MVC Servlet + Controladores (Controle) Objetos de Negócio (Modelo) JavaBean de Resposta Browser JSP doGet() doPost() (Visão) © LES/PUC-Rio

Arquitetura MVC O modelo será uma aplicação Java orientada a objetos O controlador será alguma tecnologia de implementação (padrão comando) que juntamente com o Servlet redirecionará as chamadas feitas pelo cliente aos objetos responsáveis no modelo A apresentação será representada pelo JSP © LES/PUC-Rio

Boas Práticas Padrão Command

Padrão Command Objetivos Reduzir acoplamento entre as requisições dos clientes e os objetos que as executam Parametrizar objetos por uma ação a ser executada Especificar, enfileirar e executar solicitações em tempos diferentes para desfazer operações, por exemplo Estruturar um sistema em torno de operações de alto nível, como transações, por exemplo © LES/PUC-Rio

Padrão Command (I) Como implementar? Atributo hidden © LES/PUC-Rio

Padrão Command (II) Como implementar? Atributo hidden Ex: Atributo hidden + Comando abstrato + Hashtable © LES/PUC-Rio

Padrão Command (III) © LES/PUC-Rio

Padrão Command (IV) O Comando Genérico: HttpServletRequest Passa o comando a ser instanciado (input do formulário) HttpServletResponse Contém o PrintWriter que deverá receber as respostas do Comando © LES/PUC-Rio

Padrão Command (V) O Servlet deve possuir um atributo HashTable com todos os Commands Ao ser iniciado, cada Comando deve ser instanciado e inserido na HashTable © LES/PUC-Rio

Padrão Command (VI) © LES/PUC-Rio

Padrão Command (VII) © LES/PUC-Rio

Dicas de Modelagem © LES/PUC-Rio

Fim Perguntas?