Buscar

Aulas 01a10 Desenvolvimento de Sistemas Web com info das Web Aulas Estacio

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Aula 4 – Tecnologia JSP 
 1. Tecnologia JSP (Conceitos)
2. Fundamentos do JSP
 3. Elementos Sintáticos
 4. Java Beans e JSP Beans
1. Conhecer os princípios básicos do desenvolvimento para ambiente web, com a tecnologia JSP.
2. Ter uma vivência prática com a criação de aplicativos Web, baseados nesta tecnologia.
DESENVOLVIMENTO DE SISTEMAS WEB
Menu
01
02
03
04
05
06
07
08
09
10
RAvP
RAV
DSWEB
66
ATIVIDADE PROPOSTA (05):
DSWEB
Nesta aula estudaremos alguns aspectos e definições relativos à implementação do Middleware JDBC. Abordaremos, também, as funcionalidades do NetBeans® para a gerência de banco de dados.
Middleware ou mediador, no campo da computação distribuída, é um programa de computador que faz a mediação entre software e demais aplicações.
Middleware é um software intermediário que encapsula complexidade de determinada(s) tarefa(s).
81
INTRODUÇÃO ao MIDDLEWARE 
05
A multinacionalização da economia, das empresas e a ampla concorrência do mercado gerou a necessidade de criação de novos procedimentos para atender aos requisitos de diversas aplicações que devem ser realizadas em um tempo cada vez menor. A Internet e a disponibilidade das redes de alta velocidade proporcionaram uma diminuição das distâncias no que se refere à localização das informações. Entretanto, para atender aos novos requisitos das aplicações, tornou-se necessário o acesso a informações armazenadas em diferentes fontes, que podem estar localizadas dentro de uma mesma empresa, em países distantes e em ambientes operacionais diferentes. (Fonte: BARBOSA)
Neste cenário, surgiu o conceito de Middleware. Trata-se de uma infraestrutura projetada para ajudar na gerência da complexidade e da heterogeneidade inerentes a sistemas distribuídos. Tem como objetivo interligar processos clientes a processos servidores, oferecendo um conjunto de serviços que visam diminuir a complexidade do processo de desenvolvimento de uma aplicação.
Tecnologia Middleware
De acordo com HAENDOCHEN FILHO, um middleware situa-se entre vários sistemas operacionais e uma plataforma de programação distribuída, provendo abstrações de alto nível, as quais auxiliam no entendimento da estrutura. Frameworks de middleware disponibilizam serviços de infraestrutura, tornando possível aos desenvolvedores abstrair funcionalidades complexas, como por exemplo: concorrência, gerenciamento, heterogeneidade de plataforma, dentre outros.
Middleware
Fundamentos Banco de Dados
Cliente/Serv
Beans
Drivers JDBC
DSWEB
Scriptlets
Um componente JavaBeans, ou simplesmente bean, é uma classe Java que, quando chamada em um JSP ou Servlet, segue certas regras .
Os beans são acionados em JSP por elementos chamados action element, executandos quando um JSP é requisitado.
71
04
Java Beans
<jsp:useBean id = “id_do_Bean” class = “pasta/classe_do_bean” (caminho completo)
 scope = “tipo_de_escopo”>
Temos que usar um identificador, o nome da classe e um escopo de vida do bean. 
Para definir o escopo, há quatro extensões disponíveis: page, request, session e application.
JavaBeans:Programação baseada em componentes
DSWEB
Criando um primeiro Projeto em Java
Vamos praticar
Operadores de Atribuição de Valores
A linguagem Java fornece vários operadores para operações aritméticas e boolenas;
Possui os operadores: +, -, *, / ; 
Operador de módulo ou resto ( % ).
7
LP Java
Atribuição Valores
Conceitos OO
Erros
Controle Fluxo
Primeiro Proj
01
DSWEB
Passo a passo para a criação de um Servlet:
77
5º e 6º PASSOS.
Saiba mais sobre JSP: GONÇALVES, E. Desenvolvendo Aplicações Web com JSP, Servlets, JavaServer Faces, Hibernate, EJB 3 Persistence e Ajax. Rio de Janeiro: Ciência Moderna, 2007.SIEIRA, K.; BASHAM, B. Use a Cabeça! Servlets & JSP. Rio de Janeiro: Alta Books, 2008.
Para essa aula, sugerimos que acesse:
Saiba mais sobre JSP:
GONÇALVES, E. Desenvolvendo Aplicações Web com JSP, Servlets, JavaServer Faces, Hibernate, EJB 3 Persistence e Ajax. Rio de Janeiro: Ciência Moderna, 2007.
SIEIRA, K.; BASHAM, B. Use a Cabeça! Servlets & JSP. Rio de Janeiro: Alta Books, 2008.
04
DSWEB
Criada para o desenvolvimento de aplicações corporativas, baseada em componente;
Usa modelo de aplicação Mult-Camadas.
33
Java Enterprise Edition (Java EE)
Tecnologias Java nas Camadas
Servlets
JSP (Java Server Pages)
Resposta primária do Java para adicionar funcionalidade aos servidores;
Ler os dados contidos nas requisições passadas ao servidor e gerar uma resposta dinâmica.
Servlets
Camada Web : JSP
Aspectos exatamente como HTML, só tem acesso a todas as capacidades dinâmicas de servlets com o uso de roteiros e linguagens de expressão;
WEB
Cliente x Servidor
Java EE
GlassFish - TomCat
HTTP
DSWEB
Aula 1- Componentes de Sistemas
1. A linguagem de programação Java
2. Atribuição de valores na linguagem Java
3. Controles de fluxo na linguagem Java
 4. Conceitos básicos de orientação a objetos
 5. Controle de erros na linguagem Java
 6. Construindo o primeiro Projeto em Java
DESENVOLVIMENTO DE SISTEMAS WEB
Menu
01
02
03
04
05
06
07
08
09
10
RAvP
RAV
DSWEB
2
Aula 2- Processo de Desenvolvimento
 1. Descrever como funciona a WEB
2. Definir a arquitetura Cliente X Servidor
3. Entender sobre o protocolo HTTP
 4. Definir o básico sobre a Arquitetura Java EE
 5. Arquivos de configuração GlassFish-TomCat
WEB
Cliente x Servidor
Java EE
GlassFish - TomCat
HTTP
DESENVOLVIMENTO DE SISTEMAS WEB
Menu
01
02
03
04
05
06
07
08
09
10
RAvP
RAV
DSWEB
24
Aula 3- Servlet
2. Composite
1. Decorator
3. Adapter
4. Bridge
1. Compreender o esquema de utilização de um servlet.
 2. Desenvolver aplicações dinâmicas em páginas Web, utilizando os recursos que a tecnologia oferece, explorando suas propriedades e características.
DESENVOLVIMENTO DE SISTEMAS WEB
Menu
01
02
03
04
05
06
07
08
09
10
RAvP
RAV
DSWEB
49
Estruturas de Controle Condicional
12
01
DSWEB
Aula 5 – Middleware
1. Tecnologia Middleware
2. Banco de Dados: Fundamentos
3. Banco de dados na linguagem Java
 4. Uso do NetBeans para gerência do banco de JavaDB
 5. Servlet para listagem de dados
