Professional Documents
Culture Documents
Técnicas de Programação TÉCNICAS DE PROGRAMAÇÃO 2
Técnicas de Programação TÉCNICAS DE PROGRAMAÇÃO 2
TÉCNICAS DE
PROGRAMAÇÃO
Unidade 08
A Camada de Apresentação
Web
Técnicas de Programação Faculdade de Informática/PUCRS 2
CAMADA DE
APRESENTAÇÃO
Web
Técnicas de Programação Faculdade de Informática/PUCRS 3
• Código de script
• Ex.: CGI, Java Servlets, PHP
Exemplo
• ConversorTemperaturaV1
Técnicas de Programação Faculdade de Informática/PUCRS 8
CONCEITOS BÁSICOS
HTTP e HTML
Técnicas de Programação Faculdade de Informática/PUCRS 9
HTTP
• A comunicação com servidores e aplicativos web
se dá através do protocolo Hypertext Transfer
Protocol
• Protocolo de nível de aplicação
• Protocolo textual
• Protocolo baseado em mensagens de
requisição/resposta no modelo cliente/servidor
• Protocolo sem manutenção de estado
Técnicas de Programação Faculdade de Informática/PUCRS 10
HTTP
• Um URL Uniform Resource Locator é utilizado para
identificar recursos em um servidor web
• Ex.: http://java.sun.com/index.html
• Formato geral:
"http:" "//" host [ ":" port ] [path [ "?" query ]]
Técnicas de Programação Faculdade de Informática/PUCRS 11
HTTP
• Uma mensagem HTTP consiste de:
• Uma linha inicial
• Um ou mais campos de cabeçalho
• Uma linha em branco
• Possivelmente um corpo da mensagem
Técnicas de Programação Faculdade de Informática/PUCRS 12
HTTP
• Alguns comandos de requisição (8 no padrão):
HTTP
• Requisição via GET:
HTTP
• Requisição via POST:
Nome=NomePessoa&Idade=20&Curso=Computacao
Técnicas de Programação Faculdade de Informática/PUCRS 15
HTTP
• Resposta:
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Etag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8
Técnicas de Programação Faculdade de Informática/PUCRS 16
HTTP
• São dois os comandos mais utilizados para fornecer
entrada de dados aos programas no lado servidor:
• GET
• POST
Técnicas de Programação Faculdade de Informática/PUCRS 17
HTTP
• GET:
• Método mais simples
• Quantidade de dados limitada
• Limite implementado nos navegadores
• Dados acrescentados à URL após um caractere “?”, no formato
“campo=valor”, separados pelo caractere “&”
• Recebe o nome de query-string
• Ex.:
• http://www.aqui.com/prog?id=1&ano=2008
Técnicas de Programação Faculdade de Informática/PUCRS 18
HTTP
• POST:
• Método mais robusto
• Quantidade de dados não é limitada como no GET
• Dados (query-string) enviados no corpo da requisição do protocolo
Técnicas de Programação Faculdade de Informática/PUCRS 19
Páginas Web
• Duas sintaxes concretas para a definição de documentos
que são processados pelos navegadores:
• HTML – HyperText Markup Language
• XHTML – Extensible HyperText Markup Language
Páginas Web
• HTML foi originalmente desenvolvido por Tim Berners-
Lee no CERN e popularizado pelo navegador NCSA
Mosaic na década de 1990
• HTML 2.0 especificado em 1994
• HTML 3.0 especificado em 1995
• HTML 3.2 especificado em 1997
• HTML 4.0 especificado em 1998
• HTML 4.01 especificado em 1999
• HTML 5 em processo de especificação
Técnicas de Programação Faculdade de Informática/PUCRS 21
Páginas Web
• XHTML 1.0 especificado em 2000
• XHTML 1.1 especificado em 2001
• XHTML Basic 1.1 especificado em 2008
• XHTML 5 em processo de especificação
Técnicas de Programação Faculdade de Informática/PUCRS 22
Elementos
• Documentos são compostos de elementos
• Um elemento consiste:
• Marcação (tag) de abertura
• Conteúdo
• Marcação de fechamento
Técnicas de Programação Faculdade de Informática/PUCRS 23
Elementos
• Uma marcação de abertura consiste em:
• Sinal <
• Nome da marcação
• Atributos opcionais <html>
• Sinal > <td rowspan=“3”>
Elementos
• Alguns elementos são vazios
• Não possuem conteúdo
• Um elemento vazio consiste:
• Sinal <
• Nome da marcação <br />
• Atributos opcionais
• Sinal />
• Um atributo consiste:
• Nome do atributo
• Sinal =
• Valor do atributo entre aspas
Técnicas de Programação Faculdade de Informática/PUCRS 25
Documentos
• Um documento HTML é composto de 3 partes:
• Uma linha contendo o tipo do documento
• Uma seção declarativa de cabeçalho
• Elemento HEAD
• Uma seção de corpo que define o conteúdo do documento
• Elementos BODY ou FRAMESET
Documentos
• A estrutura básica de um documento HTML apresenta as
seguintes marcações:
Exemplo
• ConversorTemperaturaV1
• Pagina index.html
Técnicas de Programação Faculdade de Informática/PUCRS 28
Exemplo
• ConversorTemperaturaV1
• Pagina index.html
Formulários
• Formulários representam fragmentos de documentos que
contêm elementos de interação com o usuário chamados
de controles
• Representam pontos de entrada de dados a serem
enviados para processamento em um servidor
Técnicas de Programação Faculdade de Informática/PUCRS 30
Formulários
• Formulário:
• Elemento FORM
• Atua como um contêiner para os controles
• Especifica
• A entidade que irá receber os dados do formulário através do atributo
action
• O método (get ou post) pelo qual os dados serão enviados ao servidor
através do atributo method
• O formato de codificação dos dados enviados ao servidor através do
atributo enctype
• application/x-www-form-urlencoded é o valor padrão
Técnicas de Programação Faculdade de Informática/PUCRS 31
Exemplo
• ConversorTemperaturaV1
• Pagina index.html
Técnicas de Programação Faculdade de Informática/PUCRS 32
Exemplo
• ConversorTemperaturaV1
• Pagina index.html
</form>
</body>
</html>
Técnicas de Programação Faculdade de Informática/PUCRS 33
Formulários
• Controles:
• HTML define vários controles:
• botões de ação,
• botões de seleção,
• botões de rádio,
• listas de seleção,
• caixas de texto,
• seleção de arquivos,
• controles escondidos,
• objetos
Técnicas de Programação Faculdade de Informática/PUCRS 34
Formulários
• Caixas de texto simples:
• Elemento INPUT com atributo type text
• Elemento INPUT com atributo type password
• Texto é renderizado com os caracteres ofuscados
• Atributo size especifica o número de caracteres do tamanho do
controle
• Atributo value especifica o valor inicial do controle
• Atributo maxlenght especifica o número máximo de caracteres
que pode ser fornecido para o controle
Técnicas de Programação Faculdade de Informática/PUCRS 35
Exemplo
• ConversorTemperaturaV1
• Pagina index.html
Técnicas de Programação Faculdade de Informática/PUCRS 36
Exemplo
• ConversorTemperaturaV1
• Pagina index.html
Formulários
• Ex.: formulario1.html
Formulários
• Botões:
• Três tipos de botões
• Botão de submissão (submit) – enviar dados do formulário para o
servidor
• Botão de reset (reset) – restaurar os valores inicias dos controles do
formulário
• Botão de pressão (push) – sem ação padrão, com scripts associados a
seus eventos
Formulários
• Botões de submissão:
• Elemento INPUT com atributo type submit
• Atributo value especifica o rótulo do botão
• Elemento BUTTON com atributo type submit
• Permite que o rótulo do botão seja definido pelo conteúdo do
elemento
• Por exemplo, pode-se utilizar uma imagem como conteúdo
Técnicas de Programação Faculdade de Informática/PUCRS 40
Exemplo
• ConversorTemperaturaV1
• Pagina index.html
Técnicas de Programação Faculdade de Informática/PUCRS 41
Exemplo
• ConversorTemperaturaV1
• Pagina index.html
Formulários
• Botões de reset:
• Elemento INPUT com atributo type reset
• Atributo value especifica o rótulo do botão
• Elemento BUTTON com atributo type reset
• Permite que o rótulo do botão seja definido pelo conteúdo do
elemento
• Por exemplo, pode-se utilizar uma imagem como conteúdo
Técnicas de Programação Faculdade de Informática/PUCRS 43
Formulários
• Botões de pressão:
• Elemento INPUT com atributo type button
• Atributo value especifica o rótulo do botão
• Elemento BUTTON com atributo type button
• Permite que o rótulo do botão seja definido pelo conteúdo do
elemento
• Por exemplo, pode-se utilizar uma imagem como conteúdo
Técnicas de Programação Faculdade de Informática/PUCRS 44
Formulários
• Ex.: formulario2.html
Formulários
• Caixas de texto múltiplo:
• Elemento TEXTAREA
• Conteúdo do elemento define o valor inicial
• Atributo cols especifica a quantidade de caracteres na horizontal
• Atributo rows especifica o número de linhas
Técnicas de Programação Faculdade de Informática/PUCRS 46
Formulários
• Ex.: formulario3.html
Formulários
• Listas de seleção:
• Elemento SELECT
• Fornecem um meio se selecionar valores dentro de um conjunto de
opções
• Atributo size especifica o número de linhas de opções que é
mostrado pelo navegador
• Navegador usualmente escolhe o tipo de elemento visual que será
mostrado em função deste número
• Ex.: lista de seleção ou menu drop-down
• Atributo multiple especifica se é permitida a seleção de múltiplos
valores
Técnicas de Programação Faculdade de Informática/PUCRS 48
Formulários
• Listas de seleção:
• Elemento OPTION especifica as opções que podem ser
selecionadas
• Conteúdo do elemento especifica o texto que é apresentado como
opção de seleção
• Atributo label especifica um valor a ser utiliza como texto de
apresentação ao invés do conteúdo do elemento
• Atributo value especifica o valor inicial do elemento, se não utiliza
o valor do conteúdo
• Atributo selected especifica que a opção está pré-selecionada
• Deve existir pelo menos uma opção pré-selecionada para evitar erros
Técnicas de Programação Faculdade de Informática/PUCRS 49
Formulários
• Ex.: formulario4.html
<p>
<select multiple="multiple" size="3">
<option selected="selected">Porto Alegre</option>
<option>Florianópolis</option>
<option>Curitiba</option>
</select>
</p>
</form>
Técnicas de Programação Faculdade de Informática/PUCRS 50
Formulários
• Botões de seleção:
• Elemento INPUT com atributo type checkbox
• Representa controles de seleção binária (ligado ou desligado)
• Atributo value especifica o valor inicial do controle (obrigatório)
• Atributo checked especifica se o controle está ligado ou desligado
Técnicas de Programação Faculdade de Informática/PUCRS 51
Formulários
• Botões de rádio:
• Elemento INPUT com atributo type radio
• Representa controles de seleção binária (ligado ou desligado)
• Atributo value especifica o valor inicial do controle (obrigatório)
• Atributo checked especifica se o controle está ligado ou desligado
• Deve existir um dos botões ligado para evitar erros
• Botões de rádio são agrupados pelo valor do atributo name
• Somente um botão do grupo pode estar ligado, ou seja, são
mutuamente exclusivos
Técnicas de Programação Faculdade de Informática/PUCRS 52
Formulários
• Ex.: formulario5.html
<p>
<select multiple="multiple" size="3">
<option selected="selected">Porto Alegre</option>
<option>Florianópolis</option>
<option>Curitiba</option>
</select>
</p>
</form>
Técnicas de Programação Faculdade de Informática/PUCRS 53
Formulários
• Dados escondidos:
• Elemento INPUT com atributo type hidden
• Não representa um controle que é visual
• Usualmente utilizado para armazenar dados que são submetidos
junto ao formulário como uma forma de implementação de
mecanismo de seção
• Atributo value especifica o valor inicial do controle
Técnicas de Programação Faculdade de Informática/PUCRS 54
Formulários
• Controles somente de leitura:
• Atributo readonly
• Impede que o valor do controle seja alterado pelo usuário
• Elementos válidos: INPUT, TEXTAREA
• Controles desabilitados:
• Atributo disabled
• Desabilita um controle, impedindo acesso ao mesmo
• Elementos válidos: BUTTON, INPUT, OPTGROUP, OPTION,
SELECT, TEXTAREA
Técnicas de Programação Faculdade de Informática/PUCRS 55
Recursos
• World Wide Web Consortium
• http://www.w3.org/
Java EE
• Plataforma Java Enterprise Edition
• Versão atual JEE6
• Múltiplas tecnologias:
• Web
• Web Services
• Componentes corporativos
• Gerenciamento
Técnicas de Programação Faculdade de Informática/PUCRS 58
Java EE
Técnicas de Programação Faculdade de Informática/PUCRS 59
Java EE
• Servidor Java EE
• Aplicação servidora que implementa a plataforma Java EE
• Fornece serviços a componentes de software através do conceito
de contêiner
Técnicas de Programação Faculdade de Informática/PUCRS 60
Java EE
• Contêiner Java EE
• Um contêiner é a interface entre um componente de software e
uma funcionalidade de mais baixo nível fornecida pela plataforma
• Diferentes tipos:
• Contêiner web
• Contêiner de aplicação cliente
• Contêiner EJB
Técnicas de Programação Faculdade de Informática/PUCRS 61
Java EE
Técnicas de Programação Faculdade de Informática/PUCRS 62
Servlets
• Servlets são programas Java associados a um
servidor que executam computações e geram
dados que são retornados aos clientes
• Usualmente gera documentos HTML
Servlets - Criação
• Classe usualmente estende HttpServlet
Servlets - Criação
• Ex.: JavaServlet1
@WebServlet("/alo")
public class AloMundo extends HttpServlet {
...
}
Técnicas de Programação Faculdade de Informática/PUCRS 69
Servlets - Resposta
• HttpServletResponse
• Objeto cujo conteúdo é o “resultado” da execução do
servlet
• Utilização:
1. Configurar o tipo de conteúdo do protocolo HTTP via método
setContentType()
• É um tipo MIME do HTTP
• http://www.iana.org/assignments/media-types/
2. Obter um fluxo de escrita via métodos getWriter(),
getOutputStream()
3. Gerar conteúdo no fluxo de saída
4. Fechar o fluxo de saída
Técnicas de Programação Faculdade de Informática/PUCRS 70
Servlets - Resposta
• Ex.: JavaServlet1
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet AloMundo</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Alô Mundo!</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
Técnicas de Programação Faculdade de Informática/PUCRS 71
Servlets - Requisição
• HttpServletRequest
• Objeto que contêm os dados da requisição do cliente
• Utilização:
• Obter dado simples enviado pelo cliente via método
getParameter(String)
• Obter dados múltiplos enviados pelos cliente método
getParameterValues(String)
• Retorna um array de strings com os valores do parâmetro
• Os dados são usualmente fornecidos através de query-strings
• Dos componentes de um formulário HTML
• O nome do parâmetro é o identificador associado ao componente HTML
• diretamente do URL após o símbolo “?”
• O nome do parâmetro é o identificador associado na URL
• Converter os dados de String para o tipo desejado
Técnicas de Programação Faculdade de Informática/PUCRS 72
Servlets - Requisição
• Ex.: JavaServlet2
String nome = request.getParameter(“nome”);
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet AloMundo</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Alô " + nome + "!</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
Técnicas de Programação Faculdade de Informática/PUCRS 73
Servlets - Requisição
• Ex.: JavaServlet3
String[] nomes = request.getParameterValues(“nomes");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet AloMundo</title>");
out.println("</head>");
out.println("<body>");
for(String nome: nomes) {
out.println(nome + "<br />");
}
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
Técnicas de Programação Faculdade de Informática/PUCRS 74
Exemplo
• ConversorTemperaturaV1
Técnicas de Programação Faculdade de Informática/PUCRS 75
Exemplo
• ConversorTemperaturaV1
• Camada de negócio
• Um objeto Conversor possui os métodos de conversão de
temperatura
Técnicas de Programação Faculdade de Informática/PUCRS 76
Exemplo
• ConversorTemperaturaV1
• Camada de negócio
Exemplo
• ConversorTemperaturaV1
• Camada de apresentação
• Um objeto servlet ConversorServlet processa os dados obtidos do
formulário da página index.html e gera uma nova página contendo
o resultado da conversão
Técnicas de Programação Faculdade de Informática/PUCRS 78
Exemplo
• ConversorTemperaturaV1
• Camada de apresentação
@WebServlet(name="ConversorServlet", urlPatterns={"/conversor"})
public class ConversorServlet extends HttpServlet {