• Nenhum resultado encontrado

Especialização em Engenharia de Software CEES 2015

N/A
N/A
Protected

Academic year: 2018

Share "Especialização em Engenharia de Software CEES 2015"

Copied!
233
0
0

Texto

(1)

AMBIENTE WEB

Prof. Danilo Ricardo Barbosa de Araújo

(2)

O protocolo HTTP. A linguagem HTML, XML, Java Script e CSS.

IDE para desenvolvimento WEB. Introdução ao JEE.

Objetivos:

Entender quais são as tecnologias típicas que estão relacionadas

com um ambiente de desenvolvimento WEB.

Entender os benefícios associados ao uso de um ambiente

integrado de desenvolvimento WEB.

Possuir habilidade para criar protótipos de aplicações WEB usando

o protocolo HTTP e as tecnologias HTML, Java Script e CSS com

suporte de um servidor WEB típico, como o Apache.

(3)

Aulas expositivas, dialogadas e interativas.

Uso de laboratório de informática para prática das tecnologias.

Serão usados como meios auxiliares de ensino um projetor de

slides e quadro branco.

Avaliação:

Avaliação por frequência e participação ativa nas aulas

Realização de exercícios que serão passados no final de cada aula

50% da nota final.

Protótipo de aplicação WEB que deverá ser desenvolvido em sala

de aula

mais 50% da nota total na disciplina.

(4)

Quando: As aulas serão nas terças e quintas durante 4

semanas

19h

22h

(5)

Head First HTML e CSS. Elisabeth Robson e Eric Freeman.

O'Reilly Media; Second edition, 2012. 764p.

The Java EE 7 Tutorial: Basic Concepts. Eric Jendrock, Ricardo

Cervera-Navarro, Ian Evans, Kim Haase, William Markito. Oracle,

2014. 980p..

(6)

Desenvolvendo Aplicações Web com JSP e JSTL. Peter Jandl

Junior. Editora: Novatec, 2009.

Beginning JSP, JSF and Tomcat: Java Web Development. Giulio

Zambon. 2nd edition. Apress, 2012. 436p.

Guide to Web Development with Java. Tim Downey. Springer,

2012. 401p.

Desenvolvimento para WEB com Java. Everton Coimbra de

Araújo. Visual Books, 2010.

Professional jQuery. Cesar Otero e Rob Larsen. Wrox, 2012. 336p.

(7)

Arquitetura

Web e HTTP

HTML e CSS

JavaScript

XML

Ambiente

Java Web

1

2

3

4

(8)

Arquitetura Web e HTTP

HTML e CSS

JavaScript

XML

(9)

Arquitetura Web e HTTP

HTML e CSS

JavaScript

XML

(10)

Entender o papel do cliente Web e do servidor Web

Entender o protocolo HTTP

Compreender a estrutura básica de uma requisição HTTP

Conhecer os métodos HTTP

Compreender a estrutura básica de uma resposta HTTP

(11)

A Web (WWW- World Wide Web) é uma estrutura arquitetônica

que permite o acesso a documentos vinculados espalhados por

uma infinidade de máquinas na Internet

World Wide Web Consortium (W3C)

Organização

voltada para:

O desenvolvimento da Web

A padronização de protocolos

Incentivo à interoperabilidade entre os sites

(12)

Cliente

(browser)

Servidor web

(APP)

Cliente

(13)

Verifica uma requisição do cliente e retorna algo de volta!

Esse algo é um recurso (PDF, HTML, imagem, etc)!

requisição

?

resposta

GET /upe/alunos.html HTTP 1.1

Host www.upe.br

A resposta contém o

recurso (ou código de erro)

(14)

Solicita o conteúdo ao servidor e exibe na tela

O cliente aqui é o navegador (browser) e não a pessoa!

(15)

(a) Um plug-in de navegador

(b) Uma aplicação auxiliar

Interface plugin-browser

Estação do Cliente

Kernel do

Browser

Plugin

Estação do Cliente

(16)

requisição

resposta

2

Servidor procura a página inicial

e devolve para o cliente

(17)

É o tal de HTML?

representar a estrutura

da página. Os clientes

e servidores se

comunicam usando um

protocolo chamado

(18)

usam para se comunicarem na Web

HyperText Transfer Protocol

É fundamentado em um tipo de comunicação simples

solicitação x resposta

HTML informa ao navegador como exibir o

conteúdo para o usuário

HyperText Markup Language

(19)

estão fundamentadas sobre o protocolo HTTP

Entender HTTP

entender fundamentos de

aplicações cliente-servidor na Web

HTML define como exibir conteúdo, mas possui

limitações

(20)

Web ocorrem usando o protocolo HTTP

Iteração com padrão

“solicitação – resposta”

O cliente envia uma requisição HTTP e o servidor

devolve uma resposta HTTP

Requisições subsequentes do mesmo cliente são

independentes

Por definição, o servidor não lembra do cliente!

(21)

TCP é responsável por garantir que um

arquivo enviado de um nó da rede para

outro alcance o destino íntegro

Ainda que dividido em vários pacotes...

HTTP acrescenta características

específicas da Web, mas depende do

demais protocolos da pilha TCP/IP

TCP

IP

Ethernet

100Base-TX

(22)