2. Criar aplicativos simples com acesso a banco de dados na Web;
1. Conhecer fundamentos de Middleware (introdução, princípios básicos; frameworks);
3. Utilizar o NetBeans® na gerência do banco de dados JavaDB.
Middleware
Fundamentos Banco de Dados
Cliente/Serv
Beans
Drivers JDBC
DESENVOLVIMENTO DE SISTEMAS WEB
Menu
01
02
03
04
05
06
07
08
09
10
RAvP
RAV
DSWEB
80
Aula 6 – Interação de Componentes – Parte I
Entender a Importância das Definições de Interface e Interação de Componentes para um Melhor Resultado na Arquitetura de Sistemas;
Estudar como são Definidos e Implementados os Elementos de Interação de Componentes na Arquitetura de Sistemas;
Compreender como estes Elementos de Interação Contribuem para o Sucesso do Projeto.
DESENVOLVIMENTO DE SISTEMAS WEB
Menu
01
02
03
04
05
06
07
08
09
10
RAvP
RAV
DSWEB
98
Projeto Triângulo - Condicionais
Blá blá
15
Fundamentosos de um Componente
Objetivos
Arquitetura
Especificação 
Ex
01
DSWEB
Estrutura de Repetição WHILE
Quando precisamos que uma instrução seja executada várias vezes.
Desta forma, podemos executar um determinado conjunto de instruções até que a condição se torne Falsa.
16
01
DSWEB
Estrutura de Repetição FOR
A diferença deste tipo de estrutura é que podemos saber quantas repetições serão executadas.
17
01
DSWEB
Aula 10 – AJAX
Ajax;
Chamadas assíncronas;
Tecnologia Ajax.
DESENVOLVIMENTO DE SISTEMAS WEB
Menu
01
02
03
04
05
06
07
08
09
10
RAvP
RAV
DSWEB
176
Aula de Revisão AvP
Padrões estruturais GoF
DESENVOLVIMENTO DE SISTEMAS WEB
Menu
01
02
03
04
05
06
07
08
09
10
RAvP
RAV
DSWEB
96
Aula de Revisão AV e AVS
DESENVOLVIMENTO DE SISTEMAS WEB
Menu
01
02
03
04
05
06
07
08
09
10
RAvP
RAV
DSWEB
185
Projeto Pessoa
Trabalhando com Instância, Herança e Controle de Erros
21
LP Java
Atribuição Valores
Conceitos OO
Erros
Controle Fluxo
Primeiro Proj
01
DSWEB
Atividade 1
22
Quando
01
DSWEB
Introdução
Nesta aula, abordaremos a visão geral do ambiente cliente servidor. Também, serão abordados: o modelo cliente servidor e as principais arquiteturas Web. Finalmente, serão apresentados os servidores Java e os arquivos de configuração para o GlassFish e o TomCat.
25
02
Ambiente de tecnologia neutra;
Facilidade de distribuição e atualização;
Não requer um sistema operacional específico;
Necessidade apenas de um navegador;
É necessário apenas um navegador;
Não precisa de instalação;
Não precisa de CD de instalação.
Por que migrar para WEB?
DSWEB
Arquiteturas Web
26
Segundo KERLAN, no início, a computação distribuída era associada a redes de computadores que utilizavam algum sistema operacional de rede, como, por exemplo, o Netware e caracterizavam-se, fundamentalmente, como servidores de arquivos. Nesse modelo, há necessidade de transferência integral de todos os arquivos, sejam programas ou dados, para execução pelo cliente, pois foi projetado para atender clientes sem disco local.
02
Eis algumas características da arquitetura das aplicações Web:
O servidor Web pode atender a diversos clientes simultaneamente.
Um browser Web o qual recebe, trata e apresenta um arquivo recebido no formato HTML, é responsável pela padronização e definição da interface com o usuário.
Todos os serviços Web baseiam-se no modelo cliente/servidor.
A comunicação é baseada no protocolo HTTP – protocolo para transferência de informações na Web.
Entretanto, rapidamente, a computação distribuída passou a envolver serviços baseados em aplicativos cliente/servidor que caracterizam a arquitetura de aplicação Web. O cliente envia uma solicitação, o processamento é geralmente feito na máquina servidora remota e, nesse caso, somente os resultados são devolvidos ao cliente. Dessa forma, minimiza-se o tráfego de informações a rede.
WEB
Cliente x Servidor
Java EE
GlassFish - TomCat
HTTP
DSWEB
O servidor Web pode atender a diversos clientes simultaneamente.
Um browser Web o qual recebe, trata e apresenta um arquivo recebido no formato HTML, é responsável pela padronização e definição da interface com o usuário.
Todos os serviços Web baseiam-se no modelo cliente/servidor.
A comunicação é baseada no protocolo HTTP – protocolo para transferência de informações na Web.
Arquiteturas Web
27
Vejamos a figura abaixo, elaborada por LIMA, onde podemos visualizar a arquitetura básica de uma aplicação Web com um navegador (cliente Web) realizando uma requisição a um servidor Web. Um servidor Web pode ter várias aplicações que se conectam a vários bancos de dados:
02
Algumas características da arquitetura das aplicações Web:
DSWEB
30
HTML
Linguagem de marcação de hipertenso (Hypertext Markup Language);
Conjunto de instruções que o navegador WEB define como apresentar ao usuário;
Padrão aberto atualizado pelo W3C (World Wide Web Consortium)
02
Protocolo de Transferência de Hipertexto (Hypertext Transfer Protocol)
Um protocolo de rede com características específicas para WEB.
Executado sobre camadas do TCP/IP.
Usa uma sequência de Requisição/Resposta.
Mensagens de Requisição/Resposta.
HTTP
Requisições do Cliente HTTP contêm:
Um cabeçalho inicial;
Zero ou mais cabeçalhos adicionais;
Uma linha em branco;
Corpo da mensagem (opcional) 
WEB
Cliente x Servidor
Java EE
GlassFish - TomCat
HTTP
DSWEB
31
Requisições HTTP: Get
Usadas para pedir um recurso particular do servidor;
Usadas para enviar dados para o servidor.
02
WEB
Cliente x Servidor
Java EE
GlassFish - TomCat
HTTP
<a href = “pagina.jsp?codigo=5”>Código</a>
Itens antes da marca de interrogação(?) é a URL original da Requisição;
Parâmetros são codificados como pares de nome valor;
Mais de um conjunto de parâmetro são separados por &. ex. codigo=5&nota=8.
Exemplo:
Requisições HTTP: Post
Esconde os dados dentro do corpo da mensagem que é enviada para o servidor;
Requisições complexas para o servidor;
Carregamento de arquivos para o servidor.
Páginas Dinâmicas ou Estáticas:
Conteúdo estático não muda;
Páginas dinâmicas têm mais flexibilidade;
Mudanças de acordo com a entrada do usuário.
DSWEB
34
Servidores JAVA
02
TomCat
Segundo D’ AVILA, o Tomcat é um servidor de aplicações Java para web (Conteiner Servlet) . Serve para interpretar aplicações escritas em Java para Web. É software livre e de código aberto, surgido dentro do conceituado projeto Apache Jakarta e que teve apoio da Sun Microsystems como Implementação de Referência (RI) para as tecnologias Java Servlet e JavaServer Pages (JSP). Pode atuar como servidor web/HTTP, ou pode funcionar integrado a um servidor web dedicado como o Apache httpd ou o Microsoft IIS. Hoje, o Tomcat tem seu próprio projeto de desenvolvimento independente, dentro da Apache Software Foundation. É robusto e suficiente para ser utilizado mesmo em um ambiente de produção.
Figura: Web Container Apache TomCatFonte: http://pt.scribd.com/doc/90511823/41/%E2%80%93-TOMCAT
Como instalar o servidor TomCat. Clique aqui.
GlassFish 
Enterprise Server GlassFish trata-se de um servidor de aplicações de código aberto para a plataforma Java. Foi desenvolvido como implementação de referência do padrão Java EE 6 e, agora , conta com novas funcionalidades que adicionam características como alta disponibilidade, escalabilidade e tolerância a falhas, que são essenciais para um servidor de produção que hospede aplicações de médio e grande porte. O servidor GlassFish coloca uma fonte livre, aberta, comercial, ao nível de implementação do Java EE, nas mãos da comunidade [ORT], [SILVA]. Enterprise Server é uma versão proprietária.
Como instalar o servidor GlassFish. Clique aqui.
Para essa aula, sugerimos que acesse:
Saiba mais sobre TomCat: http://tomcat.apache.org/
Saiba mais sobre GlassFish: http://glassfish.java.net/ 
WEB
Cliente x Servidor
Java EE
GlassFish - TomCat
HTTP
DSWEB
Síntese da Aula
Como funciona a WEB;
Cliente x Servidor;
HTTP;
Servidores.
35
Próxima Aula
Tecnologia Servlet: introdução; criação de aplicativos Web baseados nesta tecnologia.
02
03
DSWEB
I. Quais são as três características de um projeto de desenvolvimento de software?
36
Atividade 2 (w)
Contínuo, Mensurável e Realizável
Temporário, Mensurável e Realizável
Temporário, Gera um resultado único e Elaborado Progressivamente
Gera um resultado único, Mensurável e Realizável
II. Qual das respostas abaixo melhor define o conceito de ciclo de vida de projeto de desenvolvimento de software?
As partes do projeto.
Iniciação, planejamento, execução, monitoramento e controle e encerramento.
As etapas que compõem o desenvolvimento de um projeto.
As operações de um projeto.
III. O processo de decomposição para definição do escopo de um projeto de desenvolvimento de software é uma técnica utilizada para construir um(a):
Diagrama de rede de precedência
Método de diagrama de caminho crítico
Estrutura Analítica do Projeto (EAP)
Análise de variação
DSWEB
Classificação dos padrões GoF segundo Metsker [2]
38
DSWEB
38
Singleton
"Garantir que uma classe só tenha uma única instância, e prover um ponto de acesso global a ela." [GoF]
39
O padrão de projeto Singleton é um dos padrões mais conhecidos e extensivamente utilizados em programação orientada a objetos. Está direcionado para as situações onde precisamos manter uma única instância de uma classe durante toda a execução da aplicação. Por exemplo, para garantir apenas um spooler de impressão, embora tenhamos diversas impressoras em um sistema, para armazenar uma conexão com uma base de dados que será chamadas diversas vezes, para armazenar o log da execução de uma aplicação, para centralizar os dados de configuração de um sistema, para armazenar os dados do usuário que está logado em um sistema, entre
outros.
5. Singleton
3. Builder
4. Prototype 
DSWEB
39
Singleton
A sua estrutura é bastante simples, existe apenas uma classe chamada Singleton, que define um método chamado Instance, responsável poder retornar aos clientes a única instância da classe. Alguns recursos das linguagens de programação orientadas a objeto devem ser utilizados para garantir a correta implementação desta classe, por exemplo, em linguagem Java, podemos utilizar os seguintes recursos:
40
Modificadores static e private para garantir uma mesma instância para todos os objetos criados e evitar acesso público;
Modificar static para implementar o método getInstance e, assim, retornar a instancia apropriada ou criá-la, caso seja a primeira vez;
Construtor da classe privado, para não permitir a instância de novos objetos da classe;
Declarar o método getInstance como synchronized para que o método seja executado por uma thread por vez, quando utilizado em programas multi-thread;
DSWEB
40
Singleton
O código Java apresentado, mostra um esqueleto básico para implementação do padrão Singleton. Pesquise por exemplos e faça testes de instanciação e uso em seu ambiente de programação Java favorito. 
41
public class Singleton { 
  private static Singleton instance;
// Adicione aqui classes aninhadas ou atributos private   
private Singleton() { 
 }   
 public static synchronized Singleton getInstance()
  {  if (instance == null)       
 instance = new Singleton();
     return instance;  
 } 
// implemente os demais métodos necessários (get e set)
} 1
DSWEB
41
Problema 1
Garantir que apenas um objeto exista, independente do número de requisições que receber para criá-lo
Aplicações
Um único banco de dados
Um único acesso ao arquivo de log
Um único objeto que representa um vídeo
Uma única fachada (Façade pattern)
Poderia-se usar um membro estático ...
... e perder o encapsulamento
... e perder a flexibilidade de usar objetos
42
DSWEB
42
Problema 2
Objetivo: garantir que uma classe só tenha uma instância. Questões:
Como controlar (contar) o número de instâncias da classe?
Como armazenar a(s) instância(s)?
Como controlar ou impedir a construção normal? Se for possível usar new e um construtor para criar o objeto, há como limitar instâncias?
Como definir o acesso à um número limitado de instâncias (no caso, uma apenas)?
Como garantir que o sistema continuará funcionando se a classe participar de uma hierarquia de classes?
43
DSWEB
43
44
DSWEB
44
Prós e contras
Vantagens
Acesso central e extensível a recursos e objetos
Pode ter subclasses* (o que seria impossível se fosse apenas usada uma classe com métodos estáticos)
Desvantagens
Qualidade da implementação depende da linguagem
Difícil de testar (simulações dependem de instância extra)
Uso (abuso) como substituto para variáveis globais
Criação "preguiçosa" é complicada em ambiente multithreaded
Difícil ou impossível de implementar em ambiente distribuído (é preciso garantir que cópias serializadas refiram-se ao mesmo objeto)
* Mas é complicado: requer controle em todas as subclasses para garantir instância única (pelo menos um construtor precisa ser acessível às subclasses em Java) - use encapsulamento de pacote.
45
DSWEB
45
Resumo
Singletons são uma forma de implementar uma responsabilidade centralizada
Garante que uma classe só tenha uma instância
Oferece um ponto de acesso global
O instanciamento do objeto pode ser feito quando a classe for carregada ou quando o método de criação for chamado pela primeira vez
Neste caso, é preciso garantir que outros objetos não tentarão criar outro Singleton declarando o bloco crítico com synchronized.
46
DSWEB
46
Exemplo
public class Singleton {
 private static Singleton instance;
// Adicione aqui classes aninhadas ou atributos private
 private Singleton() {
 }
 public static synchronized Singleton getInstance() {
 if (instance == null)
 instance = new Singleton();
 return instance;
 }
// implemente os demais métodos necessários (get e set)
}
 
47
DSWEB
47
ATIVIDADE PROPOSTA (02):
DSWEB
Uma Servlet é uma classe Java usada para estender a capacidade dos servidores que hospedam aplicações acessadas via modelo de programação Requisição/Resposta.
Uma classe Java que implementa a interface Servlet e aceita requisições que vêm de outras classes Java, clientes Web ou outros Servlets, gerando então respostas;
As servlets também são conhecidas como HTTP Servlet. Isto porque os Servlets são comumente usados com o HTTP, não há um protocolo cliente-servidor específico.
50
Tecnologia Servlet 
03
Nesta aula: A tecnologia Servlet, descrevendo suas características e benefícios. Também serão apresentados os passos necessários para o desenvolvimento de uma aplicação dinâmica que possa ser executada em ambiente Web.
A tecnologia Servlet é uma das ferramentas que possibilita a elaboração de sites com conteúdo dinâmico.
O que são Servlets?
Trata-se da alternativa Java para os scripts CGI. São classes Java, cujos objetos são capazes de receber uma requisição Web, processá-la e retornar um conteúdo como resposta. Geralmente, trabalham com o protocolo HTTP ( ou HTTPS) e  o conteúdo retornado é um texto em HTML; Essas classes são carregadas e executadas automaticamente pelo Servidor Web. Podem trabalhar com outro tipo de conteúdo, como por exemplo: imagem, vídeo etc.; e são gerenciados pelo Container Servlet de um Servidor de Aplicações JEE.
DSWEB
Programação orientada a objetos.
Flexibilidade (Java é uma linguagem bastante difundida, com ampla documentação, possuindo diversos códigos prontos e bibliotecas, das quais o desenvolvedor pode usufruir).
Portabilidade (a aplicação desenvolvida pode ser implantada em diversas plataformas, sem a necessidade de qualquer modificação na aplicação).
51
Tecnologia Servlet 
03
Por utilizar a linguagem de programação Java, essa tecnologia oferece algumas vantagens já herdadas, tais como:
Segundo BRUKSCH, os servlets possuem algumas características que tornam esta tecnologia ainda mais interessante, como por exemplo:
Código Modular.
Geração dinâmica de páginas HTML.
N-Camadas (N-Tier).
Threads.
DSWEB
Arquitetura de uma aplicação Servlet
52
03
Servlet é um programa que estende a funcionalidade de um web server, gerando conteúdo dinâmico e interagindo com os clientes, utilizando o modelo request/response.
Os Servlets não são restritos ao modelo HTTP de request/response, apesar do modelo HTTP ser o modelo mais comumente utilizado.
Um Servlet pode ser considerado o cérebro da aplicação cliente servidor que utiliza JSP.
DSWEB
RESPOSTAS Servlet
55
03
A Servlet dispõe de um objeto ServletRequest;
Servlet possuem uma subclasse chamada HTTPServletRequest;
Fornece métodos adicionais para recuperar informações específicas para HTTP;
Informações de cookie, os detalhes de cabeçalho.
Dados de Formulário e Argumentos
request.getParameter * APENAS UM PARÂMETRO POR VEZ
request.getParameterValues
request.getParameterNames (Ex: Vetor de objetos clicados em um form de opções.)
request.getParameter
Para este e outros cenários similares, Java fornece o método getParameter no objeto httpServletRequest;
public String getParameter(String parameterName);
DSWEB
Ciclo de Vida de uma SERVLET
56
03
Segundo SILVA, o ciclo de vida de um Servlet é controlado pelo container:
Quando o servidor recebe uma requisição, esta é repassada para o container que a delega a um Servlet.
Então, o container: carrega a classe na memória; cria uma instância da classe do Servlet; e inicializa a instância chamando o método init();
Depois que o Servlet foi inicializado, cada requisição é executada em um método service();
Quando o container cria um objeto de requisição (ServletRequest) e de resposta (ServletResponse),e depois chama service() passando os objetos como parâmetros:
Public void service(ServletRequest, ServletResponse);
Quando a resposta é enviada,
os objetos são destruídos;
Quando o container decidir remover o Servlet da memória, ele o finaliza chamando destroy().
DSWEB
Passo a passo para a criação de um Servlet:
57
03
1º PASSO: Criação da estrutura de diretórios
DSWEB
Passo a passo para a criação de um Servlet:
58
03
2º PASSO: Código Fonte do Servlet.
DSWEB
Passo a passo para a criação de um Servlet:
59
03
3º PASSO: Compilar o código fonte.
DSWEB
Passo a passo para a criação de um Servlet:
60
03
4º PASSO: Configurar o Servlet.
DSWEB
Passo a passo para a criação de um Servlet:
62
03
4º PASSO: Configurar o Servlet.
Ordem de inicialização
Nome do Servlet
Classe do Servlet
Nome de acesso
Essas e outras configurações podem ser feitas diretamente pela aba XML. Mas pelo NetBeans é mais conveniente.
DSWEB
Passo a passo para a criação de um Servlet:
63
03
5º e 6º PASSOS.
Para essa aula, sugerimos que acesse:
Saiba mais sobre Servlets:
Fundamentos de Servlets: http://www.devmedia.com.br/fundamentos-de-servlets/3573
Java para Desenvolvimento Web: http://www.caelum.com.br/apostila-java-web/servlets/
DSWEB
Síntese da Aula
Tecnologia Servlet;
Criação de Aplicativos Web;
No NetBeans, Criar Projeto, depois criar a Classe SERVLET NO PACOTE. Classes SEMPRE NOS PACOTES.
64
Próxima Aula
Tecnologia JSP;
Fundamentos JSP;
Sintaxe;
JavaBeans.
03
DSWEB
ATIVIDADE PROPOSTA (03):
 
DSWEB
Fundamentos da Tecnologia JSP
Dedicação dos desenvolvedores para a criação de templates HTML;
Possui suporte built-in para o uso de componentes de software reutilizáveis (JavaBeans);
Parte da solução Java para o desenvolvimento de aplicações WEB;
Não necessita de uma compilação explícita pelo desenvolvedor
68
04
JSP podem ser vistas como documentos HTML ou XML com scripts JSP encaixados;
Elementos de script JSP permitem inserir código Java na Servlet gerada;
A maneira mais simples de tornar a JSP dinâmica é pelo encaixe direto de elementos script no modelo de dados;
Elementos script JSP:
 – Scriptlets, Expressões, Declarações
<% Java code; %>
Sintaxe e Semântica JSP
DSWEB
Scriptlets
Inserir diretamente código Java: (99% do trabalho em JSP são Scriptlets)
	<% Java code; %>
– Qualquer código Java que poderia ser utilizado dentro de um método
Útil para encaixar códigos simples
Nenhum limite específico a respeito da complexidade de códigos
69
04
Fornecem um meio de inserir valores Java diretamente na saída: <%= Java Expression %>
Note que o ponto-e-vírgula ( ; ) não aparece no final do código dentro da tag
Como elas são avaliadas em tempo de execução, as expressões têm acesso completo a informação sobre a requisição. É mais simples que escrever: out.println(Java Expression);
Objetos pré-definidos, chamados objetos implícitos, se tornam disponíveis para os desenvolvedores JSP de modo a simplificar as expressões.
Ex:
– request: objeto da classe HttpServletRequest;
– response: objeto da classe HttpServletResponse
– session: objeto da classe HttpSession associada ao request (se houver)
– out: objeto da classe PrintWriter, utilizada para enviar a saída para o cliente.
 Exemplo: Hostname: <%= request.getRemoteHost() %>
Expressões
DSWEB
Scriptlets
Permitem a definição de métodos ou variáveis
 <%! Java Code ; %>