Porta. A porta padrão

para servidores Web é

80 (caso omitida).

http://www.upe.br:80/portal/.../upe-logo.png

Protocolo de

comunicação

Nome do servidor.

É mapeado para um

IP único (xxx.yyy.zzz.aaa)

Caminho (path) no

Servidor (hierarquia de

pastas no servidor)

(23)

a autoridades locais!

Após verificar se o domínio pretendido está disponível, você

precisará pagar uma taxa anual...

(24)

Tecnicamente há uma distinção entre estes termos!

URL - Uniform Resource Locator

foco em localizar o conteúdo

URN - Uniform Resource Name

foco em identificar um conteúdo

URI - Uniform Resource Identifier

pode ser URL, URN ou ambos!

Exemplos de URI:

http://upe.poli.br/absolute/URI/with/absolute/path/resource.txt

(URL)

urn:issn:3546-2671 (URN)

(25)

solicitação

resposta

> Método HTTP

> A página a acessar (URL)

> Parâmetros do Form

Elementos-chave:

> Código de status

> Content-type

(26)

GET

POST

HEAD

TRACE

PUT

DELETE

OPTIONS

(27)

conteúdo ao Web Server!

Exemplo: o clique em um link para exibição de uma imagem

invocará uma solicitação HTTP usando GET

GET

...

(28)

Linhas de

Cabeçalho

O método

HTTP

O caminho do

recurso no

Servidor

Usando GET, parâmetros

podem ser adicionados na

URL

protocolo

enviada pelo

browser

GET /?gfe_rd=ctrl&ei=AHcTU4CuKImj8weMvYCoCg&gws_rd=cr HTTP/1.1

[CRLF]

Host: www.google.com.br

[CRLF]

Connection: close

[CRLF]