São inseridas no corpo principal da classe servlet, fora do método _jspService() processando o request
– Vantagem: O código em uma declaração pode ser usado para declarar novos métodos e variáveis globais de classe
– Desvantagem: O código em declarações não é protegido
70
04
Declarações
DSWEB
Objetos Instanciados JSP
Objetos
Descrição
Out
Método do tipo Writter, utilizado para exibir dados na página. (exemplo: out.println(“Ola Mundo”);
Request
Objeto permite acesso a parâmetros enviados pelo cliente, pelo método HTTP (GET ou POST).
Response
Permite acesso à resposta que será enviada ao usuário.
Session
Acesso a sessões.
application
Objeto que referencia a classeServletContexte permite que sejam armazenados valores, ao quais serão compartilhados por toda aplicação, por meio dos métodossetAttributeegetAttribute.
Config
Objeto utilizado para a leitura de parâmetros de inicialização.
exception
Permite que as páginas JSP sejam definidas como páginas de erros.
pageContext
Objeto que é um ponto de acesso a muitos atributos da página.
Page
Semelhante a referência this utilizada em classesjava.
72
04
Conversões:
Byte.parseByte(objetoString) = converte uma string para o tipo byte;
Short.parteShort(objetoString) = converte uma string para o tipo short;
Float.parteFloat(objetoString) = converte uma string para o tipo float;
Double.parseDouble(objetoString) converte uma string para o tipo double.
Utilizamos anteriormente a saída out.println, este é um tipo de objeto implícito. Esses objetos recebem o nome de implícito por não necessitar serem instanciados para a sua utilização. Eles podem ser acessados diretamente na página. Os objetos implícitos que podem ser acessados em páginas JSP são:
DSWEB
Tutorial JSP
Clique aqui para saber mais
Arquitetura JSP
Página JSP é uma página construída por um desenvolvedor Web que inclui a tecnologia JSP e tags específicas, combinadas com outras tags estáticas (HTML ou XML). Uma página JSP tem a extensão .jps ou .jspx; o quê informa ao servidor Web que um engine (motor) irá processar e codificar os elementos presentes nessa página. Utilizam tags XML e scriplets escritos na linguagem Java para encapsular a lógica que gera o conteúdo para a página. Isso envia qualquer tag de formatação (HTML ou XML) de volta à página de resposta. Assim, páginas JSP separam a lógica da página de seu design e de sua exibição.
73
04
Uma página JSP é compilada quando o usuário a carrega em Web browser. O processo de compilação é ilustrado na figura a seguir. 
DSWEB
Passo a passo para a compilação de uma página JSP
74
04
Pode-se afirmar que uma aplicação JSP, normalmente, é uma coleção de arquivos JSP, arquivos HTML, gráficos e outras fontes. Então, quando o usuário carrega a página pela primeira vez, os arquivos (que compõem a aplicação) são traduzidos (sem qualquer dado dinâmico), para um único arquivo fonte Java (.java), com o nome definido pela sua aplicação JSP.
Posteriormente, o arquivo .java é compilado em um arquivo .class. Usualmente, o arquivo .java é um servlet Java, que está de acordo com a API Java Servlet. Essa fase é conhecida como "tempo de tradução" (translation time).
Quando um usuário realiza uma solicitação (request) à aplicação JSP, um ou mais de um dos componentes da aplicação (bean, enterprise bean ou servlet) manipula(m) os dados que o usuário submeteu; ou recupera(m) os dados dinamicamente de um repositório de dados e retorna(m) os mesmos para um arquivo .java. Esse último arquivo, por sua vez, é recompilado em um arquivo .class.
O arquivo .class, sendo um servlet Java, retorna os dados para o Web browser do cliente através do seu método service. Quando o usuário faz uma nova solicitação, o componente obtém ou manipula os dados novamente e os retorna para o arquivo .java. Esse último arquivo, mais uma vez é compilado em um arquivo .class. Essa etapa é conhecida como "tempo de solicitação" (request time).
As informações que um usuário envia, por exemplo, através de um formulário HTML são armazenadas em um objeto request, que as envia do cliente para um container JSP.
O container JSP envia o objeto request para o componente (beans, enterprise bean ou servlet) especificado pelo arquivo JSP.
O componente manipula o request, possivelmente recuperando dados de um banco de dados ou de outro tipo de repositório, e, então, envia um objeto response de volta para o container JSP.
DSWEB
Elementos básicos do JSP
DIRETIVA
SCRIPTLES
Permite informar ao servidor,em tempo de tradução,algumas propriedadesespecíficasdapágina, quando esta estiver disponível. Pode-se afirmar que a forma pela qual esse processo é realizado é por meio dosatriburtosda
diretiva, tais como:
•CONTENTTYPE:Define o tipo de conteúdo MIME para a resposta da página JSP. O valor padrãoé “\text/html", isto é, se este atributo não for definido, o tipo de conteúdo de resposta será este. EXEMPLO: <%@pagecontentType=``xml'' %>
•IMPORT:Possibilita a realização da importação de pacotes para que seja possível o acesso às classes destes pacotes em uma página JSP.
EX:<%@pageimport=``br.estacio.exatas.hipermidia.beans.*,java.util.*'' %>
•SESSION: Define os objetos de uma sessão que podem ser acessados pela página JSP. O valor padrão é true. EX: <%@pagesession=``true'' %>
•ERRORPAGE: Define o destino de qualquer exceção lançada na página JSP que está sendo executada.EX:<%@pageerrorPage=``errors/error.jsp'' %>
•ISELIGNORE: Define se uma página JSP suporta ou não o uso de linguagens de expressão (ExpressionLanguage– EL). O valor padrão é false. EXEMPLO: <%@pageisELIgnored=``true'' %>
•isErrorPage: Define se uma página JSP pode expor uma exceção enviada para ela através do atributoerrorPage. O valor padrão é false. EXEMPLO: <%@pageisErrorPage=``true'' %>
DIRETIVA INCLUDE: Em tempo de tradução, essa diretiva é utilizada para incluir um código ou texto oriundo de outra página JSP, como, por exemplo, uma barra de navegação comum a várias páginas de uma aplicação. O único atributo dessa diretiva é o file o qual informa o arquivo que será incluído. EXEMPLO:<%@ include file=``menuBarNaveg.jsp'' %>
São trechos de códigos Java que podem ser inseridos em qualquer
lugar da página e servem, entre outras coisas, para definir valores
para as variáveis a serem usadas nas expressões. Seguem a
delimitação de caracteres especiais. Dentre os principaisscriptles,
podem-se citar: comentários, declarações e expressões.
COMENTÁRIOS:Podem ser de 2 (dois)tipos:ComentáriosHTML: <!–
comentarioHTML -->Comentários JSP: <%--comentarioJSP --%> 
DECLARAÇÕES: Permitem a definição de variáveis e métodos em
qualquer local de uma páginaJSP.Há2 (dois) tipos: Locais: <% int y =
27; %>Globais: <%! int y = 27; %>
EXPRESSÕES: Utilizadas combinandotags“<%” e “%>” com o
símbolo“=”, tornando possível a escrita, por exemplo, de uma saída
para a página JSP como no exemplo abaixo: <%=y %>
75
04
Páginas JSP podem ser configuradas por vários tipos de elementos que aperfeiçoam a apresentação dos dados para o cliente, assim como decrescem o labor da manutenção. Veremos agora os elementos básicos da tecnologia JSP:
As tags utilizadas para diretivas, scriptlet e expressões são muito semelhantes. Tome cuidado ao utilizá-las!
DSWEB
Atividade 4 (ppt)
76
Nesta aula vimos a importância de requisitos para o sucesso do desenvolvimento de sistemas de acordo com os conceitos da Arquitetura de Sistemas. Mas do ponto de vista de usuário, você acha que podemos associar os requisitos de sistemas a imagem a seguir? 
Fonte:
 http://ufpe.com.br/cienciadacomputacao/requisitos
04
DSWEB
Tecnologia JSP;
Fundamentos JSP;
Sintaxe;
JavaBeans.
78
Síntese da Aula
Próxima Aula
Tecnologia Middleware;
Fundamentos;
Banco de dados na linguagem Java;
Uso do NetBeans para gerência do banco de JavaDB;
Servlet para listagem de dados;
04
05
DSWEB
ATIVIDADE PROPOSTA (04):
DSWEB
Para uma melhor compreensão do assunto abordado, segue, abaixo, uma discussão sobre a sua evolução:
82
Arquitetura Cliente/Servidor
05
Primeiramente, surgiu a arquitetura centralizada (“mainframe”), onde toda a inteligência é centralizada em um computador central que recebe a informação gerada pela captura da informação do usuário através de um terminal. Trata-se de uma arquitetura limitada por não suportar facilmente interfaces gráficas com o usuário (“Graphic User Interface” - GUI) e o acesso a múltiplos bancos de dados geograficamente dispersos. (Fonte: COSTA)
Com o aparecimento de redes conectando vários PCs, surgiu a arquitetura de arquivo compartilhado (file sharing). Nesta arquitetura, o servidor de arquivos envia arquivos da localização compartilhada para o ambiente da estação de trabalho. Neste local, o trabalho requisitado pelo usuário é então executado (incluindo a lógica e os dados). Esta arquitetura também apresenta restrições, pois o bom desempenho está vinculado a um número limitado tanto de compartilhamentos de arquivos como de volume de dados transferidos. 
Para solucionar essas limitações surgiu a arquitetura cliente/servidor. Nesta, um processo é responsável pela manutenção da informação (Servidor), enquanto que outro é responsável pela obtenção dos dados (Cliente). (Fonte: BATTISTI) 
A comunicação cliente/servidor é baseada em troca de mensagens. Segundo COSTA, quando comparada à arquitetura de SW centralizada e à arquitetura de compartilhamento de arquivo, apresenta uma melhor usabilidade, flexibilidade, interoperabilidade e escalabilidade.
DSWEB
83
Arquitetura Cliente/Servidor
05
DSWEB
84
Arquitetura Cliente/Servidor
05
Segundo COSTA, uma organização com a necessidade de distribuir uma aplicação pode escolher entre construir um ambiente de trabalho (framework) para integração e desenvolvimento próprio ou utilizar produtos existentes no mercado que ofereçam ferramentas de integração e desenvolvimento. Os produtos existentes são baseados nas especificações CORBA da OMG, no DCE (Distributed Computing Environment) da OSF, no DCOM da Microsoft®, assim como, no RMI (Remote Method Invocation) da linguagem Java.Estas ferramentas baseiam-se em diversas tecnologias, apresentam diferentes características, mas em alguns pontos elas são similares ou mesmo complementares. 
O principal objetivo dos serviços middleware é permitir que uma plataforma não dependa de APIs específicas, permitindo que aplicações executem em diferentes plataformas e incluem serviços de alto nível que escondam a complexidade de redes e sistemas distribuídos.
DSWEB
85
Devido a pluralidade de BD e seus provedores de acesso (drives de conexão), a SUN criou uma API chamada JDBC (java Data Base Connectivity) cujo o objetivo é fornecer uma ponte entre a camada do cliente, o driver do fabricante e a fonte de dados.
Banco de Dados: Fundamentos
05
JDBC
Java.sql.connection: representa uma conexão com um banco de dados;
Java.sql.DriverManager: gerencia drives JDBC usados pela aplicação;
Javax.sql.DataSource: Como obter uma conexão para o banco de dados
Java.sql.Statement: fornece métodos para executar instruções SQL;
Java.sql.ResultSet: representa o resultado de uma instrução SQL de Pesquisa.
Java.sql.DriverManager
Permite que desenvolvedor recupere objeto Connection que pode ser usado para executar instruções em BD;
Javax.sql.DataSource
• Uma interface definida na API JDBC desde a versão 2 de sua especificação;
• Recupera o objeto Connection e chama o método getConnection() em uma instância de DataSource;
• Obter uma instância de DataSource.
Java.sqlConnection / java.sql.Statement
• Objetos da classe java.sql.Connection representam conexões atuais para o banco de dados;
• Uma vez de posse deste, criamos um objeto da classe Statement. Usamos para executar consultas SQL;
• executeQuery(): Usada em comandos SELECT. Retorna resultado de operações como objeto ResultSet;
• executeUpdade: tomada em comandos INSERT, UPDATE e DELETE. Retorna o nº de colunas afetadas como um tipo int.
Java.sql.ResultSet
• Resultados de uma consulta no banco de dados;
• Um objeto ResultSet pode ser visualizado como uma tabela;
• A informação é recuperada uma coluna por vez;
• O objeto ResultSet mantém a coluna corrente;
• Para percorrer as linhas da tabela usamos o método next().
Middleware
Fundamentos Banco de Dados
Cliente/Serv
Beans
Drivers JDBC
DSWEB
86
JDBC (Java Database Connector) é uma interface para acesso a banco de dados através de uma API definida em Java.  Sendo assim, aplicações, Applets, Servlets ou quaisquer outros programas Java podem:
• estabelecer conexão com base de dados;
• enviar comandos SQL, e processar   resultados.
JDBC
05
Segundo CARMO, a biblioteca da JBDC provê um conjunto de interfaces
de acesso ao banco de dados. Uma implementação em particular dessas interfaces é chamada de driver. Os próprios fabricantes dos bancos de dados (ou terceiros) são quem implementam os drivers JDBC para cada banco de dados.
Cada banco de dados possui um driver JDBC específico (que é usado de forma padrão - JDBC). A API padrão do Java já vem com o driver JDBC-ODBC, que é uma ponte entre a aplicação Java e o banco através da configuração de um recurso ODBC na máquina.Drivers de outros fornecedores devem ser adicionados ao CLASSPATH da aplicação para que seja possível a sua utilização.
Sendo assim, é possível alterar o driver utilizado e não afetar a aplicação.
DSWEB
87
JDBC (Java Database Connector) é uma interface para acesso a banco de dados através de uma API definida em Java.  Sendo assim, aplicações, Applets, Servlets ou quaisquer outros programas Java podem:
• estabelecer conexão com base de dados;
• enviar comandos SQL, e processar   resultados.
Tipos de Drivers JDBC
05
Tipo 1
Driver Ponte JDBC-ODBC: implementaçãonativaqueconecta uma aplicação Java a um banco de dados através de ODBCconfigurado na máquina.
Tipo 2
DriverAPI-Nativa Parcialmente Java: É uma “casca” sobre uma implementação nativa de um driver de acesso ao banco de dados.
Tipo 3
DriverJava c/ Net-Protocol: Utiliza ummiddleware para a conexão com o banco de dados.
Tipo 4
DriverJava Puro: Drivertotalmente implementado em Java.
As principais classes e interfaces do pacote java.sql são:
• DriverManager - gerencia o driver e cria uma conexão com o banco;
• Connection - classe que representa a conexão com o bando de dados;
• Statement - controla e executa uma instrução SQL;
• PreparedStatement - controla e executa, também, uma instrução SQL; 
• ResultSet - contém o conjunto de dados retornado por uma consulta SQL;
• ResultsetMetaData - classe que trata dos metadados do banco. 
A interface Connection possui os métodos para criar um Statement, fazer o commit ou rollback de uma transação, dentre outros.As interfaces Statement e PreparedStatement possuem métodos para executar comandos SQL.ResultSet possui método para recuperar os dados resultantes de uma consulta, além de retornar os metadados da consulta.ResultsetMetaData apresenta métodos para recuperar as meta informações do banco.
Middleware
Fundamentos Banco de Dados
Cliente/Serv
Beans
Drivers JDBC
DSWEB
88
1. Carregamento do Driver: 
Usando JDBC – Primeira Etapa
05
Para que uma aplicação Java possa interagir com um banco de dados, uma conexão deve ser estabelecida da seguinte forma:
• Carregamento do driver JDBC específico;
• Criação da conexão com o banco de dados. 
Para melhor entendimento: 
Carregamento do driver: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); 
A String passada ao método forName() é o nome específico da classe que implementa o Driver JDBC de cada banco de dados. No exemplo acima está o nome do driver da ponte JDBC-ODBC. Cada driver possui um nome diferente. Para utilizar, deve-se consultar a documentação do fabricante.
2. Criação da conexão: 
Connection conn = DriverManager.getConnection(“url”,“usuario”,“senha”);  
Após o carregamento do driver, a classe DriverManager é a responsável pela conexão ao banco e pela devolução do objeto Connection, o qual representa a conexão com o banco de dados.
O parâmetro “url” também é específico de cada fornecedor de driver. Consulte a documentação do fabricante. Normalmente, na url são informados o IP ou nome do servidor, porta e o nome da base de dados. Os outros argumentos são o nome do usuário do banco e a senha de acesso.
DSWEB
89
Com a conexão estabelecida, pode-se interagir com o banco de dados de diversas maneiras:
Inserção, alteração e retirada de registros;
Busca de registros;
Criação de tabelas. 
A seguir, seguem alguns exemplos. Todos eles estão baseados no uso do driver JDBC fornecido pela Oracle®. Entretanto, os mesmos exemplos podem ser utilizados com qualquer banco de dados relacional que possua um driver JDBC, necessitando apenas trocar o nome do driver e a URL de conexão. 
Não esqueça que o JAR do driver JDBC (fornecido pelo fabricante) precisa ser disponibilizado no CLASSPATH da aplicação.
Usando JDBC – Segunda Etapa
05
Para melhor compreensão, clique aqui e leia os exemplos. 
Para finalizarmos os assuntos dessa aula, leia o passo-a-passo “Usando JavaDB com NetBeans”.
DSWEB
90
Este é um passo muito importante que frequentemente é negligenciado após ter sido completada;
Deve ser feita explicitamente e é uma responsabilidade do programador;
Sem executar tal liberação, os recursos tomados não podem ser usados;
Em aplicações muito grandes, rapidamente resulta na perda de conexões disponíveis.
Executamos chamando o método close(), disponíveis em cada objeto das classes Connection, Statement e ResultSet.
Existe uma ordem específica envolvida
O método close() está definido para lançar uma SQLException.
O método deve ser colocado em finally.
Liberando Recursos do Sistema
05
DSWEB
Criando um Projeto com BD
91
Abre novo projeto
05
Middleware
Fundamentos Banco de Dados
Cliente/Serv
Beans
Drivers JDBC
Cria para conexão classe dentro do Pacote
DSWEB
Criando um Projeto com BD
92
• Java.sql.Connection é uma interface de conexão com o banco de dados.
• Podemos ler: a Interface Connection está na pasta sql, que está na pasta java.
05
DSWEB
Middleware JDBC;
Banco de dados Java;
Servlet para listagem de dados.
93
Síntese da Aula
Interação;
Seu.
Próxima Aula
05
Saiba mais sobre Middleware JDBC:
ANTONIO NETO. Java na Web. Rio de Janeiro: Ciência Moderna, 2011.
ORACLE CORPORATION – Tecnologia Java SE / Banco de Dados – http://www.oracle.com/technetwork/java/javase/jdbc/index.html
DSWEB
 A questão aborda conceitos de sistemas distribuídos referentes ao compartilhamento de informações. São apresentados três cenários variando