User-Agent: Web-sniffer/1.0.47 (+http://web-sniffer.net/)

[CRLF]

Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7

[CRLF]

Cache-Control: no-cache

[CRLF]

(29)

usuário para o servidor!

É como se fosse um GET++, pois além de enviar

dados também pode solicitar conteúdo!

POST

...

(30)

30

Linhas de

Cabeçalho

No caso do POST, os parâmetros

são colocados no final da solicitação

O método HTTP

O caminho do recurso no servidor

O corpo da

Mensagem

(

payload

)

A versão do protocolo

enviada pelo browser

POST /portal/ HTTP/1.1[CRLF]

Host: www.upe.br[CRLF]

Connection: close[CRLF]

(31)

Não entendi. Se o método

POST envia dados do

usuário e o método GET

(32)

deve preferir POST para estes casos. As razões são:

A quantidade total de caracteres é limitada usando GET

Os dados enviados pelo GET ficam expostos no final da

URL, então todos poderão ver essas informações. Ou

seja, você enviaria a senha de um usuário usando

GET?

Proteger o uso para bookmark (no caso de POST não

seria possível)

(33)

expostos na barra do

navegador

O símbolo ? separa a URL

original dos dados

(34)

o status do retorno

status do retorno

do servidor

A linha de cabeçalho Content-type também é

conhecida como MIME type. Informa ao

browser que tipo de documento está sendo

enviado!

Linhas de

cabeçalho

HTTP/1.1 200 OK

Date: Sun, 02 Mar 2014 19:50:52 GMT

Server: Apache/2.2.15 (CentOS)

(35)

Código

Significado

Exemplos

1xx

Informação

100 = server agrees to handle client's request

(36)

Padrão da Internet que descreve o tipo de conteúdo de mensagens

Especificado no Content-type

Tipo/Subtipo

Extensão

application/pdf

pdf

application/zip

zip

image/gif

gif

text/html

html, htm

text/plain

c, h, txt

(37)

adequado para o caso relacionado. Caso possam ser aplicados os dois métodos

circule ambos. Justifique as respostas.

GET POST Um usuário está enviando os valores de login e senha de um site

GET POST Um usuário está solicitando uma nova página via hiperlink

GET POST Em uma sala de bate-papo o usuário enviará uma resposta da conversa

GET POST Um usuário clica no botão NEXT de um site para ir para a próxima tela

GET POST Um usuário clica no botão de LOGOUT em um site seguro de um banco

GET POST Um usuário clica no botão voltar (BACK) do navegador

(38)

meio de sniffers:

Acesse o site http://web-sniffer.net/

Informe alguma URL como http://www.upe.br:80/portal/

Descubra a reposta para as questões abaixo, apenas olhando a

resposta HTTP:

1.

Qual foi o servidor que respondeu esta requisição?

2.

Qual foi o Content-type?

3.

Qual o título que deveria aparecer no browser para esta requisição?

4.

Informe pelo menos o caminho de uma imagem que aparece no site.

(39)

Arquitetura Web e HTTP

HTML e CSS

JavaScript

XML

(40)

desenvolvimento (IDE) para programação Web

Entender as marcações básicas da linguagem HTML

Entender os elementos básicos e formatos usados no

CSS

Conseguir construir uma página Web simples usando

HTML e CSS

(41)

usam para se comunicarem na Web

HyperText Transfer Protocol

É fundamentado em um tipo de comunicação simples

solicitação x resposta

HTML informa ao navegador como exibir o

conteúdo para o usuário

HyperText Markup Language

(42)

editor de textos comum como o Notepad...

O que você escreve

(43)

ferramentas voltadas para o desenvolvimento Web!

A criação de um projeto Web completo usando um “

notepad

” é

uma insanidade

Integrated Development Environments (

IDE’s

):

Ambiente de Desenvolvimento Integrado!

Fornecem suporte para todas as fases de um projeto, ou seja da

criação até a execução, em uma única ferramenta!

Facilitam a edição dos programas, com coloração de elementos

sintáticos, recurso de auto-completar, etc.

Facilitam as etapas de compilação/interpretação, deployment,

execução e depuração.

(44)
(45)

Solução completa para aplicações Java SE e Java EE

É possível desenvolver para outras plataformas e linguagens,

como PHP

O Eclipse usa o conceito de perspectivas

Produtividade na escrita e execução

possui browser integrado!

Recursos para geração automática e refatoração de código

Gratuito e código aberto (software livre)

Comunidade forte

(46)

Acesse o site eclipse.org para obter a versão mais recente do

Eclipse IDE for Java EE

Developers”

http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsr

Faça o download compatível com o seu sistema operacional

(47)

Escolha sempre um workspace diferente para cada ambiente de

trabalho

Ex: projetos profissionais, projetos pessoais, trabalhos da pós, etc

(48)

apresentada

A tela de boas vindas permite a consulta de tutoriais, exemplos, etc

(49)

A perspectiva JEE possui alguns painéis específicos para ajudar

na criação de aplicações Java Web...

Perspectiva selecionada

Listagem de projetos e

recursos dos projetos

O código-fonte ficará

aqui...

Detalhamento da

estrutura de um recurso

(50)

Clicando no menu “File > New > “ ou

Clicando com o menu de contexto sobre o Project Explorer

Botão direito do mouse sobre a janela “Project Explorer”

1

2

(51)

Web Project”

Informe o nome lanchonete no

campo “Project

name

Clique em Finish

Serão criados projetos do tipo “

Dynamic

Web Project” a medida que

(52)

Expanda a árvore do projeto

Clique com o botão direito do mouse em WebContent

(53)

Expanda a árvore do projeto

Clique com o botão direito do mouse em WebContent

(54)
(55)

Clique com o botão direito sobre o documento e acione

(56)
(57)

cardápio da lanchonete da POLI

Siga as instruções abaixo:

O título da página deve ser “Lanchonete Seu Mário”

Use um marcador de cabeçalho de 1º nível (H1) para o título do

cardápio

Crie uma mensagem de boas vindas usando <p>

Use marcadores de cabeçalhos de 2º nível para “nome do produto

+ preço” e <p> para a descrição dos pratos

Exemplos:

Cuscuz com charque R$ 7,00

Delicioso prato de milho com charque acebolada

Macaxeira gratinada R$ 8,50

Macaxeira suculenta com queijo coalho e charque gratinada no forno

(58)

apresentar uma aparência semelhante à esta:

title

h1

p

(59)

Uma tag é delimitada por parêntesis angulares (< e >)

Uma tag pode delimitar a porção do HTML que sofrerá

a ação da tag, através da seguinte sintaxe:

<p> ... </p>

(delimitação de um parágrafo)

Dizemos que esta tag possui um corpo!

Ou pode apenas inserir uma marcação (tag vazia):

<br> ou <br/>

(quebra de linha)

(60)

valores, definindo características para a tag:

<

table

width

=

“100%"

border

=

“2"

>

...

</

table

>

Valor do

atributo border

Determina o início

de uma tabela

Determina o fim

de uma tabela

(61)

<!-- -->

comentários HTML

<a>

âncora (normalmente para hiperlinks)

<body>

define os limites do corpo do HTML

<br>

quebra de linha

<h1>

um título de seção de 1o nível

<head>

seção do cabeçalho do HTML

<html>

define os limites do HTML

<p>

define um parágrafo

<title>

o título do documento HTML

(62)

A explicação da grande popularidade inicial de HTML foi permitir

saltar de uma página para

o conceito de hiperligações

Uma tag <a> permite que o usuário navegue para outra página!

Sintaxe básica:

<a href

=“página de destino”

target

=“

_blank|_

self”>Texto do link</a>

Exemplo:

<a href

=“

cardapio

/bebidas.html”>Bebidas</

a>

É possível aninhar tags!

Exemplo:

<a href

=“bebidas.html”>

(63)

O que significa “../

images

/caipirinha.jpeg” no exemplo anterior?

<a href

=“bebidas.html”>

<img src

=“../

images

/caipirinha.jpeg”

alt

=“Bebidas”>

</a>

Se a página atual estiver em uma pasta interna, como cardapio, o

símbolo ”../” redireciona para o diretório pai

Neste exemplo o caminho é redirecionado para a raiz e as imagens

podem ser acessadas!

(64)

Linguagem de estilo utilizada para definir a

apresentação de documentos elaborados em

uma linguagem de marcação como HTML

Idéia:

HTML

Conteúdo do documento

(65)

Seletor

: elemento HTML a ser formatado

Declaração CSS

: é um par (propriedade, valor)

A

propriedade

é a característica do seletor que deseja-se

modificar usando-se o

valor

informado

(66)

Arquivo externo

CSS definido no head

(67)

<head>

<link

rel

=

"stylesheet

type

=

"text/css

href

=

"mystyle.css"

/>

</head>

Como definir diretamente no head?

<head>

<style

type

=

"text/css"

>

hr {color:sienna;}

p {margin-left:20px;}

body {background-image:url("images/back40.gif");}

(68)

<p

style

=

"color:blue;margin-left:20px"

>

Isto é um parágrafo.

</p>

(69)

#divGeral {

text-align: center;

color: red;

}

É aplicado ao elemento HTML que possua o

id=“

divGeral

(70)

.center {text-align:center;}

(71)

de futebol

Bola Murcha Futebol Clube

. Após alguns

meses o clube

Unidos do Agreste Futebol Clube

acusou o primeiro clube de ter plagiado o seu brasão

e as cores do time. Depois de um acordo entre as

partes, ficou acertado que o desenvolvedor iria

reformular o site (usar um novo brasão e cores), mas

mantendo o mesmo

conteúdo

.”

(72)

serviços de “pet shop” para a empresa

Cachorro

Feliz

. Após alguns meses uma Ong de defesa dos

direitos dos animais, denominada

Amigos do

Melhor Amigo

, entrou em contato para produzir um

site para divulgação do seu trabalho. O

desenvolvedor percebeu que estava precisando dos

mesmos motivos gráficos

(figuras, cores) para

conteúdos diferentes.”

Quais os benefícios de usar HTML + CSS neste

(73)

previamente criados:

(74)

usando apenas HTML e outra usando HTML +

CSS?

Apenas HTML: não conseguimos separar conteúdo de

formatação

HTML + CSS: é possível separar conteúdo e

apresentação

(75)

necessidade desenvolver pensando neles!

O ideal é criar um site que possa ser acessado por qualquer dispositivo

(computador pessoal, tablet, smartphone)

O desenvolvedor precisa conhecer ferramentas que facilitem o trabalho de

criar front-end compatível com vários disposititivos

Exemplos de frameworks para design responsivo:

Bootstrap (

http://getbootstrap.com/

)

(76)

melhorias!

Formate o visual da página de acordo com suas preferências

usando CSS (cores, estilo de fonte, etc)

Promoções devem estar destacadas usando CSS!

Crie dias páginas adicionais para conter os dados dos pratos

principais e das bebidas

inclua imagens!

Em seguida use hyperlinks na página principal para redirecionar

Siga a estrutura de páginas a seguir:

/

index.html

/imagens

/cardapio

bebidas.html

comidas.html

Em projeto padrão do Eclipse a

(77)
(78)

1989-1991:

HTML 1.0/2.0

Homepages

Hyperlinks

1995:

HTML 3.0

Guerra dos

browsers

Falta padrão

1998:

HTML 4.0

Criação da

W3C

Separação

HTML x CSS

1999:

HTML 4.01

Correções

da 4.0

De pé por

10 anos

2001:

XHTML 1.0

HTML mais

estrito

APP x

DOC

2009-2012:

HTML 5.0

Recursos

inexistentes

(79)

correta que uma página está usando?

Conceito de doctype!

1ª linha do documento HTML que indica qual a versão usada...

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<!doctype html>

HTML5

o conceito de “padrão livre” deixou as

(80)

Será usado o conceito de compatibilidade retroativa!

Funciona no IE9,

Chrome 17,

Firefox 10, Safari

5, Opera II

Funciona

nos antigos

e nas

versões

novas deles

Funciona

nos antigos

e nas

versões

novas deles

Funciona nos

antigos, nas versões

novas deles e em

novos browsers que

apareçam!

Cada versão está ficando maior porque novos recursos foram

adicionados, mas tudo das versões antigas ainda funcionam!

(81)

Se o site

estiver no ar

Se o site está no seu

computador

upload

(82)

2 erros e 4

warnings

Não foi informado o DOCTYPE

(83)

anterior:

Use o doctype do HTML5.0 e coloque um alt para a imagem

(84)

era criada usando tags <div> formatadas por id:

<div

id=“header”>

<div

id=“

sidebar

”>

<div

id=“

main

”>

(85)

estrutura na página!

<header>

<aside>

<section

id=“

main

”>

(86)

Tag

Função

<article>

Composição similar ao post de um blog, artigo de revista, etc

<audio>

Usado para adicionar um som à página

<nav>

Destinado para navegação na página

<header>

Fica na parte superior da página ou de uma <section>

<footer>

Fica na parte inferior da página ou de uma <section>

<time>

Pode conter uma data, hora, ou ambos

<aside>

Conteúdo complementar à página, como uma barra lateral

<section>

Grupo temático de elementos, possivelmente com header e footer

<video>

Usado para adicionar um vídeo à sua página

(87)

Mário” para HTML5, usando essa estrutura:

LOGOMARCA DA LANCHONETE

Conteúdo de acordo com o

escolhido na navegação

Ex: lista de bebidas com os preços

Propaganda de

fornecedores

Ex: dizer que a

carne é Friboi :P

(88)
(89)

uma tabela?

O segredo é entender as tags <table>, <tr>, <th> e <td>

Tag

Função

<article>

Composição similar ao post de um blog

<audio>