RESPOSTA
DSWEB
Introdução
 Projetar software OO reusável e de boa qualidade é uma tarefa difícil;
 Para realizar essa tarefa a contento, projetistas experientes usam 
 soluções de sucesso com as quais já trabalharam no passado;
 Isso leva à descoberta de padrões de projeto;
 Durante duas décadas, a comunidade de padrões vem se desenvolvendo 
 de acordo com essa dinâmica.
97
DSWEB
97
97
Padrões de Projeto - Definição
99
“Descrição de uma solução para resolver um problema genérico de projeto em um contexto específico. […]
Um padrão de projeto dá nome, abstrai e identifica os aspectos-chave de uma estrutura de projeto comum para torná-la reutilizável.
Erich Gamma, et. al, sobre padrões de projeto de software.
DSWEB
Padrões de Projeto - Benefícios
100
Padrões capturam a estrutura estática e a colaboração entre objetos participantes no projeto de sistemas;
São especialmente bons para descrever como e por que resolver problemas não funcionais;
Facilitam o reuso de soluções arquiteturais que deram certo antes.
Aumentam a coesão, diminuem o acoplamento
DSWEB
Classificação por propósito
101
Padrões de Criação : abstraem o processo de criação de objetos a partir da instanciação de classes;
Padrões Estruturais: tratam da forma como classes e objetos estão organizadas para formar estruturas maiores;
Padrões comportamentais: preocupam-se com algoritmos e responsabilidades dos objetos.
DSWEB
Padrões de Projeto
103
São soluções comprovadas, são boas práticas que outras pessoas já utilizaram e que você pode fazer uso em seu programa;
Utilizados em problemas recorrentes;
Então com isso não é necessário reinventar a rodas.
DSWEB
Problemas Recorrentes
104
Garantir que uma classe tenha no máximo uma instância criada em determinado momento - use Singleton;
Compatibilizar interfaces que normalmente não conseguiriam se integrar - use Adapter;
- Criar objetos de maneira controlada - use Factory.
DSWEB
Padrões de Projeto
105
DSWEB
Padrões de Criação
Abstract Factory
Builder
Factory Method
Prototype
Singleton
106
DSWEB
Padrões Estruturais
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
107
DSWEB
Padrões Comportamentais
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
108
DSWEB
109
Padrões Comportamentais
Tratam de algoritmos, comportamento dinâmico, padrões onde os elementos se associam para criar estruturas maiores.
DSWEB
Strategy
Define uma família de algoritmos, encapsula cada um, e faz deles intercambiáveis.
Onde podemos usar?
Classes relacionadas que deferem apenas em seus comportamentos.
Quando uma classe define muitos comportamentos e eles aparecem como declarações condicionais.
110
DSWEB
112
Strategy
DSWEB
113
Strategy
DSWEB
114
Strategy
DSWEB
115
package projeto_strategy1;
public interface Strategy {
 int execute (int a, int b);
}
class ConcreteStrategyAdd implements Strategy{
 public int execute (int a, int b){
 return a + b;
 }
}
class ConcreteStrategySub implements Strategy{
 public int execute (int a, int b){
 return a - b;
 }
}
Strategy
package projeto_strategy1;
public class Calcular {
 private Strategy strategy;
 public Calcular(Strategy strategy) {
 this.strategy = strategy;
 }
 