Usado para adicionar um som à página

...

...

(90)

usando CSS:

tr:nth-child(even) {

background-color: red;

}

tr:nth-child(odd) {

background-color: green;

}

Tag

Função

<article>

Composição similar ao post de um blog

<audio>

Usado para adicionar um som à página

...

...

(91)

possuíam interação com dados dos usuários

HTML permite a criação de formulários para

obter dados de usuários e processá-los!

Como criar páginas para comprar produtos?

Como criar páginas para coletar votos de um concurso/enquete?

Como criar a página de um jogo?

(92)

requisição

resposta

1

Usuário escreve no texto do formulário e clica na lupa

4

O cliente recebe os dados, interpreta o código e

exibe a página com textos, figuras e outros recursos

(93)

controles de edição de formulários

Caixas de texto, caixas de seleção, botões de rádio, etc

Um botão de “

submit

” pode ser usado para enviar os

dados para o servidor

Diversos controles foram acrescentados em HTML5

Controles

para

enviar os

dados

Botão de submit

(94)

Tag

Função

Atributos importantes

<form>

Define um novo formulário

action

define a URL no servidor;

method

define o método HTTP

<input>

Define a criação de um

controle

type

define o controle (text,

submit, radio, checkbox)

<textarea> Controle para entrada de

texto com várias linhas

rows

define quantidade de linhas

e

cols

quantidade de caracteres

<select>

Lista de seleção

size

especifica número de linhas

(padrão é 1 linha)

<options>

Especifica cada opção de

um <select>

(95)

Restringe a entrada de texto

apenas a números. Pode-se

definir um mínimo e máximo

Alguns browsers

acrescentam setinhas

number

espera-se só números!

max e min

restringem valores

Similar a number mas o controle

(96)

Variantes do tipo text

Fazem mais diferença quando

exibidos em smartphones

Se não for suportado pelo

browser é exibido um campo

(97)
(98)
(99)

A lista de produtos (bebidas e comidas) devem aparecer em uma

tabela com cores alternadas em cada linha

Na barra lateral deve haver um campo de formulários que permita

o envio de sugestões para melhoria da lanchonete

Use um controle que permite escrever várias linhas e inclua um botão

para enviar os dados

Dados de localização da lanchonete, telefone, etc

NAVEGAÇÃO NO CARDÁPIO (bebidas, comidas, etc)

Produto Preço

Sugestões...

(100)
(101)

Arquitetura Web e HTTP

HTML e CSS

JavaScript

XML

(102)

Conseguir interoperar JavaScript com HTML5

Conseguir usar JavaScript para executar validações

simples no lado cliente

Conseguir usar JavaScript para melhorar a aparência do

front-end no lado cliente

(103)

Melhorar a estruturação de páginas usando tags específicas como

header, nav, section, footer

Facilitar a entrada de dados do usuário com controles específicos

como calendário, máscara de telefone, e-mail, etc

<header>

<aside>

<section

id=“main”>

(104)

toda a formatação visual deve ficar por conta de CSS!

<header>

<aside>

<section

id=“main”>

(105)

são combinadas as tecnologias:

HTML, CSS e JavaScript!

(106)
(107)

Quando uma página HTML é carregada, o browser segue

alguns passos:

1.

Carrega o documento, que inclui as marcações HTML e instruções de

estilo CSS

2.

O browser cria uma estrutura hierárquica do documento que poderá

ser manipulada dinamicamente

Esta estrutura é conhecida como DOM

Document Object Model

3.

O browser carrega todo o código JavaScript criado para a página

O código JavaScript pode interagir com o DOM, reagindo a eventos do

usuário e atuando para dar um efeito dinâmico à página

O DOM de

uma página

(108)

1995 (LiveScript)

Contribuição da Sun transformou em JavaScript

Objetivos Iniciais:

Validação de formulários no lado do cliente

(109)

Apenas parte da sintaxe é semelhante (é mesmo?)

O paradigma é diferente

Java

Linguagem Orientada a Objetos

JavaScript

Linguagem de Script

Características:

Linguagem dinamicamente tipada

Interpretada

(110)

Arquivo HTML

<head>

<body>

<script>

comandos

</script>

<script src

=“hello.js”>

</script>

<script>

comandos

</script>

JavaScript pode

entrar no head

ou body

Os comandos

podem ser

colocados em

um arquivo a

parte

Carregado no

início, antes de

processar body

Pode ser

carregado

depois da página

(111)

declaração de variáveis não possuem tipos...

var

precoUnitario = 3.5;

var

quantidade = 3;

var

precoTotal = quantidade * precoUnitario;

var

msg =

"O preço total é: "

;

alert(msg + precoTotal);

Ponto-flutuante

Inteiro

String

(112)

comandos condicionais e de repetição:

for