 public int executeStrategy(int a, int b){
 return strategy.execute(a, b);
 } 
 
}
package projeto_strategy1;
public class Projeto_strategy1 {
 
 public static void main(String[] args) {
 Calcular calc;
 
 calc = new Calcular(new ConcreteStrategyAdd());
 int resultA = calc.executeStrategy(4, 5);
 
 calc = new Calcular(new ConcreteStrategySub());
 int resultB = calc.executeStrategy(8, 5);
 
 System.out.println(resultA);
 System.out.println(resultB);
 }
}
DSWEB
Principais padrões J2EE
Existem diversos padrões de desenho de software, bem como suas classificações.
São oito design patterns utilizados.
116
DSWEB
Factory Method
Fundamenta-se na estratégia de criação de métodos abstratos para a criação de objetos.
Elimina dependências entre classes concretas.
Transfere a responsabilidade de implementação específica para as subclasses.
117
DSWEB
Abstract Factory
Podemos entender como a criação de uma interface comum a diversas classes concretas as quais se comportam de maneira específica, porém todas implementam a mesma interface.
118
DSWEB
Model-View-Controller ( MVC )
É um padrão arquitetural que divide aplicações em três tipos de componentes. O model contém as funcionalidades nucleares e dados;
A camada View exibe informações ao usuário;
A camada Controller manipula as entradas através do controle entre outras camadas.
119
DSWEB
Padrão Facade (fachada)
Padrão estrutural que, como o próprio nome diz, serve como fachada entre as camadas cliente e servidor, minimizando o número de requisições e respostas em ambos os lados através de uma interface. 
120
DSWEB
Padrão Iterator
Objeto é possibilitar a navegação entre uma coleção de dados utilizando uma interface comum sem conhecer a implementação. É recomendado a utilização de interfaces, permitindo ao usuário implementá-lo.
121
DSWEB
Data Access Object ( DAO )
Objetivo desse padrão é separar recursos de dados dos seus mecanismos de acesso, permitindo que sejam modificados independentemente do código que os utiliza.
122
DSWEB
Vamos Praticar
123
DSWEB
Service Locator
A operação Lookup (busca de conexões e repositórios de dados através de JNDI e outro) e criação de objetos remotos envolvem operações de rede e interface.
Surgiu do objetivo de melhorar a performance e a produtividade em software.
124
DSWEB
Singleton
De forma bem simplista, o objetivo desse padrão é possibilitar uma forma mais segura e menos acoplada de acessar métodos ou atributos globais.
Seu uso dá pela manipulação de classes em vez de objetos.
125
DSWEB
Refatoramento de arquitetura
Padrões se encaixam bem quando é necessário alterar uma arquitetura para melhorar algum aspecto de um sistema.
performance
escalabilidade
reuso e manutenção
A maior parte dos padrões foram construídos visando esse tipo de evolução.
126
DSWEB
Resumindo
Conceito de Padrões de Projeto;
Padrões GOF;
Padrões JEE.
127
DSWEB
Nes
128
Atividade 6 (ppt)
C
DSWEB
Atividade 6
129
DSWEB
ATIVIDADE PROPOSTA (06):
Cliente
DSWEB
 Internet sem memória
Um dos fatores sobre a programação para web é que o protocolo HTTP é estateless, ou seja, não guarda estados, não podem existir conexões persistentes entre o browser do cliente e o servidor web.
132
DSWEB
Métodos de manutenção do estado
Existem basicamente três técnicas de manutenção de estado do cliente da web: utilizando sessões, utilizando cookies e propagação de parâmetros.
133
Sessão de usuário
A técnica conhecida como session track, ou uso de sessões é uma técnica que mantém o estado do cliente em diversas situações.
Muito utilizada em lojas virtuais, nos carrinhos de compra e criação de login e senha de acesso e outros.
Páginas JSP utilizam objetos de sessão que são parte da classe HTTPSession. Tais objetos também são chamados de pseudo-sessios ou simplesmente sessions e podem ser utilizados para armazenar informações entre requisições ao servidor.
DSWEB
Sessão de usuário - primeira página
134
Sessão de usuário - segunda página
Sessão de usuário – Terceira página
DSWEB
Cookies
São pequenos textos de informação de no máximo 4kb.
Um servidor web envia-os a um browser e grava-os no computador do cliente por um determinado tempo e são acessados quando um cliente visita o mesmo site que os criou.
135
Prós e contras
Com o uso de cookies é possível obter uma série de informações sobre o cliente no instante de acesso ao site.
Identificação imediata de preferência de usuários, tais como: formato de telas, produtos preferidos na última compra e principalmente nome de usuário e senha.
Identificação de usuários durante compras em uma loja virtuais.
DSWEB
Cookies - exemplo
136
DSWEB
Padrão MVC
É uma arquitetura popular para o desenho de aplicações web complexas e modulares. 
Camada modelo: 
ficam as classes que modelam dados e a lógica de negócios.
Camada Controle: 
redireciona páginas, valida dados.(servlets, beans ou EJBs).
Camada View: 
JSPs e as páginas HTML.
137
Definem a estrutura do sistema, oferecendo uma visão de alto nível da estrutura do sistema.
Providenciam um conjunto de subsistemas predefinidos, especificando os relacionamentos entre eles e estabelecendo regras para esses relacionamentos.
Podemos citar como exemplos: Reflexão e MVC (Model-View-Controller).
Padrões de Arquitetura
DSWEB
Padrão MVC
O MVC foi um dos primeiros padrões identificados. 
Foi criado pela comunidade Smalltalk® em 1979 e, mesmo após todos esses anos, ainda é muito aplicado em aplicações interativas que necessitam de interfaces flexíveis. 
Tem por objetivo tornar a aplicação modular, facilitando a resolução de grandes problemas, transformando-os em outros menores que podem ser resolvidos mais facilmente, além de facilitar 
o planejamento do desenvolvimento. 
Modularidade consiste em dividir o software em componentes independentes.
138
DSWEB
Padrão MVC
139
DSWEB
Utilização de camadas
140
Segundo SANTOS, o sucesso em aplicações orientadas a objetos está diretamente ligado à organização de aplicações em camadas e na utilização dos padrões utilizados pelo mercado.
DSWEB
Utilização de camadas
141
DSWEB
Modelo MVC 1
142
Modelo formado apenas por páginas JSP e Beans. Deve ser utilizado no desenvolvimento de sistemas pequenos e simples, pois pode haver uma grande quantidade de código Java nas páginas JSP. A figura exemplifica o modelo MVC 1:
DSWEB
Modelo
MVC 2
143
Este modelo explora o que há de melhor em cada tecnologia, dividindo o desenvolvimento do sistema em duas partes: implementação e apresentação, além de adicionar um componente a mais em relação ao modelo MVC 1: os Servlets. A Figura mostra o funcionamento da arquitetura:
Segundo, FREIRE, pode-se destacar alguns passos para a construção do modelo MVC 2, tais como:
Definir beans para representar os dados;
Usar Servlets para tratar requisições;
Preencher os beans;
Armazenar o bean na requisição, sessão, ou no contexto do Servlet;
Encaminhar a requisição para uma página JSP; 
Extrair os dados dos beans. 
Esta divisão facilita o controle de tarefas e ação realizadas pela implementação do sistema.
DSWEB
Criação de Aplicação Web com acesso a BD
144
Teste o servidor Web: Digite na barra de endereços do browser, o seguinte endereço: http://localhost:8080/ e dê “enter”. Caso apareça uma das figuras abaixo, ok! Caso contrário, configure o seu Tomcat.
Crie e teste o seu siteLocalize a pasta “webapps” do Tomcat (c:\arquivos de programas\Apache Software\Tomcat x.x);Crie uma subpasta de nome “teste” dentro da pasta “webapps” (este será o seu site);Na pasta “teste”, crie a subpasta WEB-INF (deve ser escrito em letras maiúsculas como aqui!);Abra o bloco de notas e digite:
<html><body><%out.print("Estou testando meu site");%></body></html>
Salve-o na pasta “teste” com o nome de teste.jsp
Digite no browser o endereço: htpp://localhost:8080/teste/teste.jsp e tecle “enter”. A figura à direita deve aparecer: 
Verificando sites Digite http://localhost:8080/ na barra de endereço do browser; Selecione “Tomcat Manager”; Ao aparecer a imagem, digite admin (em letras minúsculas) e clique ok. Ou nome e senha que você colocou quando instalou o Tomcat;
DSWEB
Criação de Aplicação Web com acesso a BD
145
Observe o site (teste) conforme destacado na figura a seguir. Aqui você pode administrá-lo, ou seja, parar (stop), recarregar (reload) ou iniciar(start). Lembre-se que sempre adicionar uma classe (.class) nova em seu site, é necessário recarregá-lo (reload).
Instruções para criar BD, conector etc.
DSWEB
Redes de Petri na modelagem de Sistemas Web
146
Segundo, MOURELLI, Rede de Petri é uma ferramenta para a modelagem e projeto de sistemas, utilizando uma representação matemática do sistema, sendo uma extensão das máquinas de estados finitos.
A análise da rede de Petri permite avaliar a estrutura e o comportamento dinâmico do sistema modelado. O resultado desta avaliação pode levar a melhorias ou mudanças no sistema. 
A representação gráfica de uma rede de Petri básica é formada por dois componentes: um ativo chamado de transição (barra) e outro passivo denominado lugar (círculo). Os lugares equivalem às variáveis de estado e as transições correspondem às ações realizadas pelo sistema. Esses dois componentes são ligados entre si através de arcos dirigidos. Os arcos podem ser únicos ou múltiplos. A figura mostra os elementos básicos de um grafo associado às redes de Petri.
DSWEB
Introdução à segurança
147
Autenticação: processo de cerificar a identidade tanto do cliente como do provedor de serviço;
Privacidade: garantia de que os dados que estiverem trafegando entre a origem e o destino da comunicação não possam ser entendidos ou utilizados por terceiros;
Integridade: garantia de que os dados não foram alterados durante o processo de transmissão;
Autorização: processo de determinação de que uma determinada pessoa tem o direito de executar uma ação em particular, em relação a um objeto específico e em determinada situação; 
Não-repúdio: mecanismo pelo qual nenhuma das partes de uma negociação possa negar que a mesma ocorreu ou que participou dela.
Existem alguns serviços que fundamentam as tecnologias de segurança:
DSWEB
Criptografia
148
Do Grego kryptós, "escondido", e gráphein, "escrever”, a criptografia é o estudo e aplicação de técnicas que tem por objetivo transformar uma informação original e legível para outra completamente ilegível, que a torna difícil de ser lida por alguém não autorizado. Sua interpretação só pode ser feita caso seja conhecida sua "chave secreta".  
Segundo SOUZA, pode ser considerada como o processo de codificar informações de maneira que somente a origem e o destino da troca de mensagens possam entendê-los. Uma informação sem criptografia é chamada de texto claro, enquanto uma informação criptografada chama-se texto cifrado.
Técnicas de criptografia são as mais utilizadas para prover um meio efetivo de proteção contra ataques, estejam armazenadas em disco ou sendo transmitidas pelas redes computacionais.
A criptografia fornece determinados processos, serviços básicos de: autenticidade, confidencialidade, integridade e não repúdio para os dados a pessoas devidamente autorizadas.
A criptografia tem como funcionalidade a alteração de uma mensagem original para outra cifrada. Para conseguir isso, a mensagem deve passar por um processo de cifragem, que consiste basicamente no emprego da mensagem a um mecanismo que, através de uma chave “específica”, cifre a mesma. Ou seja, após a mensagem ser empregada ao algoritmo de criptografia com esta chave secreta a mesma será totalmente alterada ficando completamente ilegível. E um processo contrário, que é a decifragem onde, novamente, através da chave específica, é possível a conversão dos dados cifrados para a mensagem original. A figura abaixo exemplifica a funcionalidade da criptografia:
DSWEB
Criptografia
149
Atualmente, há dois tipos de criptografia:  
A principal diferença encontrada nas duas técnicas é com relação às chaves utilizadas. A criptografia simétrica utiliza somente uma chave para realizar o processo de cifragem e decifragem da mensagem e a assimétrica utiliza duas chaves, uma pública e outra privada, sendo uma utilizada para cifrar e a outra para decifrar a mensagem.
Simétrica
A criptografiasimétrica utiliza uma única chaveno processo de criptografia, e esta chave deve ser mantida em segredo.
Assimétrica
A criptografiaassimétricautilizaduas chaves, matematicamente relacionadas, sendo uma delas paraencriptare outra paradecriptar. Uma das chaves é mantida em segredo, e a outra é divulgada.
DSWEB
Criptografia
150
Atualmente, há dois tipos de criptografia:  
Simétrica
Tipo mais simplesde criptografia, já que tanto o emissor quanto o receptor da mensagem possuem a mesma chave, ou seja, a mesma chave é usada tanto na codificação quanto na decodificação.
Para ser realizada, basta que o emissor, antes de enviar a mensagem criptografada, envie a chave privada que será utilizada paradescriptografá-la.
Existem diversos algoritmos criptográficos que fazem uso daChave Simétrica, como:DES (DataEncryptionStandard); IDEA (Internacional DataEncryptionAlgorithm); e RC (Ron’sCode ouRivestCipher). 
A Chave Simétrica apresenta algumasdesvantagens, tais como:necessidade da troca constante dessas chaves; e aimpossibilidade de serem usados com fins deautentificação(já que atransmissão da chaveprivada de um para o outropode não ser segura).
Assimétrica
Utiliza 2 (duas) chaves, uma pública e uma privada. O sistema funciona da forma que alguém cria uma chave e envia essa chave a quem quiser enviar informações (essa é a chamada chave pública). Com ela é feita a codificação da mensagem. Para decodificação será necessário utilizar outra chave que deve ser criada, a chave privada – que é secreta.
A Chave Assimétrica também possui suasdesvantagens: autilização de algoritmos reversos paradesencriptaçãode mensagens acaba porelevar o tempo computacionaldos algoritmos de criptografia assimétrica, tornando inviável o seu uso em uma comunicação intensa.
DSWEB
Resumindo
Sessões;
Cookies;
Padrão MVC 2.
151
DSWEB
ATIVIDADE PROPOSTA (07):
Cliente
DSWEB
154
Rotinas Básicas com JavaScript
A forma de programar em que simplesmente se ordena coisas para serem executadas em sequência.
JavaScript é uma linguagem de programação utilizada para criar
pequenos programas encarregados de realizar ações dentro do âmbito de uma página web.
Com JavaScript podemos criar efeitos especiais nas páginas e definir interatividades com o usuário.
O navegador é o encarregado de interpretar as instruções JavaScript.
O mais importante e básico que podemos destacar neste momento é que a programação de JavaScript se realiza dentro do próprio documento HTML.
Isto quer dizer que na página se misturam as duas linguagens.
Usamos delimitadores <script> e </script>
DSWEB
155
Rotinas Básicas com JavaScript
Nem todos os navegadores da web compreendem o código JavaScript. Nos casos em que não interpretam os scripts, os navegadores assumem que o código destes é o texto da própria página web e como consequência, apresentam os scripts na página web como se tratasse de um texto normal.
Para evitar que o texto dos scripts se escreva na página, temos que ocultá-los com comentários HTML.
Um comentário é uma parte de código que não é interpretada pelo navegador e cuja utilidade radica em facilitar a leitura ao programador.
O programador, a medida que desenvolve o script, vai deixando frases palavras soltas, chamadas comentários que ajudam a ele ou a qualquer outro a ler mais facilmente o script na horta de modificá-lo ou depurá-lo.
<script>
	// Este é um comentário de uma linha
	/* Este comentário pode se expandir por vários linhas. */
 </script>