(var

i = 1; i < 100; i++) {

if

(i % 7 == 0) {

alert(i +

" é múltiplo de 7 "

);

}

(113)

// exibe uma janela de confirmação (Sim/Não)

if(confirm("Confirma o cancelamento da operação?")) {

alert("Operação realizada com sucesso.");

// OK

} else {

alert("Operação cancelada");

// mensagem p/ Cancelar

}

// exibe uma mensagem na barra de status do browser

(114)

function soma

(num1, num2)

{

var

value = num1 + num2;

return

value;

}

Função para realizar uma operação:

function

executarSubmit(form, method)

{

document.getElementById(

"method"

).value = method;

form.submit();

(115)

estrutura que você deu ao HTML!

(116)

html

head

body

formCadastro

(117)

JavaScript que você criou!

(118)

onchange

muda o valor

onclick

clica com o mouse

ondblclick

duplo clique com o mouse

onfocus

recebe o foco

onkeydown

clica em uma tecla do teclado

onkeyup

libera a tecla do teclado

onkeypress

após keydown e antes de keyup

onmouseout

o mouse sai da área do objeto

(119)

objetos

A linguagem não é completamente orientada a objetos, mas é

possível definir uma estrutura e métodos associados com um objeto!

Exemplo:

Atributos são acessados

pela notaçao de pontos:

fido.weight = 42;

A instrução fido.bark()

dispara a exibição de uma

caixa de diálogo contendo

(120)

usam geolocalização são cada vez mais comuns!

É possível escrever aplicações Web em HTML5 + JavaScript

que sejam sensíveis à localização...

(121)

Latitude é a distância

norte-sul do equador

Silicon Valley

New York

Lima, Peru

Porto-Novo, Benin

Longitude é a

distância leste-oeste

de Greenwich

(122)

Aprendemos em Geografia que estas unidades são medidas

em graus, minutos, segundos...

Na API JavaScript a medida será em valores decimais

Se for necessário converter, use:

function degreesToDecimal(degrees, minutes, seconds) {

(123)

Os browsers usam várias formas para descobrir a localização

O importante é você saber que isso é automático, você não

precisa se preocupar...

As formas mais comuns são:

Mapeamento de IP: cada IP é associado com uma localização física!

Protocolos como WHOIS fornecem essa informação...

Pode ser usado para capturar informação de um desktop, por exemplo!

Uso de GPS: uma das formas mais precisas

É mais comum em smartphones

(124)

localização de quem acessa a página:

<!

doctype

html>

<

html

>

<

head

>

<

meta

charset

=

"utf-8"

>

<

title

>

Qual é a minha localização?

</

title

>

<

script

src

=

"loc.js"

></

script

>

</

head

>

<

body

>

<

div

id

=

"location"

>

Sua localização irá aparecer aqui.

(125)

Uma API JavaScript de geolocalização fornece funções úteis...

window.onload = getMyLocation;

function

getMyLocation() {

if

(navigator.geolocation) {

navigator.geolocation.getCurrentPosition(displayLocation);

}

else

{

alert(

"Oops, seu browser não fornece suporte."

);

}

}

function

displayLocation(position) {

var

latitude = position.coords.latitude;

var

longitude = position.coords.longitude;

var

div = document.getElementById("location");

div.innerHTML =

"Voce esta na latitude: "

+ latitude +

" e longitude: "

(126)
(127)

do local atual até um ponto fixo...

Nova versão de displayLocation:

var

ourCoords = {

latitude: -8.0590890,

longitude: -34.9022350

};

function

displayLocation(position) {

var

latitude = position.coords.latitude;

var

longitude = position.coords.longitude;

var

div = document.getElementById("location");

div.innerHTML =

"Voce esta na latitude: "

+ latitude +

" e longitude: "

+ longitude;

var

km = computeDistance(position.coords, ourCoords);

var

distance = document.getElementById("distance");

distance.innerHTML =

"Voce esta a "

+ km +

" km da POLI"

;

}

(128)

do local atual até um ponto fixo...

A função que calcula a distância em si:

function

computeDistance(startCoords, destCoords) {

var

startLatRads = degreesToRadians(startCoords.latitude);

var

startLongRads = degreesToRadians(startCoords.longitude);

var

destLatRads = degreesToRadians(destCoords.latitude);

var

destLongRads = degreesToRadians(destCoords.longitude);

var

Radius = 6371;

// raio da Terra em km

var

distance = Math.acos(Math.sin(startLatRads) * Math.sin(destLatRads)

+ Math.cos(startLatRads) * Math.cos(destLatRads)

* Math.cos(startLongRads - destLongRads))

* Radius;

return

distance;

}

function

degreesToRadians(degrees) {

var

radians = (degrees * Math.PI) / 180;

return

radians;

(129)

guardar a distância:

<!

doctype

html>

<

html

>

<

head

>

<

meta

charset

=

"utf-8"

>

<

title

>

Qual é a minha localização?

</

title

>

<

script

src

=

"loc.js"

></

script

>

</

head

>

<

body

>

<

div

id

=

"location"

>

Sua localização irá aparecer aqui.

</

div

>

<

div

id

=

"distance"

>

Sua distância até a POLI ficará aqui.

</

div

>

</

body

>

(130)
(131)

A API de geolocalização dos navegadores oferece uma forma de

encontrar uma latitude e longitude

Funções para visualização não estão na API básica, é preciso usar

APIs de terceiros

A API do Google Maps é de longe a mais popular!

(132)

var

map;

function

showMap(c) {

var

googleLatAndLong =

new

google.maps.LatLng(c.latitude,

c.longitude);

var

mapOptions = {

zoom : 15,

center : googleLatAndLong,

mapTypeId : google.maps.MapTypeId.ROADMAP

};

var

mapDiv = document.getElementById("map");

map =

new

google.maps.Map(mapDiv, mapOptions);

}

function

displayLocation(position) {

...

showMap(position.coords);

}

API da Google...

No final da nossa

antiga função, chame

(133)

<!

doctype

html>

<

html

>

<

head

>

<

style

type

=

"text/css"

>

#map

{

width

:

400px

;

height

:

400px

;}

</

style

>

<

meta

charset

=

"utf-8"

>

<

title

>

Qual é a minha localização?

</

title

>

<

script

src

=

"http://maps.google.com/maps/api/js?sensor=true"

></

script

>

<

script

src

=

"loc.js"

></

script

>

</

head

>

<

body

>

<

div

id

=

"location"

>

Sua localização irá aparecer aqui.

</

div

>

<

div

id

=

"distance"

>

Sua distância até a POLI ficará aqui.

</

div

>

<

div

id

=

"map"

></

div

>

</

body

>

</

html

>

Definindo o tamanho

do mapa...

Importando a API do

Google Maps

(134)
(135)

Mário” que diz a sua distância até lá!

Sugestão: consulte a API para descobrir como incluir um marcador!

(136)

disponíveis para uso em sua aplicação...

A mais conhecida e popular é jQuery!

(137)

Arquitetura Web e HTTP

HTML e CSS

JavaScript

XML

(138)

Entender os usos mais comuns para arquivos XML

Entender como ocorre a especificação de um arquivo

XML por meio de XSD e XML Schema

Conhecer formas de ler e gravar arquivos XML em Java

(139)

Os primeiros livros e artigos sobre XML diziam que ela

seria a próxima grande tecnologia...

Hoje XML é uma tecnologia amplamente usada e todos da área de

informática já devem ter feito algum contato com XML

A Web em especial usa muito XML:

Web Services usam XML para trocar dados de solicitação e

resposta

Motores de busca podem usar XML para trocar dados

A configuração de aplicações Web em servidores pode ser feita

por meio de arquivos XML

(140)

conseguir uma forma fácil de representar dados

Compare a facilidade no entendimento dos dados por meio de

arquivo com pipes

“|”

versus

por meio de arquivo XML:

Bill|Evjen|Technical Architect|Lipper|10/04/2001|St. Louis, Missouri|3

<?xml version="1.0" encoding="UTF-8" ?>

<Employee>

<FirstName>Bill</FirstName>

<LastName>Evjen</LastName>

<JobTitle>Technical Architect</JobTitle>

<Company>Lipper</Company>

<StartDate>10/04/2001</StartDate>

(141)

Mas XML não é parecido com HTML?

Sim! Mas a intenção inicial do HTML era marcar texto com foco em

apresentação

XML foi criado para marcação de texto para representação de

dados!

<?xml version="1.0" encoding="UTF-8" ?>

<Employee>

<FirstName>Bill</FirstName>

<LastName>Evjen</LastName>

<JobTitle>Technical Architect</JobTitle>

<Company>Lipper</Company>

<StartDate>10/04/2001</StartDate>

(142)

Um elemento é um pedaço do XML, incluindo a tag que o

define e o conteúdo da tag

Entenda:

<Curso>CEES 2014</Curso>

Elemento

(143)

No XML se há um texto para ser representado,

deve haver

uma

tag de abertura e outra de fechamento!

<select>

<option>CEES 2014

<option>CERT 2014

</select>

<select>

<option>CEES 2014</option>

<option>CERT 2014 </option>

</select>

HTML permite isso!

XML não permite isso!

(144)

letra ou por “_” e não podem conter espaços:

<StLouisCardinals></StLouisCardinals>

<Item123></Item123>

<_Wowzer></_Wowzer>

<__></__>

<123Industries></123Industries>

<#Alpha></#Alpha>

(145)

está presente!

Pode ser representado de duas formas...

<Idade/>

Ou

(146)

Além das regras já citadas, as tags exigem que o nome

da tag de abertura seja o mesmo da tag de fechamento

Isso inclui a característica de que em XML as tags são

case-sensitive!

<html>

...

</HTML>

<HTML>

...

</HTML>

<html>

...

</html>

<Html>

...

</Html>

Isso está OK para HTML

mas não para XML!

Isso não faz sentido em HTML,

mas em XML é possível

(147)

tags!

Contudo o XML também possui diferenças com relação à

HTML quando o assunto é o texto dos elementos:

Os interpretadores de HTML ignoram espaços em branco no texto!

Para forçar os espaços é necessário usar caracteres especiais (como

&nbsp;

) ou marcar o texto com a tag

<pre>

(148)

elementos por meio de atributos

Atributos são pares de nome e valor no formato

“nome=valor”

Comentários são definidos por <!

e -->

<Curso tipo=“Pós

-

graduação”>CEES 2014</Curso>

<Curso tipo=“Graduação”>Engenharia da Computação</Curso>

Atributos

(149)

tags com um mesmo nome, é útil o uso de namespaces

<?

xml

version

=

"1.0"

encoding=

"UTF-8"

?>

<

Book

>

<

Title

>

Professional ASP.NET 2.0

</

Title

>

<

Price

>

49.99

</

Price

>

<

Year

>

2005

</

Year

>

</

Book

>

<?

xml

version

=

"1.0"

encoding=

"UTF-8"

?>

<

Author

>

<

Title

>

Mr.

</

Title

>

<

FirstName

>

Bill

</

FirstName

>

<

LastName

>

Evjen

</

LastName

>

</

Author

>

(150)

<?

xml

version

=

"1.0"

encoding=

"UTF-8"

?>

<

Author

>

<

Title

xmlns

=

"http://www.xmlws101.com/xmlns/author"

>

Mr.

</

Title

>

<

FirstName

>

Bill

</

FirstName

>

<

LastName

>

Evjen

</

LastName

>

</

Author

>

(151)

XML completo usando a IDE Eclipse

Selecione, pelo menu, a opção “File > New > File” e escreva

“exemplo.xml”

<?

xml

version

="1.0"

encoding

=

"UTF-8"

?>

<

Employee

>

<!-- Isso é um comentário -->

<

FirstName

>

Danilo

</

FirstName

>

<

LastName

>

Araújo

</

LastName

>

<

Phone

type

="cel"

>

9961-9630

</

Phone

>

<

Phone

type

="com"

>

3365-6658

</

Phone

>

<

JobTitle

>

Professor

</

JobTitle

>

<

Company

>

UPE

</

Company

>

<

StartDate

>

10/04/2014

</

StartDate

>

<

WorkLocation

>

St. Louis, Missouri

</

WorkLocation

>

<

NumberOfDependents

>

2

</

NumberOfDependents

>

</

Employee

>

Coloração

de sintaxe

Simule erros de sintaxe

como trocar para </jobTitle>

(152)

representar os dados da lanchonete do “Seu Mário”!

Em seguida crie um arquivo XML de exemplo e o valide

os dados do cardápio

As regras são as seguintes:

O XML contém dados de um cardápio

Um cardápio contém diversas categorias, incluindo pratos

executivos e bebidas

(153)

apresentação na Web em conjunto com CSS

Lembre-se que HTML permite escrever marcações que não são

permitidas na sintaxe do XML

XML é mais estrito!

De certa forma o XHTML “obriga” o pensamento de que o CSS

deve conter a formatação da página e o XML o conteúdo

(154)

Impedir elementos sobrepostos

Ex: <b>Bold<i>and italic</b></i>

Impedir tags não fechadas

Ex: as tags da HTML <br>, <hr> e<img>

Usar todos os elementos e atributos em minúsculo

Forçar que todos os atributos possuam aspas

Ex: <img src

=“image.png”

/> ao invés de <img src=image.png>

Garantir que todos os atributos possuam valores

Ex: evitar coisas como <input type="checkbox"

checked

/>

Tornar obsoleto o uso de tags de formatação como font e style

Sempre deve ser usado CSS!

(155)

garantir que os outros sigam o formato conforme definido

Há duas principais formas de garantir que o vocabulário

de um XML está sendo seguido:

Uso de DTD (Document Type Definitions)

(156)

adotada para validação de arquivos XML

Já encontramos essa siga quando falamos no DOCTYPE

de arquivos HTML! Lembre-se:

<!

DOCTYPE

html

PUBLIC

"-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"

>

<

html

xmlns

="http://www.w3.org/1999/xhtml"

>

<

head

>

<

title

>

Untitled Page

</

title

>

</

head

>

<

body

>

</

body

>

</

html

>

(157)

<!--=================== Headings =========================================-->

<!--There are six levels of headings from h1 (the most important)

to h6 (the least important).

-->

<!ELEMENT h1 %Inline;>

<!ATTLIST h1

%attrs;

%TextAlign;

>

<!ELEMENT h2 %Inline;>

<!ATTLIST h2

%attrs;

Referências

Documentos relacionados

A formação não se constrói por acumulação (de cursos, de conhecimentos ou de técnicas), mas sim através de um trabalho de reflexividade crítica sobre as práticas e

“ raa naannaa nee kuuturu ani kooDaa chooDa kunDaa nannu pachiga dengu, choodu naa pooku yela balisindi, nee modda to naa pooku dengi dengi bunnu laga tayaru cheye, dengu nanna abba

TORNA DECRETO SEM EFEITO O Prefeito Municipal de Afonso Cláudio, Estado do Espírito Santo, no uso de atribuições que lhe são conferidas; e Considerando que a candidata nomeada

(grifos nossos). b) Em observância ao princípio da impessoalidade, a Administração não pode atuar com vistas a prejudicar ou beneficiar pessoas determinadas, vez que é

Se você vai para o mundo da fantasia e não está consciente de que está lá, você está se alienando da realidade (fugindo da realidade), você não está no aqui e

7.3 Poderão participar do leilão de sucatas aproveitáveis e sucatas aproveitáveis com motor inservível apenas os Centros de Desmanches de Veículos Automotores, Comércio de

O seu uso em pacientes com doença pulmonar obstrutiva crônica, bronquiectasia e asma é realizado em grande escala na fisioterapia respiratória, mas não há um

RESUMO - O trabalho objetivou avaliar a qualidade das sementes de arroz utilizadas pelos agricultores em cinco municípios (Matupá, Novo Mundo, Nova Guarita, Alta Floresta e Terra