<script type="text/javascript"> 
<!-
 var num1;var num2; 
num1= prompt("Entre Valor 1", 'Aqui'); 
num2= prompt("Entre Valor 2", 'Aqui'); 
if(num1>num2) 
document.write("O primeiro é maior "); 
else 
document.write("O segundo é maior "); 
//--> 
</script>
DSWEB
156
Existem três maneiras de executar
Execução direta de scripts;
Execução como resposta a uma ação;
Através de arquivos externos.
DSWEB
157
<script type="text/javascript"> 
<!-
 
var num1;var num2; 
num1= prompt("Entre Valor 1", 'Aqui'); 
num2= prompt("Entre Valor 2", 'Aqui'); 
if(num1>num2) 
document.write("O primeiro é maior "); 
else 
document.write("O segundo é maior "); 
//--> 
</script>
<script type="text/javascript"> 
<!-
var dia = “Segunda-feira”;
if (dia == "Segunda-feira") 
   document.write ("Que tenha um ótimo começo de semana");
 
//--> 
</script>
DSWEB
158
Orientação a objetos com JavaScript
Um objeto é uma coisa que agrupa variáveis (aqui chamadas de atributos) e funções (aqui chamadas de métodos).
A grande vantagem ao usar objeto é que, além de agruparmos coisas que têm a ver entre si, elas passam a ser mais integradas.
Um atributo é acessado com um ponto depois de nome do objeto, seguido do próprio atributo.
JavaScript implementa, até certo ponto, as vantagens da programação OO, permitindo seu uso.
Estrutura with
Se você pretende tratar um só objeto, pode utilizar o comando with, utilizado assim:
with (exemplo) {
cor = "white";
andar();
}
DSWEB
159
Isso colabora para que você poupe tempo e caracteres, 
o que pode ser muito importante em 
JavaScript, já que tudo vai ser
transferido pela rede antes de ser interpretado.
Um método também é acessado dessa forma, mas com parênteses depois. 
Enfim, é tudo quase igual. Assim, os comandos a seguir são válidos.
exemplo.cor = "white“;
exemplo.andar();
mensagem = (exemplo.arCondicionado) ? "Tem ar condicionado" : "Não tem ar condicionado".”; 
Orientação a objetos com JavaScript
DSWEB
160
Em JavaScript Orientado a Objeto, uma classe é apenas uma função.
A única coisa que difere é que nesta função você utilizará o this para agregar atributos e métodos. 
O this referencia não somente a própria classe, mas o objeto específico durante sua execução. 
Para adicionar um atributo, basta escrever this.nomeDoAtributo. 
A Criação de Classes
Se for um objeto, você deve instanciá-lo:
this.lista = new Array(); 
Para adicionar um método, você deve utilizar a forma de definição de função: 
this.escreve = function() { document.write( this.texto ) } 
define um método escreve que escreverá o conteúdo do atributo texto deste objeto.
DSWEB
161
É muito simples o conceito. Tão simples que não há muito o que falar. 
Um objeto é uma variável. 
Uma classe pode definir atributos, que são variáveis. 
Por consequencia, um atributo pode também ser um objeto e esse o ponto chave. 
É só colocar this.atributo = new Classe(params) e pronto..
Composição
DSWEB
162
Herança
A herança, é quando queremos dizer que uma classe A é uma especialização da classe B.
Um dos exemplos mais clássicos disso é o de Pessoa. 
Vamos supor uma classe Pessoa.
Ela teria como atributos nome, endereço, telefone, e-mail...
Agora queremos uma Pessoa Física. 
Basta acrescentarmos o CPF e outras coisas mais. 
Uma Pessoa Jurídica teria o CNPJ. 
No final, a classe Pessoa deveria ter o que há em comum entre Pessoas Físicas e Jurídicas. 
Usando herança, nós não precisaremos re-escrever tudo, basta dizermos que PessoaFisica, apesar de ter CPF e outras coisas, é uma Pessoa. 
O mesmo com Pessoa Jurídica.
JavaScript possui um jeito particular de se definir isso:
com o protótipo da função (é o construtor da classe, mas para o JavaScript ainda é uma função). 
O acesso é na forma:
constructorDaClasse.prototype = new construtorDaClasseMae;
Sem parênteses. Em JavaScript , o construtor da classe é o próprio nome da classe.
DSWEB
163
function PessoaFisica() {
this.cpf;
this.setCPF(n) {
this.cpf = n;
}
this.escrever() {
parent.escrever();
document.write("CPF: " + this.cpf + "\<BR\>");
}
}
Vamos supor que já existe uma classe Pessoa, inclusive com um método escrever() que escreve na tela todos os seus dados na forma Campo: Valor
Para dizer que uma pessoa física é também uma pessoa, devemos escrever (depois de escrita toda a classe) a linha:
PessoaFisica.prototype = new Pessoa; 
Com isso temos que uma pessoa física é também uma pessoa.
Outra coisa interessante que ainda não foi dita é o parent. 
É a forma de acessar métodos da classe-mãe. 
A chamada que está na classe PessoaFisica significa:
Classe-mãe.escrever();
DSWEB
Tipos de Dados
164
Na programação JavaScript, há 2 (dois) tipos de variáveis indefinidas:
• O primeiro tipo de variável indefinida é um tipo que nunca foi declarado. Ao tentarmos ler um valor dessa variável não declarada, haverá um erro em tempo de execução.
• O segundo tipo é aquela que foi declarada, entretanto nunca teve um valor atribuído a ela. Ao ler o valor de uma variável deste tipo, teremos seu valor default, padrão: undefined;
Exemplo:
Indefinido
Ausência de valor. Quando atribuímos null a um objeto ou variável significa que essa variável ou objeto não possui valor válido. Exemplo: 
Null
DSWEB
Funções
165
As funções podem ser definidas como um conjunto de instruções, agrupadas para executar uma determinada tarefa. Dentro de uma função pode existir uma chamada a outra função.  
As funções podem ou não retornar alguma informação, o que é feito com o comando Return. 
A definição de uma função é feita da seguinte forma: 
Function NomeDaFunção([parâmetro1, parâmetro2, .... ,parâmetroN]) {...[Return(ValorDeRetorno);]  }
Mostra uma caixa de diálogo com os botões "OK" e "Cancelar" e com a string "mensagem". Retorna true se selecionado "OK" ou false se selecionado "Cancelar". Exemplo: 
if(confirm("Apaga todos os dados?")) {document.write("Apagando...");} else {document.write("Cancelado!");}
Mostra uma caixa de diálogo, um campo de texto, e os botões "OK" e "Cancelar". Retorna a string digitada no campo de texto ou NULL se cancelado. Exemplo: 
nome=prompt("Digite seu nome, por favor:", "Aluno");
if(!nome){alert("Bem-vindo, anônimo!");} else {alert("Bem-vindo, caro(a) "+nome);}
Prompt
Confirm
Mostra uma caixa de alerta (com o botão OK ) com a string "mensagem". Útil para depurar o script. Exemplo: alert("Mensagem enviada!");
Alert
DSWEB
Resumindo
166
Rotinas básicas com JavaScript;
 Orientação a Objetos com JavaScript. .
DSWEB
ATIVIDADE PROPOSTA (08):
Cliente
DSWEB
Introdução
Segundo Rocha, os componentes de formulário são os objetos HTML mais utilizados em JavaScript. Por componentes de formulário nos referimos a qualquer campo de entrada de dados dentro de um bloco HTML <FORM>, como botões, caixas de seleção, caixas de texto e botões de “rádio”. Eles são a principal forma de entrada de dados disponível no HTML. 
Os objetos de formulário consistem de 12 (doze) objetos, situados abaixo de Form, no modelo de objetos do documento JavaScript. São representados através de elementos HTML específicos: <INPUT>, <SELECT>, <OPTION> e <TEXTAREA>. 
Uma das principais aplicações do JavaScript é a validação de dados em aplicações Web. Verificar se os campos de um formulário foram preenchidos corretamente antes de enviar os dados a um programa no servidor é uma tarefa realizada eficientemente com JavaScript. Na maior parte das aplicações, JavaScript é capaz de fazer toda a verificação localmente, economizando conexões de rede desnecessárias.
169
DSWEB
FORM
O objeto Form é o mais alto da hierarquia dos componentes de formulários. Através dele temos acesso aos componentes existentes dentro de um bloco HTML <form>, que podem ser: botões, caixas de texto, caixas de seleção, etc. 
Não há um objeto Form em JavaScript. Ele precisa estar presente no código HTML. Este bloco não é visível na página. Serve apenas para agrupar componentes de entrada de dados, torná-los visíveis e associar seus dados a um programa no servidor. Ou seja, para se acessar as propriedades de um formulário, é preciso ter acesso ao documento que o contém. Exemplo: 
Form1 = document.meuformulario;
Um documento pode conter vários formulários. Cada um é armazenado em uma posição de um array chamado forms. Exemplo: 
Form1 = document.forms[0];
170
aux = document.forms[0].propriedade;
document.forms[0].metodo();
aux = documents.meuforms.propriedade;
document.meuforms.metodo();
Como manipular um formulário
DSWEB
Abrir uma Janela Secundária
<script>
 window.open(“http://www.google.com”,””,”width=550,height=420,menubar=no”)
</script>
171
Uma mensagem de boas vindas
<script>
 window.alert(“Bem vindo ao site web…”);
</script>
Exibir a data atual
<script>
document.write(new Date());
</script>
Link para voltar à página anterior
<a href=“javascript:history.go(-1)”>Voltar</a>
document.write()
Escreve dentro da página web.
Podemos escrever tags HTML e texto normal.
DSWEB
DOM - Eventos
Os eventos são maneiras que temos em JavaScript para controlar as ações dos visitantes e definir um comportamento da página quando se produz.
Quanto um usuário visita uma página web e interage com ela, se produz eventos e com JavaScript podemos definir o que queremos que ocorra.
172
DOM - onabort
Este evento se produz quando um usuário detém a carga de uma imagem, seja porque detém a carga da página ou porque realiza uma ação que a detém, como por exemplo sair da página.
DOM - onblur
Aplica-se um evento onblur quando um elemento perde o foco da aplicação. O foco da aplicação é o lugar onde está situado o cursor, por exemplo, pode estar situado sobre um campo de texto, uma página, um botão ou qualquer outro elemento.
DOM - onchange
Aplica-se este evento quando muda o estado de um elemento de formulário, às vezes não se produz até que o usuário retire o foco da aplicação do elemento.
DOM - onclick
Produz-se quando se clica o botão de mouse sobre um elemento da página, geralmente um botão ou um link.
DOM - onfocus
O evento onfocus é o contrário de onblur. Profuz-se quando um elemento da página ou 
a janela ganham o foco da aplicação.
DSWEB
<form name= “contato"action = “" method=“post">
 <fieldset>
 <legend>Envie seu contato:</legend>
 <label>
 <span>Nome:</span>
 <input type=“text" name=“nome" value=“Informe seu nome”/>
 </label>
 <label>
 <input type=“submit" value=“Enviar" class=“btn"/>
 </label>
 </fieldset>
</form>
onclik = “this.style.background=‘#fff’, if(this.value==‘Informe seu nome’ | this.value== ‘Nome é inválido’){ this.value = ‘ ‘;}”;
onblur= " if(this.value == ''){ this.value = 'Informe seu nome', this.style.background='#ffa6a6', this.style.borderColor='#ff0000', }“;
onchange = " if(this.value.length < 10){ this.value = 'Nome é inválido‘; this.style.background='#ffa6a6‘; this.style.borderColor='#ff0000‘;
 }else{ this.style.background='#ff97b1‘; this.style.borderColor='#00ff00‘; }“;
<?php
 if(isset($cod))
 { echo "<input type='hidden' id='cod' value='$cod' />"; }
 else
 { echo "<input type='hidden' id='cod' value='000' />"; }
 ?>
<script>
 var cod = document.getElementById('cod').value;
 alert(cod);
 </script>
173
Formulário
DSWEB
Validação de dados obrigatórios;
Document Object Model (DOM);
Críticas de campos multivalorados;
Uso de elementos HIDDEN.
174
Resumindo
DSWEB
ATIVIDADE PROPOSTA (09):
Cliente
DSWEB
Introdução ao AJAX
O AJAX surgiu para resolver um problema que ocorre desde o surgimento da Internet: que é o de que a interação é feita de forma síncrona, ou seja, exige-se que, para cada solicitação em uma página Web, atualize-se a página inteira no navegador. Não importava se a atualização era só de uma pequena parte da página, toda a página era recebida pelo servidor e a página era toda redesenhada e retornada para o navegador Web.
177
Os princípios do Ajax (Asynchronous JavaScript +XML) separam elegantemente o cliente do servidor e podem ser utilizados com qualquer linguagem server-side. Foi criado por Jesse James Garret, da Adaptive Path.  
Utilizado inicialmente pelo Microsoft Internet Explorer® e adotado posteriormente pelos demais navegadores, o AJAX é uma forma arrojada de uso de Javascript e XML que permite a criação de um objeto Ajax (Javascript). Este objeto consegue acessar outra página e receber o retorno de informação (sem sair da primeira página). 
A informação recebida pode ser tratada dentro do código (da página onde o objeto existe), permitindo ao desenvolvedor uma forma progressista na criação da interface, de forma a enriquecer e agilizar a experiência do usuário dentro do sistema.
Uma das características deste objeto é que o mesmo pode comportar-se de uma forma assíncrona em relação à página HTML. Ou seja, enquanto a página continua a ser carregada (parcial ou totalmente), o objeto funciona em paralelo, correspondendo-se com a página destino até receber a informação desejada (ou algum erro ocorrer). 
Antes do surgimento do AJAX, alguns subterfúgios eram utilizados para amenizar esse problema. A utilização de pré-carregamento dos dados, frames e iframes nunca resolveram o problema da maneira mais eficiente. Em alguns casos, apenas davam a falsa impressão de que a página não era toda atualizada, quando, na verdade, os dados já estavam carregados e apenas eram escondidos até serem necessários. Em outros casos (frames ou iframes), eram carregadas partes da página e, geralmente, trafegavam mais informações do que era realmente necessário. 
Com o AJAX pode-se trafegar apenas os dados que realmente foram atualizados em uma página Web e, assim, ganhar em desempenho e interatividade com o usuário. O seu uso é recomendado, principalmente, para páginas que utilizem validações e preenchimento de formulários.
DSWEB
177
Pode-se afirmar que o Ajax dá vazão a uma grande quantidade de potenciais não realizados nas tecnologias dos navegadores Web.  
O Google e alguns outros dos principais competidores estão utilizando o Ajax para aumentar as expectativas do público em geral sobre o que um aplicativo Web pode fazer.  
Com o Ajax, o fluxo de trabalho do usuário não é interrompido pela necessidade de se comunicar com o servidor. As solicitações são assíncronas. E isto significa que alguns recursos da página permanecem acessíveis enquanto a página (navegador) coleta novos dados do servidor. E isto significa, também, economia de largura de banda. 
Exemplificando o AJAX
Praticamente todos os navegadores,

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Mais conteúdos dessa disciplina