Dispositivos Móveis Uma visão geral sobre história e tecnologia para dispositivos móveis.
Comunicação Entre Dispositivos Móveis e Servidores ... Frederico Junior... · 3 Resumo O...
Transcript of Comunicação Entre Dispositivos Móveis e Servidores ... Frederico Junior... · 3 Resumo O...
Jayme Frederico Junior
Comunicação Entre Dispositivos
Móveis e Servidores Utilizando
Tecnologia WAP - WML e WMLScript
UEM
Maringá / PR
2005
2
Universidade Estadual de Maringá
Centro de Tecnologia
Departamento de Informática
Comunicação entre dispositivos
móveis e servidores utilizando tecnologia
WAP - WML e WMLScript
Jayme Frederico Júnior.
Monografia apresentada ao curso de Especialização em
Desenvolvimento de Sistemas para Web do Departamento de
Informática, Centro de Tecnologia da Universidade Estadual de
Maringá.
Orientador: Prof. Dr. Antonio Mendes da Silva Filho.
Co-Orientador; Prof MSc Ademir Carniel
3
Resumo
O trabalho realiza um estudo sobre a
Comunicação entre dispositivos móveis e Servidores da Web, assim
como as ferramentas voltadas para o desenvolvimento de aplicações
para equipamentos portáteis e Internet. O foco principal está na
utilização da linguagem WML que é uma derivação da XML direcionada
a dispositivos móveis. As ferramentas e softwares utilizados são:
simuladores de dispositivos móveis, protocolo WAP, WML e WMLScript,
PHP, MySQL, Apache. Além de apresentar um estudo das tecnologias
envolvidas no desenvolvimento de aplicações Wireless, outro objetivo
deste trabalho é demonstrar através de um estudo de caso uma
aplicação denominada “Enquete On Line”, em que o usuário possa
expressar sua opinião através do celular, recebendo uma resposta do
sistema. Um banco de dados é utilizado para armazenar as informações
da pesquisa de opinião.
4
Agradecimentos
Agradeço a minha esposa, Lia e minha filha
Mayara, pelo carinho e compreensão, pelos longos períodos
de ausência. Agradeço também ao prof MSc. Ademir Carniel
que sempre esteve disposto a ajudar demonstrando enorme
dedicação e empenho e principalmente .pelos incentivos
para conclusão desta monografia. Também não poderia
terminar esse parágrafo, sem antes citar meu agradecimento
ao meu orientador e amigo, prof. Dr. Antonio Mendes Silva
Filho pelo apoio, incentivo e pela oportunidade que me foi
dada.
5
Índice
ÍNDICE .................................................................................................................... 5
LISTA DE FIGURAS ............................................................................................. 13
LISTA DE ABREVIATURAS ................................................................................. 15
1. INTRODUÇÃO ............................................................................................... 18
1.1. Contextualização ..................................................................................................... 20
1.2. Justificativa ............................................................................................................. 21
1.3. Objetivo Geral ........................................................................................................ 22
1.4. Objetivo específico. ................................................................................................. 22
1.5. Organização do texto .............................................................................................. 24
2. FUNDAMENTAÇÃO TEÓRICA ..................................................................... 25
2.1. Definição e conceito de Dispositivos Móveis ........................................................ 25
2.1.1. Tipos de Dispositivos ....................................................................................... 25
2.1.2. Características ................................................................................................... 26
2.1.3. Funcionalidade do Dispositivo Móvel .............................................................. 27
2.1.4. Vantagens dos Dispositivos Móveis ................................................................. 27
2.1.5. Inovações Tecnologias e novas aplicações ....................................................... 29
2.2. Wireless ................................................................................................................... 32
2.2.1. O que é wireless? .............................................................................................. 32
2.2.2. Principais benefícios das redes sem fio: ........................................................... 33
2.2.3. Aplicações ........................................................................................................ 33
2.2.4. Opções de Plataforma sem Fio ......................................................................... 34
6
2.2.5. Opções de Hardware ......................................................................................... 34
2.3. WAP ......................................................................................................................... 36
2.3.1. Definição e Conceito de WAP.......................................................................... 36
2.3.2. O protocolo WAP ............................................................................................. 36
2.3.3. Principais características do protocolo WAP ................................................... 37
2.3.4. Aplicações do Protocolo WAP ......................................................................... 39
2.3.5. Limitações ........................................................................................................ 41
2.3.6. O Modelo WWW ............................................................................................. 42
2.3.7. O Modelo WAP ................................................................................................ 43
2.3.8. Principais funções do proxy WAP: ................................................................... 46
2.3.9. Arquitetura - A Pilha de Protocolos ................................................................. 47
2.3.10. Tipos de redes telefônicas WAP ....................................................................... 49
2.3.11. Exemplos de portadores.................................................................................... 51
2.4. Linguagens de Marcação ....................................................................................... 52
2.4.1. SGML ............................................................................................................... 52
2.4.2. HTML Conceitos Básicos ................................................................................ 53
2.4.3. XML - Linguagem de Marcação Extensível ................................................... 57
2.4.3.1. Comparações entre HTML e XML .......................................................... 58
2.4.3.2. Características da linguagem XML .......................................................... 59
2.4.3.3. Separação entre dados e apresentação ...................................................... 59
2.4.3.4. Principais benefícios da linguagem XML ................................................ 60
2.4.3.5. Tipos de aplicações ................................................................................... 63
2.4.3.6. Exemplo em XML .................................................................................... 65
2.4.4. WML ................................................................................................................ 66
2.4.4.1. Demonstrando o WML ............................................................................. 66
2.4.4.2. Elementos WML ...................................................................................... 67
2.4.4.3. Regras básicas de formatação: .................................................................. 68
2.4.4.4. Programando em WML ............................................................................ 69
2.4.4.5. Aplicações com WML: Variáveis ............................................................ 70
2.4.4.6. Criando um Deck WML ........................................................................... 70
7
2.4.4.7. Imagens ícones ......................................................................................... 74
2.4.4.8. Imagens wbmp .......................................................................................... 75
2.4.4.9. Acentuação na WML ................................................................................ 76
2.5. Linguagem de programação .................................................................................. 77
2.5.1. PHP ................................................................................................................... 77
2.5.1.1. O que é PHP? ............................................................................................ 77
2.5.1.2. Instalação e configuração em ambiente windows .................................... 77
2.5.1.3. O que pode ser feito com PHP? ................................................................ 79
2.5.1.4. Sintaxe Básica .......................................................................................... 79
2.5.1.5. Separador de instruções ............................................................................ 80
2.5.1.6. Nomes de variáveis ................................................................................... 80
2.5.1.7. Comentários .............................................................................................. 81
2.5.1.8. Criando scripts .......................................................................................... 82
2.5.1.9. Enviando Dados para o Servidor http ....................................................... 83
2.5.1.10. Utilizando formulários HTML ................................................................. 84
2.5.1.11. Outras facilidades do PHP ........................................................................ 86
2.5.2. ASP ................................................................................................................... 88
2.5.2.1. O que é ASP? ............................................................................................ 88
2.5.2.2. Vantagens do ASP .................................................................................... 89
2.5.2.3. Servidor .................................................................................................... 90
2.5.2.4. Banco de Dados ........................................................................................ 91
2.5.2.5. VBScript e ASP ........................................................................................ 91
2.6. Linguagem de Script .............................................................................................. 94
2.6.1. Java Script ........................................................................................................ 94
2.6.1.1. O que é JavaScript? .................................................................................. 94
2.6.1.2. Diferença entre JavaScript e Java ............................................................. 94
2.6.1.3. Executando o JavaScript ........................................................................... 95
2.6.1.4. Suporte a JavaScript ................................................................................. 96
2.6.1.5. Detectar a versão do Browser ................................................................... 98
2.6.1.6. Outras aplicações para o Java Script ...................................................... 102
8
2.6.2. WMLScript ..................................................................................................... 103
2.6.2.1. O que é o WMLScritp: ........................................................................... 103
2.6.2.2. O que pode ser feito com WMLScript: .................................................. 104
2.6.2.3. Principais características da linguagem WMLScript: ............................ 105
2.6.2.4. Exemplo de programa escrito em WMLScript: ...................................... 106
2.7. Banco de Dados ..................................................................................................... 107
2.7.1. MySQL ........................................................................................................... 107
2.7.1.1. O que é MySQL? .................................................................................... 107
2.7.1.2. Como funciona o MySQL?..................................................................... 108
2.7.1.3. Perguntando (querys): ............................................................................ 109
2.7.1.4. O uso do MySQL com linguagens de programação ............................... 111
2.7.1.5. Acessando o MySQL via PHP................................................................ 111
2.7.1.6. Selecionando a base de dados ................................................................. 112
2.7.1.7. Realizando consultas .............................................................................. 112
2.7.1.8. Apagando o resultado ............................................................................. 113
2.7.1.9. Número de linhas .................................................................................... 113
2.7.1.10. Utilizando os resultados ......................................................................... 113
2.7.1.11. Alterando o ponteiro de um resultado .................................................... 114
2.8. Servidores WEB .................................................................................................... 115
2.8.1. Personal Web Server - PWS .......................................................................... 115
2.8.1.1. O que é PWS .......................................................................................... 115
2.8.1.2. Suporte do Servidor PWS. ...................................................................... 115
2.8.1.3. Requisitos para instalação ...................................................................... 116
2.8.2. Tomcat ............................................................................................................ 117
2.8.2.1. O Software Tomcat ................................................................................. 117
2.8.2.2. Linguagens: Java, HTML e XML .......................................................... 117
2.8.2.3. Servlets e Java Server Pages ................................................................... 118
2.8.2.4. O servidor Tomcat .................................................................................. 118
2.8.2.5. Ponto de vista técnico ............................................................................. 119
2.8.2.6. Ponto de vista operacional ...................................................................... 119
9
2.8.3. Apache/PHP em Windows ............................................................................. 120
2.8.3.1. Demonstrando o Apache ........................................................................ 120
2.8.3.2. Hardware necessário ............................................................................... 120
2.8.3.3. Características técnicas ........................................................................... 120
3. METODOLOGIA ( MATERIAIS E MÉTODOS ) ........................................... 122
3.1. Métodos ................................................................................................................. 122
3.2. Materiais ................................................................................................................ 123
3.2.1. Software .......................................................................................................... 123
3.2.2. Equipamentos ................................................................................................. 125
4. TECNOLOGIAS ENVOLVIDAS NO ESTUDO DE CASO ........................... 126
4.1. Wireless ................................................................................................................. 126
4.2. Linguagem para web ............................................................................................ 126
4.3. Servidor WEB ....................................................................................................... 127
4.4. Banco de dados ..................................................................................................... 127
5. DESENVOLVIMENTO DO ESTUDO DE CASO “ENQUETE ON LINE” .... 129
5.1. Descrição do Sistema ............................................................................................ 129
5.2. Visão Geral do Sistema ........................................................................................ 129
5.3. Diagrama de Use Case .......................................................................................... 130
5.4. Diagrama de Classes ............................................................................................. 132
5.5. Dicionário de Dados ............................................................................................. 133
5.6. Fluxo de Chamada das Telas ............................................................................... 133
10
5.7. Layout das Telas ................................................................................................... 134
5.7.1. WEB ............................................................................................................... 134
5.7.2. WAP ............................................................................................................... 136
5.8. Relação de Programas .......................................................................................... 140
5.9. Relação de Arquivos ............................................................................................. 140
6. RESULTADOS OBTIDOS ........................................................................... 141
6.1. Simuladores ........................................................................................................... 141
6.2. Teste de Micronavegadores. ................................................................................ 144
6.3. WEB Browser ....................................................................................................... 144
6.4. Servidores .............................................................................................................. 145
6.4.1. Apache ............................................................................................................ 145
6.4.2. PWS ................................................................................................................ 146
6.4.3. Tomcat ............................................................................................................ 147
6.5. Linguagem de Programação ................................................................................ 148
6.5.1. PHP ................................................................................................................. 148
6.5.2. ASP ................................................................................................................. 149
6.5.3. WML/ WMLScript ......................................................................................... 149
6.5.4. JavaScript ....................................................................................................... 149
6.6. Banco de Dados ..................................................................................................... 150
6.6.1. MySQL ........................................................................................................... 150
7. CONCLUSÃO .............................................................................................. 152
8. TRABALHOS FUTUROS ............................................................................ 155
8.1. Validação do usuário ............................................................................................ 155
11
8.2. Segurança .............................................................................................................. 155
8.3. Relatórios ............................................................................................................... 155
9. REFERÊNCIAS BIBLIOGRÁFICAS ............................................................ 156
9.1. Bibliografias .......................................................................................................... 156
9.2. Bibliografias Auxiliares ........................................................................................ 160
10. APÊNDICE I INSTALAÇÃO PWS / TOMCAT / APACHE ...................... 164
10.1. PWS ................................................................................................................... 164
10.1.1. Instalando o PWS ........................................................................................... 164
10.1.2. Configurando o PWS ...................................................................................... 164
10.2. Tomcat ............................................................................................................... 167
10.2.1. Instalando o Tomcat ....................................................................................... 167
10.2.2. Instalação do servidor de JSP no IIS .............................................................. 168
10.2.3. Para iniciar o Tomcat:..................................................................................... 169
10.3. Apache ............................................................................................................... 170
10.3.1. Obtendo o Apache .......................................................................................... 171
10.3.2. Instalando o Apache ....................................................................................... 172
10.3.3. Iniciando/parando o Apache (com Win95/98/ME/XP) .................................. 173
10.3.4. Testando a instalação do Apache.................................................................... 174
11. APÊNDICE II SCRIPT DO BANCO DE DADOS ENQUETE” ................. 176
11.1. Banco de Dados enquet .................................................................................... 176
12. APÊNDICE III CÓDIGO FONTE “ENQUETE ON LINE” ........................ 177
12.1. Arquivo Index.Wml .......................................................................................... 177
12.2. Arquivo index2.php .......................................................................................... 179
12
12.3. Arquivo Cria.php ............................................................................................. 183
12.4. Arquivo Enquete.php ....................................................................................... 189
12.5. Arquivo Enquetes.php ..................................................................................... 191
12.6. Arquivo Vota.php ............................................................................................. 193
12.7. Arquivo Salva_Voto.php .................................................................................. 198
12.8. Arquivo Resultado.php .................................................................................... 200
13
Lista de Figuras
FIGURA 1 TIPOS DE PERSONAL DIGITAL ASSISTANT (PDA) ................................ 25
FIGURA 2 TIPOS CELULARES ....................................................................................... 26
FIGURA 3 TIPOS DE DISPOSITIVOS MÓVEIS VOLTADOS PARA EMPRESAS .... 28
FIGURA 4 SITE DA GOOGLE PARA DISPOSITIVOS MÓVEIS. ................................. 29
FIGURA 5 TECLAS DE PLAY, PAUSE E TROCA DE FAIXA. .................................... 31
FIGURA 6 REDE WIRELESS ........................................................................................... 32
FIGURA 7 MODELO WAP E MODELO WWW ............................................................ 44
FIGURA 8 MODELO WAP ............................................................................................... 45
FIGURA 9 EXEMPLO DE UMA REDE WAP ................................................................. 47
FIGURA 10 CAMADAS DO PROTOCOLO WAP ........................................................... 48
FIGURA 11 EXEMPLO DE UM DECK ............................................................................. 67
FIGURA 12 EXEMPLO DOCUMENTO WML ................................................................. 69
FIGURA 13 CARTÃO LOGIN ........................................................................................... 71
FIGURA 14 CARTÃO SENHA .......................................................................................... 72
FIGURA 15 CARTÃO RESULTADO ................................................................................ 73
FIGURA 16 CARTÃOEXEMPLO IMAGEM .................................................................... 74
FIGURA 17CARTÃO IMAGEM LOGO DIN .................................................................... 75
FIGURA 18 RESULTADO DA EXECUÇÃO DA FUNÇÃO PHPINFO(). ..................... 78
FIGURA 19 SCRIPT PHP ................................................................................................. 82
FIGURA 20 APRESENTAÇÃO DO EXEMPLO SCRIPT1 ............................................. 82
FIGURA 21 SUBMIT .......................................................................................................... 85
FIGURA 22 ENVIA TEXTO ............................................................................................... 85
FIGURA 23 RETORNA ..................................................................................................... 85
FIGURA 24 VERSÃO DO BROWSER EM JAVASCRIPT .............................................. 99
FIGURA 25 CRIA UMA JANELA JAVASCRIPT ......................................................... 101
FIGURA 26 VISÃO DA JANELA JAVASCRIPT .......................................................... 101
FIGURA 27 VISÃO GERAL DO SISTEMA ................................................................... 129
FIGURA 28 USE CASE VISÃO DO ADMINISTRADOR ............................................. 130
FIGURA 29 USE CASE VISÃO DOS USUÁRIOS WEB .............................................. 131
14
FIGURA 30 USE CASE VISÃO DOS USUÁRIOS WAP ............................................... 131
FIGURA 31 DIAGRAMA DE CLASSES ......................................................................... 132
FIGURA 32 FLUXO DE CHAMADA DAS TELAS ...................................................... 133
FIGURA 33 PÁGINA PRINCIPAL ................................................................................. 134
FIGURA 34 CRIAÇÃO DA ENQUETE .......................................................................... 134
FIGURA 35 VOTAÇÃO ................................................................................................... 135
FIGURA 36 RESULTADO................................................................................................ 135
FIGURA 37 PÁGINA DE APRESENTAÇÃO ................................................................ 136
FIGURA 38 SELECIONA ENQUETE ............................................................................. 137
FIGURA 39 SOLICITAÇÃO DE CONFIRMAÇÃO ....................................................... 138
FIGURA 40 RESPOSTA E FINALIZAÇÃO .................................................................... 139
FIGURA 41 ARQUITETURA DO SISTEMA SGBD ..................................................... 140
FIGURA 42 OPENWAVE SDK 6.22 ............................................................................... 141
FIGURA 43 NOKIA MOBILE BROWSER ..................................................................... 141
FIGURA 44 NOKIA 5100 SDK V. 1.0 ............................................................................. 141
FIGURA 45 NOKIA .......................................................................................................... 142
FIGURA 46 WINWAP SMARTPHONE .......................................................................... 142
FIGURA 47 NOKIA .......................................................................................................... 142
FIGURA 48 NOKIA WAP GATEWAY SIMULATOR V 4.0 ......................................... 142
FIGURA 49 NOKIA MOBILE INTERNET TOOLKIT V 4.0 MAY/2003 ...................... 143
FIGURA 50 NAVEGADOR OPERA VER. 7.53 .............................................................. 144
FIGURA 51 INSTALAÇÃO SERVIDOR APACHE ........................................................ 145
FIGURA 52 INSTALAÇÃO DO PWS ............................................................................. 146
FIGURA 53 INSTALAÇÃO DO PHP .............................................................................. 148
FIGURA 54 VERIFICAÇÃO DO MYSQL ....................................................................... 150
FIGURA 55 INSTALAÇÃO DO MYSQL ........................................................................ 151
FIGURA 56 BEM VINDO A INSTALAÇÃO DO APACHE ......................................... 172
FIGURA 57 INFORMAÇÕES DO SERVIDOR .............................................................. 173
FIGURA 58 APACHE EM EXECUÇÃO......................................................................... 174
FIGURA 59 TESTE DE INSTALAÇÃO DO APACHE .................................................. 175
15
Lista de Abreviaturas
API Application Programming Interface
BMP - Bitmap
CDMA Code Division Multiple Access
CDPD Cellular Digital Packet Data
CGI Common Gateway Interface
CHTML Compact HyperText Markup Language
CSD Circuit Switched Cellular Data
CSS Cascade StyleSheets
DOM Document Object Model
DSSS Direct Sequence Spread Spectrum
DTD Data Type Definitions
ECMA European Computer Manufacturers Association
EDGE Enhanced Data Rates for Global Evolution
EDI Eletronic Data Interchange
FDMA Frequency Division Multiple Access
GML General Markup Language
GPRS General Packet Radio Services
GSM Global System for Mobile Communication
HDML Handheld Device Markup Language
HTML HyperText Markup Language
HTTP HyperText Transfer Protocol
ICMP Internet Control Message Protocol
IETF - Internet Engineering Task Force
ISO International Standard Organization
ITTP Intelligent Terminal Transfer Protocol
MAC Message Authentication Code
MDI Mobile Data Initiative
MIT Massachusetts Institute of Technology
16
ML Markup Language
MMI Man-Machine Interface
NTP Network Time Protocol
PDA Personal Digital Assistant
PDU Protocol Data Unit
SDK Software Development Kit
SGML Standardized Generalized Markup Language
SMS Smart Messaging Service
SSL Secure Socket Layer
TCP Transmission Control Protocol
TDMA Time Division Multiple Access
TLS Transport Layer Security
TTML Tagged Text Markup Language
UI User Interface
URI Universal Resource Identifier
URL Universal Resource Locator
W3 Consortium Consortium - World Wide Web
WAE Wireless Application Environment
WAP l Wireless Application Protoco
WBMP Wireless Bitmap
W-CDMA Wireless Code Division Multiple Access
WCMP Wireless Control Message Protocol
WDP Wireless Datagram Protocol
WEB Simplificação do termo WWW
WML Wireless Markup Language
WSP Wireless Session Protocol
WTA Wireless Telephony Applications
WTAI Wireless Telephony Application Interface
WTLS Wireless Transport Layer Security
WTML – Web Test Markup Language
WTP Wireless Transaction Protocol
17
WWW World Wide Web
XHTML - eXtensible HyperText Markup Language
XML Extensible Markup Language
XSL XML Style Language
XSLT XML Style Language Transformation
18
1. Introdução
Givanildo Francisco da Silva Junior
A humanidade sempre buscou a rapidez na troca de informações, desde as
eras mais remotas. Com o advento do radio e com a primeira mensagem enviada
em 1896, por Guillermo Marconi, segundo Taurion (2002), a comunicação nunca
mais precisou de um meio físico para transportá-la. Com isso a comunicação pelo
rádio revolucionou a humanidade, pois agora, podemos nos comunicar enviando
mensagens de um lugar a outro sem a necessidade de nos deslocarmos.
Com o surgimento da telefonia móvel por Martin Cooper, inventor do celular
e da Internet, ainda segundo Taurion (2002), surge uma nova revolução. A
telefonia móvel tornou-se extremamente acessível e, conseqüentemente, popular
e de fácil operação, estabelecendo uma comunicação dinâmica e eficaz de grande
utilidade estendendo-se a todas as camadas sociais. Entretanto, podemos dizer
que ainda estamos diante de uma transformação gigantesca por acontecer, na
qual o computador tornar-se-á ainda mais virtualizado. É nesse sentido que as
pesquisas de novas tecnologias têm se desenvolvido, trabalhando para atingir
objetivos diferentes de formas diferentes em hardware, software, protocolos de
comunicação, sistemas operacionais, redes, redes sem fio e assim por diante.
Nessa explosão de tecnologias, a comunicação sem fio tem se destacado e
o celular é o dispositivo móvel mais utilizado para conexão com a Internet e
comunicação entre as pessoas, sendo sem dúvida, a mobilidade fator de
fundamental importância, e sua conveniência é o atrativo principal. Essas
facilidades nos permitem fazer compras pela Web em lojas virtuais sem
precisarmos nos deslocar até um ponto fixo onde tenha um micro computador,
gerando economia de tempo e maior conforto. Segundo Lapa (2004) atualmente,
existem mais usuários de celulares e equipamentos móveis do que usuários de
PCs. A proliferação de dispositivos móvel tende a continuar e aliado a essa
demanda a evolução da tecnologia da comunicação também está cada vez mais
19
potente em termos de capacidade de transmissão, permitindo tráfego de imagens
e vídeos de alta resolução, e dados.
Segundo Dias (2003), com usuários cada vez mais dependentes dos
serviços oferecidos via Internet onde milhões ficam muitas vezes distantes, presos
ao trânsito ou em lugares onde não há um cabo para a conexão, a troca de
informações torna-se um empecilho e para sanar este problema surge, então, a
computação móvel objetivando permitir que usuários tenham acesso à rede,
independente de sua localização física. Segundo Silva Junior (2004), quando se
utiliza um aparelho móvel, normalmente, o ambiente onde nos encontramos é
diferente de um computador de mesa. Geralmente, estamos na rua, no carro, na
reunião, no metrô, elevador, com atenção compartilhada entre aparelho e outras
atividades. Portanto, as aplicações feitas para o mundo wireless precisam
considerar tais diferenças. A interface, a interação, os movimentos de mão, a
atenção do usuário, tudo é diferente. Dessa forma, não basta colocar HTML ou
algo similar e imaginar que todos os problemas estão resolvidos. Precisamos criar
aplicações adequadas a essas necessidades.
Considerando as tecnologias existentes para o desenvolvimento de
aplicações para dispositivos móveis, o crescente avanço das tecnologias das
ferramentas de desenvolvimento de software e a demanda no mercado wireless
em nível mundial, torna-se importante identificar as tecnologias necessárias ao
desenvolvimento de aplicações do tipo wireless, bem como avaliar a
adequabilidade de seu uso em diversos contextos.
20
1.1. Contextualização
Atualmente a mobilidade segundo Next Generation (2005) é uma presença
constante no cotidiano das sociedades modernas, tanto em casa, como no
trabalho: hoje, mais do que nunca, a informação está em trânsito. O conceito de
mobilidade está hoje muito além dos serviços e aplicações oferecidas por
operadores móveis celulares.
Assimilar essa mudança e transformá-la em oportunidade é um diferencial
que garante espaço para profissionais e empresas conectadas a esse conceito. A
mobilidade apresenta-se hoje como uma das características intrínsecas e mais
marcantes no desenvolvimento das sociedades modernas, e por isso, é cada vez
mais um componente importante nos processos de negócios e nos modelos e
estilos de vida.
Considerando essa premissa e diante de tal realidade, apresentamos
nessa monografia um estudo das tecnologias envolvidas no desenvolvimento de
aplicações móveis, onde foram pesquisados vários ambientes, sendo concluído
como uma aplicação de Estudo de Caso denominado Enquete on line. Nesse
trabalho foram utilizados ambientes como, WML e WMLScript, Servidor Apache,
PHP, e Banco de Dados MySQL.
A aplicação “Enquete On Line” pode ser utilizada com vários temas
diferentes, porém somente uma por vez pode estar ativo. Exemplo: Qual a sua
opinião quanto ao aborto? Quem vai ganhar a copa de 2006? Em quem você
votaria para Presidente?, etc.
Esse estudo de caso, baseado em pesquisa de opinião publica e
denominado “Enquete On Line” está estruturada da seguinte forma:
21
Um ambiente WEB onde o administrador do sistema pode gerar uma
enquete e disponibilizá-la para os usuários responde-las
Um ambiente Móvel (celular) onde o usuário pode se conectar a WEB e
receberá uma pesquisa de opinião, devendo fazer sua seleção. Apos a
seleção o usuário recebe a informação do percentual recebido pela sua
opção até o momento.
Um ambiente WEB onde o administrador e usuários poderão consultar o
andamento da pesquisa, analisando a sua evolução. A quantidade de votos
recebidos por cada opção e total geral, percentualmente e graficamente.
Um banco de dados onde ficará registrada todas as enquetes realizadas
facilitando assim a emissão de relatórios.
Outras aplicações poderiam ser desenvolvidas a partir deste mesmo
ambiente de desenvolvimento e produção. Aplicações na área da saúde, ensino-
aprendizagem, etc.
1.2. Justificativa
Com o direcionamento voltado à informação cientifica, pretende-se
apresentar o trabalho realizado e implementar um estudo de caso, com o objetivo
de esclarecimento do tema, Comunicação entre dispositivos móveis e
servidores utilizando tecnologia WML/WAP, cujo foco é demonstrar conceitos
das tecnologias envolvidas para o desenvolvimento de aplicações voltadas a
dispositivos móveis.
Diante da necessidade de atender requisitos do curso de Especialização
em Desenvolvimento de Sistemas para WEB, oferecido pelo Departamento de
22
Informática da Universidade Estadual de Maringá, e por considerar fundamental
entender as soluções tecnológicas que o mundo competitivo em que vivemos
apresenta e almejando uma noção do mercado e da importância destas
tecnologias para saber aplicá-las corretamente nas mais diversas atividades, esse
estudo torna-se justificável.
1.3. Objetivo Geral
O objetivo principal deste trabalho é mostrar um estudo das linguagens
WML, WMLScript e PHP juntamente com servidor WEB e o Banco de Dados
MySql, abordando seus conceitos, fundamentos, aplicações e tecnologias para o
desenvolvimento de uma aplicação utilizando dispositivos moveis, em particular,
no uso de celulares.
Além disso, também pretendo mostrar as facilidades e dificuldades no
desenvolvimento de aplicações para dispositivos móveis, e para tanto, será
implementando um estudo de caso utilizando as tecnologias estudadas, onde
então, poderemos avaliar desempenho, praticidade, produtividade na criação de
soluções para dispositivos móveis.
1.4. Objetivo específico.
Estudar detalhadamente tecnologias que possam ser empregadas no
desenvolvimento de aplicações wireless, investigando quão apropriadas elas são
em situações diversas. Tecnologias como Wap em conjunto com a linguagem
WML, WMLScript e um servidor WEB dando suporte à linguagem PHP associada
à utilização de banco de dados MySQL. Para complementarmos a teoria,
23
continuaremos com um estudo de caso desenvolvendo um aplicativo onde os
usuários de dispositivos móveis poderão fazer uma votação selecionando
diferentes opções através de conexão wireless via, celular / Web enviando dados
ao DataBase, e recebendo dados WEB / celular. Para facilitar a avaliação desse
processo, concluiremos com uma interface web on line para monitoração do
Banco de Dados.MySQL disponível no servidor.
Para o cumprimento dessa meta, e desenvolvimento deste trabalho
apresentamos a seqüência abaixo.
Apresentar um estudo dos tipos de dispositivos móveis.
Apresentar um estudo dos protocolos usados pelos dispositivos
Apresentar um estudo da tecnologia empregada para comunicação
wireless: Tecnologia GSM
Apresentar um estudo das linguagens utilizadas em dispositivos móveis:
linguagem WML e WMLScript .
Apresentar um estudo da tecnologia utilizada para conexão wireless/web e
web / wireless, como o protocolo WAP
Apresentar um estudo do tipo do servidor web: servidor Personal Web
Server, servidor Tomcat e Servidor Apache
Apresentar um estudo do banco de dados : Mysql
Apresentar um estudo da linguagem web: HTML e XML SGML
Apresentar um estudo da linguagem Scritp: JavaScript
Apresentar um estudo da linguagem web com interação ao banco de
dados: PHP e ASP
Construção e implementação de um banco de dados. Essa base de dados
servirá como repositório para as pesquisas de opinião e análise dos dados.
Construção e implementação de sistema web para monitoração on line.
Essa aplicação ilustra como será possível monitorar uma pesquisa de
24
opinião em tempo real, bem como definir as opções para seleção dos itens
para os usuários opinarem.
Construção e implementação de sistema de pesquisa para dispositivos
móveis. aplicação que será chamada de “Enquete on-line” , onde o usuário
deverá interagir pela Internet com a base de dados MySQL através dos
dispositivos móveis que já oferecem suporte à Internet.
1.5. Organização do texto
Além do capitulo introdutório onde também foi colocado o objetivo desta
monografia, o trabalho está composto por 7 capítulos distribuídos da seguinte
forma:
O capitulo 2 descreve a fundamentação teórica necessária, dividido em 9
sub-itens:
O item 3 descreve sobre Metodologia, “Materiais e Metodos” explicando
como foi feito a monografia e o que foi utlizado.
O item 4 descreve sobre Tecnologia Envolvidas no Estudo de Caso.
O item 5 descreve sobre Desenvolvimento do Estudo de Caso.
O item 6 descreve sobre Resultados Obtidos.
O item 7 descreve sobre Conclusão.
O item 8 descreve sobre Trabalhos Futuros.
O item 9 relaciona as Referencias bibliográfica e bibliograifa consultada.
O item 10 descreve sobre Instalações dos Servidores Web
O item 11 descreve sobre Script do Banco de Dados.
O item 12 relaciona o Código fonte do Estudo de Caso “Enquete”.
25
2. Fundamentação Teórica
2.1. Definição e conceito de Dispositivos Móveis
Novas formas de comunicações estão sendo proporcionadas por redes
móveis de dados, usando dispositivos móveis, que nos oferecem vantagens como
associação, mobilidade/portabilidade. Mobilidade é o termo utilizado para
identificar dispositivos que podem ser operados a distancia ou sem fio.
Dispositivos que podem ser desde um simples bip até os mais modernos
Pockets. Portabilidade descreve a facilidade de instalações, atualizações e
compatibilidade com outros sistemas.
2.1.1. Tipos de Dispositivos
O Smartphone, conhecido como Stinger, baseados no sistema operacional
Microsoft Windows Powered Smartphone
Personal Digital Assistant (PDA) - um computador manual composto de
uma caneta, com recursos internos e organizacionais de comunicações.
Palmtop: termo original para PDA's sem teclado físico embutido.
Handheld: termo original para PDA's com teclado físico embutido.
WinCE ou PocketPC: designam tanto os dispositivos que rodam os SO's de
mesmo nome, como são os nomes de SO's de propriedade da Microsoft.
Na Figura 1 e na Figura 2, temos exemplos de PDAs e celulares.
Figura 1 Tipos de Personal Digital Assistant (PDA)
26
Figura 2 Tipos Celulares
Segundo Moon (2000), no caso específico do dispositivo celular, eles
demonstram uma nova forma de comunicação de dados, pois embora ainda sejam
usados principalmente para a transmissão de voz, as empresas de celulares
desenvolveram recursos para utilizar a rede existente para transmitir também
dados. Os celulares estão tornando-se apêndices do computador, possuindo a
vantagem do tamanho reduzido e dando versatilidade e velocidade à coleta dos
dados.
2.1.2. Características
Conforme Samy Silva (2004) os dispositivos sem fios e portáteis, por suas
características compactas, utilizam-se de um micro browser para navegar pelos
conteúdos Web. As necessidades de hardware, CPU e memórias para esses
micro browser são reduzidas ao mínimo. Também a linguagem de marcação dos
documentos a serem apresentados nos displays dos aparelhos, segue normas
rígidas e estritas. E ainda temos a limitação de banda. Tudo isso iremos discutir no
decorrer deste trabalho.
27
2.1.3. Funcionalidade do Dispositivo Móvel
Segundo Forta (2001) embora os dispositivos atuais possuem telas
gráficas e maiores, a maioria dos dispositivos apresentam interfaces limitadas
com onze linhas de texto vertical com dezesseis caracteres na horizontal sendo
que a maioria ainda apresenta apenas quatro ou cinco linhas de texto na vertical,
contudo ainda o teclado é bastante inadequado para utilização, na maioria das
vezes é necessário digitar três vezes para obter a letra desejada.
Quanto à navegação a maioria possui de dois a quatro botões de
navegação, dois para rolagem da tela, um para select e apenas um para interação
com o menu.
A entrada limitada de dados é um motivo que deve ser ponderado no
desenvolvimento das aplicações. Em geral todos os dispositivos possuem
recursos e limitações as quais devemos saber lidar.
2.1.4. Vantagens dos Dispositivos Móveis
Para aqueles que consomem grande parte do seu tempo trabalhando
remotamente, estes equipamentos são versáteis, dedicados, multifuncionais e de
uso genérico. Do ponto de vista empresarial, eles são ótimos geradores de
informações, podendo ser utilizados desde a automação de processos até a coleta
de informações estratégicas. Alguns exemplos são mostrados na Figura 3 abaixo.
28
Figura 3 Tipos de Dispositivos móveis voltados para empresas
Segundo Pekus (2002), estes aparelhos também representam vantagens
em relação a outros computadores, como:
dimensões: além de mais leves e simples de manusear, podem ser
transportados em qualquer espaço;
consumo de energia: por serem dispositivos mais compactos e econômicos,
o consumo de energia e tempo de recarga são menores e a autonomia em
campo é maior;
ganho de tempo e eficiência: o tempo de carga de aplicações embutidas
nestes dispositivos é inferior quando comparado a outros equipamentos;
custos operacionais e expansão programada: por serem mais compactos e
voltados para atividades específicas, estes dispositivos não contam com
vários circuitos e periféricos internos, como por exemplo disco rígido e
discos flexíveis, diminuindo de forma evidente o custo com manutenção ou
programas desnecessários.
29
2.1.5. Inovações Tecnologias e novas aplicações
Segundo IT web (2005) a Google anunciou um serviço teste onde é
possível encontrar estabelecimentos via celulares e outros aplicativos sem fio. O
usuário pode procurar por restaurantes, lojas e outros estabelecimentos via
celulares que navegam na web e outros aplicativos móveis.
O serviço estará disponível nos EUA e Canadá no endereço
http://mobile.google.com/local, ou na página principal de buscas. O Google Local
para aparelhos móveis vai possibilitar que os usuários vejam 10 resultados de
busca, com endereços, telefones e indicações de como chegar ao local de carro.
Até o momento, o serviço não apresenta anúncios, conforme Figura 4 abaixo.
Figura 4 Site da Google para dispositivos móveis.
O Yahoo, que briga diretamente com o Google pelo mercado de buscas,
lançou um serviço desse tipo em outubro de 2004, porem é necessário se
cadastrar.
30
Segundo a Texas Instruments (2003), maior fabricante de processadores
para telefones celulares, disponibilizou seus projetos aos fabricantes de
dispositivos portáteis, com tecnologia necessária parar integrar GSM/GPRS,
802.11 e Bluetooth.
O GSM, ou Global System for Mobile Communications, é a tecnologia de
telefonia celular mais usada no mundo. O GPRS, ou General Packet Rádio
Service, é sua versão avançada que permite aos usuários acessarem a Internet
em velocidades equivalentes ao de um modem convencional doméstico.
A tecnologia 802.11, também conhecida como Wi-Fi, usa ondas de rádio
para transmitir dados a velocidades elevadas em áreas limitadas a um raio de 100
metros do ponto de origem.
O Bluetooth é uma tecnologia de transmissão de dados à curta distância
que pode ser usada para substituir fios e cabos como os usados para conectar
impressoras em computadores
Para exemplificar, isso permite uma chamada telefônica em um telefone
sem fio e acesso à Internet por meio de uma conexão em banda larga sem uso de
cabos, tudo no mesmo aparelho.
Conforme Rigonatti ( 2004 ), novidades não param de chegar ao mercado,
cada vez mais tecnologias avançadas são embutidas nos dispositivos móveis.
Uma das últimas novidades promete ser um aparelho conhecido até agora como
SDA Musica Handset a ser lançado em breve no mercado nacional pela empresa
T-Mobile. O Aparelho celular, traz como novidade o foco no entretenimento
multimídia. Com sistema Windows Móbile para SmartPhones, acompanha 64 MB
de Memória ROM e 32 MB RAM. A novidade do aparelho fica para os botões
multimídia entre a tela e o teclado, conforme Figura 5 abaixo.
31
Figura 5 Teclas de Play, Pause e troca de Faixa.
O aparelho conta com MP3 player que também suporta os formatos,
WMA, WAV, AMR-NB, MID, pesa 100g, tem dimensões super reduzidas e
autonomia para 240 minutos de conversação ou 200 horas em Standy by.
32
2.2. Wireless
Neste capitulo será apresentado o que é um dispositivo Wireless (sem
fio), como funciona, seus benefícios, e aplicações.
2.2.1. O que é wireless?
Conforme Zanetti (2004) e Rischpater (2000) Wireless é uma tecnologia
que permite a conexão entre diferentes equipamentos sem a necessidade de
nenhum tipo de conexão física, ou seja, sem a necessidade do uso de cabos,
através da instalação de uma antena receptora e transmissora
Muitas das redes sem fio comerciais são baseadas em redes celulares
existentes, que dividem uma região geográfica em células. Este caminho da rede
sem fio para a Internet com fio envolve saltos da estação rádio base de uma
célula, por meio de um ou mais centros de comutação, para um gateway e,
finalmente, para um destino na Internet.
A Figura 6 mostra um exemplo de uma simples rede wireless LAN.
Figura 6 Rede Wireless
33
2.2.2. Principais benefícios das redes sem fio:
Mobilidade;
Instalação rápida e simples;
Flexibilidade;
Custo reduzido;
Escalabilidade;
2.2.3. Aplicações
O poder e a flexibilidade das redes sem fio, permitem uma série de
aplicações práticas como:
doutores e enfermeiras com notebooks obtendo instantaneamente
informações sobre pacientes;
estudantes, durante a aula, acessando a Internet para consultar o
catálogo da Biblioteca;
gerentes de rede em ambientes dinâmicos, podendo realizar
mudanças e extensões com menores preocupações;
gerentes de rede instalando redes locais sem fio em prédios velhos
por preços muito mais acessíveis;
redes locais sem fio ligando as estações de trabalho nos andares
de uma fábrica e auxiliando na coleta de dados de máquinas;
através de dispositivos móveis, em qualquer lugar a qualquer hora,
pode-se consultar qualquer tipo de notícia, verificar condições de
tempo e trânsito,verificar e-mails, pagar hospedagens e outras
compras.
34
2.2.4. Opções de Plataforma sem Fio
Existem três plataformas que podem ser utilizadas para o
desenvolvimento de aplicativos para redes sem fio.
WEB - World Wide Web: Rede mundial baseada em padrões de dados
abertos que alimentou uma explosão de intercâmbio de informações.
WAP - Wireless Application Protocol: Baseia-se no modelo adotado pela
WEB e será o objeto de estudo desta monografia.
HDML - Handheld Device Markup Language: Precedendo o WAP,
contribuiu para a criação do WML e é atualmente mantida pela Phone.com como
um padrão aberto separado, competindo com o padrão WAP.
2.2.5. Opções de Hardware
Os principais terminais sem fio com acesso à WEB, são agrupados em 4
categorias onde o tamanho e a faixa de preço determinam quais são os recursos
que cada dispositivo pode oferecer.
Supertelefones: Oferecem uma plataforma de computação baseada em Personal
Digital Assistant(PDA) combinada com hardware de telefone celular.
Telefones Inteligentes: São extensões do conceito de produto de telefone celular
existente, combinando as melhores características do telefone digital com a
capacidade de obter dados da Internet usando WAP ou HDML.
35
PDAs: Tabletes eletrônicos do tamanho da palma da mão que aceitam módulos
encaixáveis ou cartões de PC que permitem aos dispositivos acessar serviços
sem fio de redes digitais.
Laptops: Embora comparáveis aos seus correspondentes de mesa, são limitados
principalmente pela rede sem fio e normalmente são operados quando o usuário
está parado.
36
2.3. WAP
Neste capitulo será apresentado o que é o protocolo WAP, principais
características, aplicações, limitações e uma comparação do modelo WAP com o
modelo WWW.
2.3.1. Definição e Conceito de WAP
Segundo Oliveira (2000), o WAP é uma especificação aberta e global, que
visa permitir que usuários de dispositivos móveis, sem fio, acessem facilmente
informações e serviços de forma instantânea. A comunicação pode ser feita
através de ondas de rádio via satélite ou antenas. Embora possa ser utilizado em
palmtops, handhelds e notebooks equipados com modem sem fio, o telefone
celular é o dispositivo móvel mais usado, com larga vantagem, para acessar a
Internet através de WAP.
O WAP adotou as melhores características de infra-estrutura WEB e
aperfeiçoou sua operação permitindo a clientes e servidores intercambiar a
maioria dos dados usando a mínima quantidade de largura de banda. Por ter sido
criado especificamente para ser utilizado em dispositivos sem fio tornou-se mais
eficiente que os protocolos tradicionais para este tipo de aplicação.
2.3.2. O protocolo WAP
Ainda segundo Oliveira (2000), e, também citando Denega (2000) o
protocolo WAP é basicamente uma pilha de protocolos de comunicação que tem
como meta unir um servidor de aplicação a um dispositivo sem fio. Este conjunto
de protocolos especifica dois elementos essenciais para a comunicação sem
fio: um protocolo de comunicação fim-a-fim e um ambiente de aplicação baseado
em visualizadores (browser). Quando o browser WAP é usado para solicitar uma
informação, ocorrem os seguintes passos:
37
O pedido da Universal Resource Locator (URL) é enviado através da rede
wireless para o gateway WAP, usando os protocolos WAP;
O gateway WAP decodifica a solicitação recebida do protocolo Wireless
Session Protocol (WSP) (no padrão WAP) para o protocolo da Internet HyperText
Transfer Protocol (HTTP) e envia essa requisição para o web server através da
internet;
Ao ler a requisição, o web server retorna uma resposta com conteúdo
Wireless Markup Language (WML) para o gatewayWAP que o converte para o
padrão bytecode do WAP, codificando a informação para um formato binário de
forma que possa ser usada menos largura de banda.
O conteúdo codificado é criptografado e enviado através da rede wireless
para o browser WAP.
Em síntese, o gateway WAP recebe o conteúdo WML do servidor WEB e
o browser recebe a resposta do gateway WAP e a exibe no display do dispositivo
WAP. Este conteúdo interpretado e exibido no display é criado através da
linguagem WML, abordada com mais detalhes nos capítulos seguintes.
2.3.3. Principais características do protocolo WAP
• Um modelo de programação baseado fortemente no modelo de
programação WEB existente.
38
• Independência dos dispositivos: uma linguagem de marcação que
obedece aos padrões Extensible Markup Language (XML), projetada para criar
aplicativos WAP independentes de qualquer dispositivo particular. Especifica a
funcionalidade mínima que um dispositivo deve ter e foi projetado para aceitar
funcionalidade extra sobre este mínimo.
• A linguagem de script WMLScript, baseada na European Computer
Manufacturers Association (ECMA), ECMAScript, para estender a capacidade da
WML.
• A especificação de um micro-navegador que define como a WML e a
WMLScript devem ser interpretadas no equipamento portátil e apresentadas ao
usuário.
• Interoperabilidade: qualquer componente construído para ser compatível
com a especificação WAP pode interoperar com qualquer outro componente WAP
compatível.
• Um sistema adequado para os aplicativos de telefonia sem fio Wireless
Telephony Applications (WTA), propiciando funções que as operadoras de
telefonia possam usar para integrar as funções de telefonia e micronavegação de
um equipamento WAP.
• Otimização de Transferência de Dados: houve interesse em otimizar os
protocolos existentes, tais como o HTTP e o TCP, para maximizar a transferência
de dados.
• Independência de Sistema Operacional: como este protocolo é
dependente de padrões de comunicação ao invés de estarem baseados nas
plataformas, qualquer plataforma capaz de implementar esses padrões de
comunicação será compatível com WAP.
39
• Uma pilha de protocolos leve, projetada para minimizar a exigência de
largura de banda, trabalhar com uma diversidade de portadoras sem fio e propiciar
conexões seguras.
2.3.4. Aplicações do Protocolo WAP
Alguns sites WAP oferecem uma grande quantidade de serviços,
chegando a compararem-se com os sites WEB baseados no modelo WWW, eis
aqui alguns exemplos de aplicações do protocolo WAP
Transações Bancárias: Tendo um celular WAP, com acesso à Internet, e
considerando que sua operadora ofereça os serviços WAP em parceria com o
Banco, pode-se fazer transações bancárias como as disponíveis no auto-
atendimento do Banco do Brasil, que já possui site WAP http://wap.bb.com.br.
Programação dos Cinemas: Uma outra aplicação do Protocolo WAP é o
acesso à programação dos cinemas. Sites WAP como o
http://wap.cineguia.com.br apresentam os filmes em cartaz no Brasil inteiro.
Ferramentas de Auxílio para a Polícia Militar: A Polícia Militar de Minas
Gerais possui um sistema que permite que os policiais façam consultas em uma
base de dados, podendo, assim em mais ou menos 18 segundos, obter dados
sobre carros suspeitos e até antecedentes criminais do motorista.
Serviços de Agenda On-Line : Sendo o usuário cadastrado no sistema,
ele pode dispor dos serviços de agenda on-line. Este serviço é muito utilizado para
lembrar o usuário de compromissos, datas importantes, horóscopo e notícias.
Indicadores Financeiros: Sites WAP oferecem, diariamente,
informações do Sistema Financeiro Nacional com a cotação do dólar e o valor do
grama do ouro, além de informações sobre as principais bolsas de valores.
40
Situação de Aeroportos: Através do endereço
http://www.folhawap.com.br/ pode-se obter informações e saber como está a
situação de aeroportos como Congonhas, Santos Dumont e Cumbica.
Previsão do Tempo: O site http://www.climawap.com.br/index.wml
oferece a previsão do tempo para várias cidades do Brasil divididas por regiões.
Conversão de Moeda: Havendo necessidade de fazer conversões de
moeda pode-se também utilizar o WAP. Este serviço pode ser conferido em
http://wap.nodel.com.br.
Comércio Eletrônico: Compras podem ser feitas pelo celular WAP, essa
tecnologia chamada de m-comerce (comércio móvel). O site
http://www.superlojas.com.br/wap/index.wml hospeda cerca de 500 lojas e pode-
se fazer compras como se estivesse navegando em um site WEB normal.
Serviços de E-mail: Mensagens não muito longas e sem aquelas
formatações e quantidades de figuras como as enviadas pelos programas de e-
mail da WEB tradicional, podem ser enviadas e recebidas através do celular WAP.
Jogos: Vários jogos estão disponíveis pelas operadoras de celulares e
também em sites pessoais, no entanto, maioria deles para um único jogador,
exemplos: Memory, Battleships, Russian Roulette, kniffel Batalha Naval e outros.
41
2.3.5. Limitações
Apesar de fornecer várias vantagens, o protocolo WAP possui uma série
de limitações:
• Tamanho do LCD (display de cristal líquido): seu tamanho reduzido
limita seriamente as capacidades do sistema.
• Teclado: por ser pequeno e numérico, o teclado se torna um empecilho
para digitar palavras, reduzindo a capacidade de entrada de dados.
• Velocidade: a atual velocidade pode variar de 9,6 a 14,4kbs, assim, além
de ainda ser muito lenta, há a necessidade de fazer uma nova chamada
sempre que houver necessidade de uma nova conexão.
• Micro-browser: por apresentar apenas informações escritas em WML, as
operadoras têm que desenvolver conteúdos próprios para WAP.
• Possuem CPU, RAM, ROM e velocidade de processamento limitados e
poucas opções de fornecimento de energia (baterias, pilhas, etc);
• Redes de baixa capacidade com largura de banda modesta.
• As redes de voz e dados sem fio são inerentemente pouco confiáveis,
instáveis e imprevisíveis.
42
2.3.6. O Modelo WWW
A arquitetura Internet prevê um modelo de programação flexível e
poderoso, onde aplicações e conteúdo são apresentados em formatos de dados
padrões e são mostrados por aplicações conhecidas como web browser ou
navegadores web. O web browser é uma aplicação para rede, o que significa que
ele envia requisições para objetos de dados nomeados para um servidor de rede e
este responde com o dado codificado, usando os formatos padrões.
Os padrões WWW especificam a maioria dos mecanismos necessários
para a construção de um ambiente de aplicação de propósito geral, incluindo:
• Modelo de nomeação padrão: todos os servidores e conteúdo na Web são
nomeados de acordo com o padrão da Internet, conhecido como URL.
• Tipificação de conteúdo: todo conteúdo na internet é produzido de maneira
que os navegadores web o processem da maneira correta, baseado em seu
tipo.
• Formatos de conteúdo padrão: todos os web browser suportam um pacote
de formatos de conteúdo padrões, que incluem o HTML e o JavaScript,
entre outros.
• Protocolos de comunicação padrões: os protocolos padrões de rede, tais
como o HTTP, permitem a qualquer navegador comunicar-se com qualquer
servidor WEB.
43
Essa infraestrutura permite aos desenvolvedores criarem aplicações e
conteúdo para um grande número de clientes. Os protocolos da WWW são
definidos em três classes de servidores :
• Servidor de origem: servidor onde um dado recurso reside ou será
criado.
• Proxy: um programa intermediário que age tanto como cliente quanto
como servidor. Este tipo de servidor reside entre os clientes e os
servidores que não têm meios de comunicação direta.
• Gateway: um servidor que age como intermediário para algum outro
servidor. Diferente do proxy, um gateway recebe as requisições como se
ele fosse o servidor de origem para o recurso solicitado.
2.3.7. O Modelo WAP
O modelo de programação WAP é muito similar ao modelo de
programação WWW, visando justamente se agregar a ela da melhor maneira
possível. Esta tentativa de produzir um ambiente coerente com a estrutura já
existente, provê vários benefícios à comunidade de desenvolvimento, como a
familiarização com o modelo existente, a confiabilidade de uma arquitetura testada
e a possibilidade de utilização de ferramentas existentes (como servidores WEB,
editores XML, etc). A Figura 7 demonstra os modelos WAP e WWW.
44
Figura 7 Modelo WAP e Modelo WWW
No entanto, apesar de muito similar o modelo de programação WAP
possui duas diferenças cruciais:
• Há sempre pelo menos um servidor proxy WAP entre o usuário e o
servidor de conteúdo.
• A comunicação entre o agente de usuário e o servidor proxy é feita
com protocolos WAP, ilustrado na Figura 8 abaixo.
45
Figura 8 Modelo WAP
Assim como o WWW, o WAP define um conjunto de componentes
padrões para permitir a comunicação entre terminais móveis e servidores de rede:
• Modelo de nomeação padrão: o padrão WWW de Universal Resource
Locator (URL) é usado para identificar o conteúdo WAP nos servidores
originais, enquanto o padrão WWW de Universal Resource Identifier (URI) é
usado para identificar recursos locais em um dispositivo.
• Tipificação de conteúdo: todo o conteúdo WAP tem um tipo específico
consistente com a tipificação da WWW, o que permite aos agentes-usuários
WAP processarem corretamente um conteúdo baseado em seu tipo.
• Formatos de conteúdo padrões: todos os formatos de conteúdo WAP são
baseados na tecnologia WWW e inclui marcação para display, informações
de calendário, objetos de cartões de negócios eletrônicos, imagens e
linguagem de script.
46
• Protocolos de comunicação padrões: o protocolo de comunicação WAP
possibilita a comunicação das requisições do browser do terminal móvel
com o servidor web.
Os tipos de conteúdo e protocolos WAP foram otimizados para micro
portáteis sem fio. O WAP utiliza a tecnologia de proxy para conectar um domínio
sem fio à Internet.
2.3.8. Principais funções do proxy WAP:
O gateway de protocolo traduz as requisições das camadas da pilha do
Protocolo WAP. Essas camadas (WAE, WSP, WTP, WTLS e WDP) serão
explicadas em mais detalhes na subseção Pilha de Protocolos.
Codificador e decodificador de conteúdo: os codificadores de conteúdo
traduzem o conteúdo WAP em um formato codificado compacto para reduzir o
tamanho dos dados que trafegam pela rede. Os decodificadores traduzem o
conteúdo codificado compacto para o conteúdo WAP.
A partir dessas funções, o proxy WAP permite que conteúdo e aplicações
sejam hospedados em servidores WWW padrões e sejam desenvolvidos usando
tecnologias WWW como, por exemplo, scripts CGI. A Figura 9 ilustra um exemplo
de uma rede WAP.
47
Figura 9 Exemplo de uma rede WAP
O WAP gateway diminui o tempo de resposta do dispositivo portátil, agregando
dados de diferentes servidores na WWW e guardando informações
freqüentemente acessadas. O WAP gateway também pode se conectar a bancos
de dados de assinantes e utilizar informações da rede wireless, tais como
informação de localização, para personalizar as páginas WML de acordo com o
usuário.
2.3.9. Arquitetura - A Pilha de Protocolos
Apesar de ser visto como um protocolo, na verdade o WAP é uma pilha composta
por cinco protocolos independentes, organizados em um ambiente escalável e
extensível para o desenvolvimento de aplicações direcionadas à utilização em
dispositivos móveis. Isto foi alcançado através da construção de uma pilha de
protocolos dividida em camadas, conforme Figura 10.
48
Figura 10 Camadas do Protocolo Wap
WAE (Wireless Application Environment) : É um ambiente de aplicação de
propósito geral baseado na combinação das tecnologias da WEB e de telefonia
móvel.
WSP (Wireless Session Protocol) : Disponibiliza para a camada de aplicação uma
interface consistente para dois serviços de sessão. O primeiro é o serviço
orientado a conexão, que opera sobre o protocolo de transação WTP e o segundo
é o serviço não orientado a conexão, que opera sobre o serviço de datagrama
seguro ou não (WDP).
WTP (Wireless Transaction Protocol) : É executado no topo de um serviço de
datagramas, provendo um protocolo orientado a conexão leve, otimizado para
implementação em dispositivos móveis, como telefones celulares.
49
WTLS (Wireless Transport Layer Security) : É uma camada opcional da pilha WAP
que fornece às camadas superiores um serviço de interface de transporte seguro.
É um protocolo de segurança baseado no protocolo padrão da indústria, o
Transport Layer Security (TLS), formalmente conhecido como Secure Socket
Layer (SSL).
WDP (Wireless Datagram Protocol) : É a camada de transporte da arquitetura
WAP e opera sobre os serviços portadores de dados suportados por vários tipos
de redes. Esta camada oferece uma forma consistente de transmissão de pacotes,
permitindo às camadas de Segurança, Sessão e Aplicação funcionarem
independentemente da rede sem fio utilizada.
Camada de Rede : A camada de protocolos WAP foi projetada para operar sobre
uma variedade de transportadores de serviços. Estes oferecem níveis diferentes
de qualidade no que diz respeito a rendimento, taxa de erro e atraso, que devem
ser compensados ou tolerados pelo WAP.
2.3.10. Tipos de redes telefônicas WAP
Abaixo são apresentados os tipos de redes telefônicas que
atualmente suportam a utilização de WAP
CDMA (Code Division Multiple Access): tecnologia que utiliza sistema exclusivo,
permitindo enviar a ligação codificada e resgatá-la de outra porta de forma clara e
sem erros;
MAC é um código calculado a partir de funções de hash seguras, para garantir a
integridade das mensagens trocadas.
50
FDMA (Frequency Division Multiple Access): é uma das principais técnicas de
múltiplo acesso utilizada em sistemas de comunicação móvel. Nesta, a
multiplexação é feita por divisão de freqüência;
GSM (Global System for Mobile Communication): sistema criado para padronizar
as comunicações celulares, permitindo ao usuário utilizar seu telefone em
qualquer país;
EDGE (Enhanced Data Rates for Global Evolution): trata-se de uma tecnologia
que permite às redes GSM suportar e oferecer serviços de terceira geração à
telefonia móvel;
W-CDMA (Wireless Code Division Multiple Access): é um padrão norte americano
que possui um importante papel na realização das comunicações sem fio, porque
tem quase a mesma performance na transmissão quanto às comunicações com
fio;
TDMA (Time Division Multiple Access): tecnologia para serviços digitais sem fio
baseada na divisão de uma freqüência de rádio em frações de tempo que serão
usadas em diferentes conexões.
Além dos transportadores de serviços, também existe a rede portadora que é
responsável pelo encaminhamento de datagramas até ao dispositivo destino. O
endereçamento desta varia conforme o tipo de rede (endereços IP ou números de
telefone), no entanto, o protocolo WAP foi projetado para compensar ou tolerar
estas diferenças, permitindo que seus endereços de rede incluam o tipo de
portadora e o endereço (ex.: IP; 123.456.789.123).
51
2.3.11. Exemplos de portadores
• SMS (Smart Messaging Service): é um serviço que permite mandar ou receber
mensagens curtas de/para telefones celulares sem que se tenha de fazer uma
ligação, economizando desta forma tempo e dinheiro.
• CSD (Circuit Switched Cellular Data): uma tecnologia que permite a transferência
de dados via celular através de um canal de tráfego digital, por exemplo: com um
laptop, um aparelho celular com esta tecnologia e um cabo, o cliente pode acessar
a internet independente do horário e local a uma velocidade de 9.600 bps, além de
poder enviar e receber fax.
• CDPD (Cellular Digital Packet Data): é uma especificação que suporta o acesso
à internet e outras redes públicas através de comutação de pacotes. Um telefone
celular e um modem CDPD possibilitam velocidades até 19,2Kbps.
• GPRS (General Packet Radio Services): serviço não baseado em voz que
permite o envio e recepção de informações através de uma rede telefônica móvel.
Ele utiliza as tecnologias de CSD e SMS.
52
2.4. Linguagens de Marcação
2.4.1. SGML
Segundo Silva Filho (2004) a SGML (Standard Generalized Markup
Language) é a precursora das linguagens de editoração, a partir da SGML foi que
surgiram a HTML e XML, as quais serão comentadas mais adiante.
Com o objetivo de construir um sistema portável, para o intercâmbio e
manipulação de documentos , foi criada a SGML, (independente de sistema
operacional e formatos de arquivos). Foi desenvolvido um sistema de "Marcação
Generalizada" (Generalized Markup), com dois objetivos básicos:
A marcação de um documento deve descrever a estrutura do documento,
e outros atributos do mesmo, em vez de especificar o processamento a ser feito
no mesmo. A marcação deve ser definida rigorosamente, de forma que sistemas
formais como programas possam ser usados para processar o documento
Como SGML não possui um conjunto pré-definido de tags e de
elementos, ela é na verdade uma meta-linguagem para descrever (mais
precisamente especificar) linguagens de marcação. Ela não possui uma semântica
pré-definida.
A sintaxe de uma linguagem específica de marcação definida através de
SGML é especificada através de construções coletadas num documento
denominado DTD (Document Type Definition)(ou incluídas diretamente no
documento SGML), onde aparecem "declarações de elementos", que especificam
para cada elemento da linguagem todas as possíveis marcações válidas para o
53
elemento, como por exemplo, a ordem e obrigatoriedade de elementos num
documento, quantidade,etc, e declarações de atributos, que especificam, por
exemplo, tipos de valores de atributos, valores default, etc.
O DTD define, portanto, uma gramática para a linguagem de marcação do
documento. Todo documento SGML deve possuir um DTD (que define a sua
gramática) de forma que o documento possa ser validado por um analisador
sintático (parser).
2.4.2. HTML Conceitos Básicos
Ainda segundo Silva Filho (2004) e Godoy (2004) uma informação
publicada na internet, e distribuída globalmente, deve ser entendida por todos os
computadores e sistemas existentes na WEB, para isso foi necessário o
desenvolvimento de uma linguagem de formatação única, o qual foi denominado
HTML.
HTML significa HyperText Markup Language - Linguagem de Marcação
de Hipertexto. (Hipertexto é a capacidade de se pular de um documento para outro
com um clique do mouse) Consiste de uma aplicação especifica do SGML
utilizada na internet, e define um tipo de documento simples com marcações fixas
projetadas para uma classe de relatórios técnicos de uso comum em escritórios,
como, por exemplo, cabeçalhos, parágrafos, listas, ilustrações e algumas
possibilidades para hipertexto e multimídia. É o padrão atualmente em uso na
Internet.
Não é possível programar em linguagem HTML, pois ela é simplesmente
uma linguagem de marcação (ou formatação),: isto é, ela fornece elementos que
indicam como um texto deve aparecer na página, tais como "negrito" e
"sublinhado"; com ela também é possível inserir imagens, multimídia e outros
recursos no texto, além, é claro, das ligações de hipertexto.
54
Os browsers são os responsáveis por identificar as marcações em HTML
e apresentar os documentos conforme o que foi especificado por essas
marcações. O HTML é usado principalmente para disponibilizar documentos e
informações na Internet ou em Intranets, mas com a aceitação deste padrão por
quase todos os sistemas computacionais existentes, tem aumentado
consideravelmente o seu uso em soluções desktop, tais como "HELP" de
softwares comerciais populares
Apesar do HTML não ser uma linguagem de programação, tem em
comum com estas a presença de diretivas, isto é trechos especiais de texto,
geralmente destacados por algum caracter delimitador. São tais diretivas que
controlam ou alteram a maneira em que as diversas partes de um documento são
apresentadas tipograficamente. Assim, as diretivas não são normalmente
tipografadas literalmente, mas o efeito destas é que pode ser observado.
Todas as diretivas HTML são delimitadas pelos caracteres menor (<) e
maior ( >).
Exemplo: <TITLE>, <HEAD>, <P>, <BR>, etc
A diretiva do HTML não é sensível ao tipo de caixa, isto é, tanto pode ser
escrita em maiúsculas como em minúsculas, ou em qualquer combinação.
Exemplo:
<Title>,
<HeAd>,
<P>
<br>,
São diretivas interpretadas da mesma maneira.
Numa diretiva, não deve haver espaço em branco nem quebra de linha
entre o sinal de menor < e o nome da diretiva. Por exemplo, as seguintes
codificações listadas a baixo,não são permitidas:
55
< TITLE>,
< HEAD>,
<
P>
Uma diretiva não é visualizada literalmente, mas é identificada e
adequadamente interpretada pelo programa navegador a fim de produzir algum
efeito visual ou de estrutura lógica. Qualquer outra informação que não seja uma
diretiva, deve ser um texto, consistindo do conteúdo do documento.
Exemplo: <P> Este parágrafo.....
Um fato importante sobre HTML é que ao contrário do que acontece com
editores de texto convencionais, o programador não tem controle sobre o efeito
final do documento. Este pode variar, de acordo com as condições estabelecidas
pelo usuário final no programa navegador.
Exemplo:
Dimensões da área de visualização.
Escolha dos fontes tipográficos
Nível de HTML suportado
Versão e marca do programa navegador
Limitações de dispositivos (hardware e software)
A preocupação principal dos desenvolvedores do HTML é a de permitir
transportar a estrutura lógica e o conteúdo de documentos através de diferentes
plataformas (conjunto consistindo de computador, sistema operacional e programa
de suporte utilizado) de computadores.
Em HTML, existe diretiva para iniciar e finalizar uma determinada
especificação. <[diretiva]> inicia a especificação e </[diretiva]> finaliza a
especificação. A diretiva </[diretiva]> é denominado de diretiva de fechamento.
56
Em alguns casos em que o final da especificação seja óbvio ou quando a
diretiva não trata de especificação do bloco, a diretiva de finalização </[diretiva]>
pode ser omitido. Caso tenha uma diretiva desconhecida no documento ela será
simplesmente ignorada. A forma declarativa geral de um documento HTML é a
seguinte:
<html>
<head>
[cabeçalho do documento]
</head>
<body>
[corpo do documento]
</body>
</html>
Como podemos ver, o documento HTML consiste basicamente de duas seções:
cabeçalho e corpo.
<html> e </html> indica o começo e o fim do documento hipertexto em HTML,
<head> e </head> indica o começo e o fim do caba�alho do documento HTML, e
<body> e </body> especifica o começo e o fim do corpo do documento HTML.
57
2.4.3. XML - Linguagem de Marcação Extensível
Conforme Silva Filho (2004) e Bandeira Duarte (2004) a linguagem XML
(eXtensible Markup Language) é linguagem de marcação de dados (meta-markup
language) que provê um formato para descrever dados estruturados, também
denominado linguagem de editoração, e herda diversas características de HTML,
porém para atender as novas necessidade, onde HTML não poderia dar suporte,
surgiu a XML.
A XML foi proposta pela W3C (Word Wide Web Consortium) com o
objetivo de preencher lacunas não atendidas pela HTML conforme Mendes
(2004), trata-se de uma linguagem que permite que outras pessoas criem suas
próprias linguagens de editoração para fins específicos. Certos documentos HTML
não conseguem prover recursos satisfatórios como, por exemplo:
Equações matemáticas, moleculares e outras.
Mecanismo sofisticado em banco de dado (busca, filtragem e outros).
Documentos com informações organizadas de forma hierárquica.
Os princípios básicos da XML são os da simplicidade, o XML permite a
criação de infinitas tags, e dispõem de um sistema para criar tags para dados
estruturados. Um elemento XML pode ter dados declarados como:
preços de venda,
taxas de preço,
um título de livro,
quantidade de chuva,
ou qualquer outro tipo de elemento.
58
2.4.3.1. Comparações entre HTML e XML
Apesar de já ter discorrido sobre a HTML, cabe aqui algumas
comparações entre HTML e XML. Por derivarem da SGML ambas identificam
elementos em uma página e ambos utilizam sintaxes similares. A grande diferença
entre HTML e XML é que o HTML descreve a aparência e a ações em uma página
na rede enquanto o XML não descreve nem aparência e ações, mas sim o que
cada trecho de dados é ou representa. Em outras palavras, o XML descreve o
conteúdo do documento.
Como o HTML, o XML também faz uso de tags (palavras encapsuladas
por sinais '<' e '>') e atributos (definidos com name="value"), porém, enquanto em
um documento HTML uma tag por exemplo, <p> indica um parágrafo, o XML usa
as tags somente para delimitar trechos de dados, e deixa a interpretação do dado
a ser realizada completamente para a aplicação que o está lendo e essa tag pode
indicar um preço, um parâmetro, uma pessoa, ou qualquer outra coisa.
Apesar dos arquivos XML serem textos, não são fáceis de serem
interpretados pelo ser humano como o HTML é, porém arquivos XML são fáceis
de depurar para programadores ou desenvolvedores, de forma que um simples
editor de textos pode ser usado para corrigir um erro em um arquivo XML.
As regras de formatação para documentos XML são muito mais rígidas do
que para documentos HTML. Uma tag esquecida ou um atributo sem aspas torna
o documento inutilizável, enquanto que no HTML isso é tolerado. As
especificações oficiais do XML determinam que as aplicações não podem tentar
adivinhar o que está errado em um arquivo, mas sim devem parar de interpretá-lo
e reportar o erro, o que já não acontece com o HTML.
59
2.4.3.2. Características da linguagem XML
O XML provê uma representação estruturada dos dados que mostrou ser
amplamente implementável e fácil de ser desenvolvida.
O XML provê um padrão que pode codificar o conteúdo, as semânticas e as
esquematizações para uma grande variedade de aplicações desde simples até as
mais complexas.
Uma característica importante é que uma vez tendo sido recebido o dado
pelo cliente, tal dado pode ser manipulado, editado e visualizado sem a
necessidade de reacionar o servidor. Dessa forma, os servidores têm menor
sobrecarga, reduzindo a necessidade de computação e reduzindo também a
requisição de banda passante para as comunicações entre cliente e servidor.
O XML é considerado de grande importância na Internet e em grandes intranets
porque provê a capacidade de interoperação dos computadores por ter um padrão
flexível e aberto e independente de dispositivo. As aplicações podem ser
construídas e atualizadas mais rapidamente e também permitem múltiplas formas
de visualização dos dados estruturados
2.4.3.3. Separação entre dados e apresentação
A mais importante característica do XML se resume em separar a
interface com o usuário (apresentação) dos dados estruturados. O HTML
especifica como o documento deve ser apresentado na tela por um navegador. Já
o XML define o conteúdo do documento. Por exemplo, em HTML são utilizadas
tags para definir tamanho e cor de fonte, assim como formatação de parágrafo. No
XML você utiliza as tags para descrever os dados, como exemplo tags de assunto,
título, autor, conteúdo, referências, datas, etc
60
O XML ainda conta com recursos tais como folhas de estilo definidas com
Extensible Style Language (XSL) e Cascading Style Sheets(CSS) para a
apresentação de dados em um navegador. O XML separa os dados da
apresentação e processo, o que permite visualizar e processar o dado como
quiser, utilizando diferentes folhas de estilo e aplicações
2.4.3.4. Principais benefícios da linguagem XML
O objetivo do XML é trazer flexibilidade e poder às aplicações Web.
Dentre os benefícios para desenvolvedores e usuários temos:
Buscas mais eficientes
Os dados em XML podem ser unicamente "etiquetados", o que permite
que, por exemplo, uma busca por livros seja feita em função do nome do autor.
Atualmente, uma busca com o nome do autor poderia levar a qualquer site que
tivesse referência a tal nome, não importando se fosse o autor do livro ou
simplesmente um livro sobre o autor. Sem o XML é necessário para a aplicação
de procura saber como é esquematizado e construído cada banco de dados que
armazena os dados de interesse, o que é impossível. O XML permitiria definir
livros por autor, título, assunto, etc, o que facilitaria enormemente a busca.
Desenvolvimento de aplicações flexíveis para a Web
O desenvolvimento de aplicações Web em três camadas, ou three-tier, é
altamente factível com o XML. Os dados XML podem ser distribuídos para as
aplicações, objetos ou servidores intermediários para processamento. Esses
mesmos dados também podem ser distribuídos para o desktop (pc e similares)
para ser visualizado em um navegador.
61
Integração de dados de fontes diferentes
Atualmente é praticamente impossível a procura em múltiplos bancos de
dados e incompatíveis. O XML permite que tais dados possam ser facilmente
combinados. Essa combinação seria feita via software em um servidor
intermediário, estando os bancos de dados na extremidade da rede.
Os dados poderiam ser distribuídos para outros servidores ou clientes para que
fizessem o processamento, a agregagem e a distribuição.
Computação e manipulação local
Os dados XML recebidos por um cliente são analisados e podem ser
editados e manipulados de acordo com o interesse do usuário. Ao contrário de
somente visualizar os dados, os usuários podem manipulá-los de várias formas.
Os recursos disponíveis do Document Object Model (DOM) permitem que os
dados sejam manipulados via scripts ou outra linguagem de programação.
A separação da interface visual dos dados propriamente ditos permite a criação de
aplicações mais poderosas, simples e flexíveis.
Múltiplas formas de visualizar os dados
Os dados recebidos por um usuário podem ser visualizados de diferentes
formas uma vez que o XML define somente os dados e não o visual. A
interpretação visual poderia ser dada de várias maneiras diferentes, de acordo
com as aplicações. Os recursos de CSS e XSL permitem essas formas
particulares de visualização.
62
Atualizações granulares dos documentos
Os dados podem ser atualizados de forma granular, evitando que uma
pequena modificação no conjunto de dados implique na busca do documento
inteiro novamente. Dessa forma, somente os elementos modificados seriam
enviados pelo servidor para o cliente. Atualmente, uma modificação em um item
de dados acarreta na necessidade de atualização da página inteira.
O XML também permite que novos dados sejam adicionados aos já existentes,
sem a necessidade de reconstrução da página.
Fácil distribuição na Web
Assim como o HTML, o XML, por ser um formato baseado em texto
aberto, pode ser distribuída via HTTP sem necessidade de modificações nas
redes existentes.
Escalabilidade
Devido ao fato dos documentos XML separarem completamente os dados
da forma com a qual são visualizados, autores de aplicações de visualização de
dados podem torná-las muito poderosas e interativas, permitindo ao usuário
visualizar os dados da forma que lhe agrade. Dessa forma, a interatividade, em
termos, não dependeria tanto da comunicação cliente servidor, mas sim seria feita
"offline", reduzindo o tráfego do link com o servidor.
63
Compressão
A compressão de documentos XML é fácil devido à natureza repetitiva
das tags usadas para definir a estrutura dos dados. A necessidade de compressão
é dependente da aplicação e da quantidade de dados a serem movidos entre
clientes e servidores. Os padrões de compressão do HTTP 1.1 podem ser usados
para o XML
2.4.3.5. Tipos de aplicações
Apesar da tecnologia XML estar passando ainda por um processo
evolutivo é uma tecnologia amplamente experimentada em diversas aplicações.
Pelo fato de praticamente não apresentar restrições satisfazendo assim as mais
variadas demandas surgem aplicações das mais diversas, das quais algumas
serão apresentadas a seguir.
RDF framework para descrição e troca de metadados, permite
codificação, troca e reuso de metadados estruturados, também é
visto como uma linguagem baseada em XML para descrição de
informações
WML linguagem baseada em XML que possibilita a especificação
de conteúdo para dispositivos móveis;
CML aplicação XML para fazer descrição das informações de
estruturas moleculares;
OFX aplicação XML que permite que você especifique transações
financeiras;
MathML, aplicação XML para descrever equações matemáticas;
64
SMLI, aplicação XML que permite elaborar apresentações
multimídia;
SVG aplicação XML para descrever imagens bidimensionais;
VML aplicação XML direcionadas a gráficos vetoriais, os quais
podem ser embutidos em paginas HTML;
VoiceXML aplicação XML que possibilita uma interação entre o
usuário e o computador de forma falada;
TalkML aplicação XML destinada a ser empregada em browser que
ofereçam suporte para dialogo com interação de voz;
CDF aplicação XML utilizada para definir canais ou channels. Essa
tecnologia permite o envio automático de conteúdo para usuários.
65
Como vimos às aplicações da linguagem XML são muitas, mas para esse
trabalho foi concentrada a atenção na Wireless Markup Language (WML) a qual
será tratada no próximo capitulo desta monografia.
2.4.3.6. Exemplo em XML
<?xml version="1.0"?>
<doc xml:base="http://example.org/today/"
xmlns:xlink="http://www.w3.org/1999/xlink">
<head>
<title>Virtual Library</title>
</head>
<body>
<paragraph>See <link xlink:type="simple" xlink:href="new.xml">what's
new</link>!</paragraph>
<paragraph>Check out the hot picks of the day!</paragraph>
<olist xml:base="/hotpicks/">
<item>
<link xlink:type="simple" xlink:href="pick1.xml">Hot Pick #1</link>
</item>
<item>
<link xlink:type="simple" xlink:href="pick2.xml">Hot Pick #2</link>
</item>
<item>
<link xlink:type="simple" xlink:href="pick3.xml">Hot Pick #3</link>
</item>
</olist>
</body>
</doc>
66
2.4.4. WML
2.4.4.1. Demonstrando o WML
Conforme Silva filho (2004) e Forta (2001) a WML é uma linguagem de
programação baseada no XML (eXtensible Markup Language). A WML(Wireless
Markup Language) poderia ser definida como uma filha da XML. Pois foi gerada
totalmente baseando-se na XML, com isso, praticamente todas as regras de
formatação da XML são iguais às da WML.
A especificação oficial do WML foi desenvolvida e é mantida pelo WAP
Fórum, um consórcio industrial fundado pela Nokia, Phone.com, Motorola, e
Ericsson. As especificações definem a sintaxe, variáveis e elementos usados no
WML.
A WML foi construída para ser compatível com telefones celulares atuais, já
que os mesmos não podem agüentar a variedade de formatação da HTML (como
diferentes cores, etc). Com isso, a WML veio para deixar as páginas para
celulares bem leves, e portanto compatíveis com o sistema. WML junta toda a
facilidade da XML(XSL, DOM, DTD, etc) com o poder de outras linguagens de
programação que agem do lado do servidor como o ASP e PHP. Com isso, um
site com base de dados em XML, pode também disponibilizar uma página para
celulares compartilhando a mesma base de dados. Isso torna o site WAP, mais
dinâmico.
Entendendo: se um telefone ou outro dispositivo de comunicação é tido
como WAP, significa que este possui um software, conhecido como microbrowser,
e este software tem a capacidade de entender tudo que é especificado como
sendo WML.
67
Para executar páginas em WML, é necessário que tenha um site
hospedado em um servidor com suporte a WML ou que em seu micro esteja
instalado um emulador WML.
O WML foi desenvolvido para uma pequena banda, e displays muitos
pequenos. Uma parte deste desenvolvimento é o conceito utilizado como
deck/cards. Um único documento WML é conhecido como Deck. Uma única
interação com o usuário é conhecida como card. A vantagem do projeto é que
múltiplas telas podem ser baixadas para o cliente numa única requisição. As
páginas WML são chamadas de DECKS, esses DECKS são formados pelos
CARDS. A Figura 11 abaixo representa essa estrutura.
Figura 11 Exemplo de um Deck
2.4.4.2. Elementos WML
O WML define elementos que podem ser combinados para que se possa
criar documentos WML. Os elementos podem ser divididos em dois grupos: os
elementos Deck/Card e os elementos Eventos, conforme demostrado abaixo.
68
A utilização de cada um destes elementos, é da seguinte forma:
<elemento>valor do elemento</elemento>
2.4.4.3. Regras básicas de formatação:
As tags WML diferenciam as letras maiúsculas de minúsculas, ou
seja <wml> é diferente de <WmL>.
Todas as tags devem ser fechadas;
Os documentos WML devem ser salvos com a extensão .wml;
Qualquer tipo de texto deve ser escrito entre as tags <p> e </p>.
Na formatação de texto em WML as tags são usadas para
"incrementar" o texto da mesma forma que no HTML.
<strong>Destacado</strong>;
<i>Itálico</i>;
<b>Negrito</b>;
<u>Sublinhado</u>;
<small>Pequeno</small>;
<big>Grande</big>.
Deck Card
Eventos Tarefas Variáveis Entradas Ancoras, Imagens e Timers
Formatação de Textos
Wml Do Go setvar Input A Br
Card Ontimer Prev Select Anchor P
Template Onenterforward Refresh Option Img Table
Head onenterbackward Noop Optgroup timer Tr
Access onpickonevent Fieldset td
Meta postfield
69
2.4.4.4. Programando em WML
Nesta introdução à linguagem WML propriamente dita, iremos ver como é a
estrutura de um arquivo WML, e quais as regras de formatação.
Todos os documentos WML seguem a uma regra DTD, que é especificada
no início de todo documento. Para você entender melhor a estrutura de um
arquivo WML, vamos ver o exemplo de um código-fonte:
Na Figura 12 abaixo podemos ver como é formado um documento WML simples
e ao lado o código do mesmo.
<?xml version="1.0" encoding="ISO-8859-
1"?>
<!--Defino o DTD padrão-->
<!DOCTYPE wml PUBLIC "-
//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="Index" title="Inicial">
<p>Isso é um documento <u>WML</u> de
exemplo</p>
<!--Fecho o CARD-->
</card>
</wml>
Figura 12 Exemplo documento WML
70
2.4.4.5. Aplicações com WML: Variáveis
Como vários cartões podem estar contidos em um deck, alguns
mecanismos precisam estar posicionados para reter dados, enquanto o usuário
navega de cartão em cartão. Este mecanismo é fornecido pelas variáveis WML..
As variáveis podem ser criadas e usadas utilizando-se diversos métodos
diferentes. Por exemplo: Usando o elemento <setvar> como resultado do usuário
que executa uma tarefa. O elemento <setvar> pode ser usado para "setar" uma
variável para os seguintes elementos: go, prev e refresh. O elemento da linha
abaixo criará uma variável "v1" com um valor "meu":
<setvar name="v1" value="meu"/>
As Variáveis também são "setadas" através dos elementos de entrada
(input, select, option, etc.). Uma variável é automaticamente criada
correspondendo a um atributo de um elemento de entrada. Por exemplo, o
elemento da linha abaixo criará uma variável de nome "v1":
<select name="v1" title="v1 Value:">
2.4.4.6. Criando um Deck WML
Neste exemplo, nós criaremos um Deck WML que nos permite
primeiramente selecionar um username da lista, entrar com uma senha, então
temos nossas seleções repetidas. Basicamente será mostrada a manipulação de
entrada, dos eventos e das variáveis num único Deck que utiliza vários cartões
(cards).
71
Como você pode ver, na o prolog deste documento contém a versão do
XML. Depois deste, vem o elemento do documento WML, o Deck, que contém três
cartões: Login, Senha e Resultado. Cada um destes cartões é definido usando um
elemento <card>. Os cartões do Login Figura 13 e da Senha Figura 14, também
definem Eventos, eles utilizam o elemento <do type ="accept"> para definir o
evento a ser chamado.
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="Login" title="Login">
<do type="accept" label="Senha">
<go href="#Senha"/>
</do>
<p>
Usuário:
<select name="nome" title="Nome:">
<option value="joão">João</option>
<option
value="Sergio">Sergio</option>
<option value="Maria">Maria</option>
<option
value="Claudio">Claudio</option>
</select>
</p>
</card>
Figura 13 Cartão Login
72
Quando o elemento "accept" é encontrado, ele é mostrado no display do
celular (ou outro dispositivo) como uma opção. Selecionando uma destas opções,
o elemento <go> será analisado.
Se você está familiarizado com a tag (anchor) <a> no HTML, e você
conhece as especificações do atributo href, então se pode fazer um link no
browser para uma âncora selecionada .
<card id="Senha" title="Senha:">
<do type="accept" label="Resultado">
<go href="#Resultado"/>
</do>
<p>
Senha: <input type="text"
name="senha"/>
</p>
</card>
Figura 14 Cartão Senha
73
O elemento WML <go> e o atributo href trabalham da mesma maneira. Com
HTML, para fazer um link para outro cartão no mesmo documento, você
simplesmente insere o símbolo # antes do link. Por exemplo, um link para o cartão
Resultado, é só definir o seguinte elemento, veja Figura 15 abaixo.
<go href="#Results"/>
<card id="Resultado"
title="Resultado:">
<p>
Entrada:<br/>
Nome: $(nome)<br/>
Senha: $(senha)<br/>
</p>
</card>
</wml>
Figura 15 Cartão Resultado
74
Este cartão resultado emprega variáveis recuperando e exibindo o
conteúdo das variáveis Nome e Senha. Lembre-se que as variáveis são
substituídas em um cartão ou deck usando a seguinte sintaxe:
$(nome_da_variável)
2.4.4.7. Imagens ícones
Podemos inserir imagens que já vem pré-definidas na memória. Para isso,
podemos usar a propriedade localsrc do comando <img>, para acessar os ícones
internos, porém não podemos esquecer de acrescentar de usar alt, caso a versão
WAP do aparelho não suporte imagens. Veja o exemplo a seguir:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD
WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card title="Monog. Jayme">
<p>Imagem 1 :
<img alt=":-)" localsrc="smileyface" src=""/> </p>
<p>Imagem 2 :
<img alt=":-)" localsrc="videocam" src=""/> </p>
<p>Imagem 3:
<img alt=":-)" localsrc="house" src=""/> </p>
<p>Imagem 4:
<img alt=":-)" localsrc="dog" src=""/> </p>
<p>Imagem 5:
<img alt=":-)" localsrc="heart" src=""/> </p>
<p>Imagem 6:
<img alt=":-)" localsrc="car" src=""/> </p>
<p>Imagem 7:
<img alt=":-)" localsrc="star3" src=""/> </p>
</card>
</wml>
Figura 16 CartãoExemplo Imagem
75
2.4.4.8. Imagens wbmp
Podemos inserir fotos, em página WAP, mas é importante ressaltar que o formato
de imagens WAP é diferente do formato usado nas páginas HTML, já que o
sistema é diferente dos PCs e navegadores convencionais. O formato em questão
é o WBMP (Wireless BitMap) um gráfico em preto e branco com resolução de
100x70 que pode ser exibida em páginas WML.
Existem programas que transformar GIFs e JPGs em WBMP. Abaixo na Figura 17
temos um exemplo de como fica.
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-
//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">
<wml>
<card title="Monografia Jayme">
<p>
Veja como ficou:
<img src="logoDIN.wbmp" alt="rastaguy"/>
</p>
</card>
</wml>
Figura 17Cartão Imagem Logo DIN
76
2.4.4.9. Acentuação na WML
Para usarmos caracteres especiais na linguagem WML, é necessário usar o
seu código equivalente da tabela Latin-1 (ISO 8859-1). Se você quiser colocar a
palavra Endereço por exemplo, e usar a cedilha, o resultado não será o esperado
pois a palavra sairá escrita de forma incorreta. Para que saia escrita da forma
correta, é necessário escrevê-la assim:
Endere�ccedil;o.
Outro ponto importante é a visualização do conteúdo WML. Existem vários
browser que simulam o telefone celular, entre eles está o Opera e o M3Gate que
tem o formato de um celular.
77
2.5. Linguagem de programação
2.5.1. PHP
2.5.1.1. O que é PHP?
Segundo Ullman (2001) PHP significa “Personal Home Page” é uma
linguagem de criação de scripts embutida na HTML, compatível com varias
plataformas do lado do servidor. Dizer que o PHP é embutido no HTML significa
que ele pode ser colocado no seu código HTML sendo este o código com quais
todas as páginas da web são criadas. PHP é uma linguagem de criação de scripts,
em oposição à linguagem de programação. Isso significa que ela é criada para
fazer algo apenas depois que um evento ocorre. PHP é uma linguagem que
permite criar sites WEB dinâmicos, possibilitando uma interação com o usuário
através de formulários, parâmetros da URL e links. Outra diferença de PHP com
relação a linguagens semelhantes a Javascript é que o código PHP é executado
no servidor, sendo enviado para o cliente apenas html puro. Desta maneira é
possível interagir com bancos de dados e aplicações existentes no servidor, com
a vantagem de não expor o código fonte para o cliente. Isso pode ser útil quando o
programa está lidando com senhas ou qualquer tipo de informação confidencial.
O que diferencia PHP de um script CGI escrito em C ou Perl é que o código
PHP fica embutido no próprio HTML, enquanto no outro caso é necessário que o
script CGI gere todo o código HTML, ou leia de um outro arquivo.
2.5.1.2. Instalação e configuração em ambiente windows
O servidor http que será utilizado para o desenvolvimento desta monografia
será é o Apache junto com mySQL, que será discutido em outro item.
78
A melhor maneira de testar o sistema é criar um arquivo chamado teste.php
e salvar no diretório raiz do servidor Apache. O arquivo deve conter o seguinte
código mostrado abaixo.
<?
phpinfo();
?>
Acessando a página através do servidor (http://localhost/teste.php),
devemos ter como resultado uma listagem de todas as configurações do PHP
conforme Figura 18 abaixo.
Figura 18 Resultado da execução da função phpinfo().
79
2.5.1.3. O que pode ser feito com PHP?
Ainda segundo Ullman (2001) basicamente, qualquer coisa que pode ser
feita por algum programa CGI pode ser feita também com PHP, como coletar
dados de um formulário, gerar páginas dinamicamente ou enviar e receber
cookies.
PHP também tem como uma das características mais importantes o suporte
a um grande número de bancos de dados, como dBase, Interbase, mSQL,
mySQL, Oracle, Sybase, PostgreSQL e vários outros. Construir uma página
baseada em um banco de dados torna-se uma tarefa extremamente simples com
PHP. Além disso, PHP tem suporte a outros serviços através de protocolos como
IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP. Ainda é possível abrir sockets
e interagir com outros protocolos.
2.5.1.4. Sintaxe Básica
O código PHP fica embutido no próprio HTML. O interpretador identifica
quando um código é PHP pelas seguintes tags:
<?php
comandos
?>
<script language=”php”>
comandos
</script>
<?
comandos
?>
<%
comandos
%>
80
O tipo de tags mais utilizado é o terceiro, que consiste em uma
“abreviação” do primeiro. Para utilizá-lo, é necessário habilitar a opção short-tags
na configuração do PHP. O último tipo serve para facilitar o uso por
programadores acostumados à sintaxe de ASP. Para utilizá-lo também é
necessário habilitá-lo no PHP, através do arquivo de configuração php.ini.
2.5.1.5. Separador de instruções
Entre cada instrução em PHP é preciso utilizar o ponto-e-vírgula, assim
como em C, Perl e outras linguagens mais conhecidas. Na última instrução do
bloco de script não é necessário o uso do ponto-e-vírgula, mas por questões
estéticas recomenda-se o uso sempre.
2.5.1.6. Nomes de variáveis
Toda variável em PHP tem seu nome composto pelo caracter $ e uma
string, que deve iniciar por uma letra ou o caracter “_”. PHP é case sensitive, ou
seja, as variáveis $vivas e $VIVAS são diferentes. Por isso é preciso ter muito
cuidado ao definir os nomes das variáveis. É bom evitar os nomes em maiúsculas,
pois como veremos mais adiante, o PHP já possui algumas variáveis pré-definidas
cujos nomes são formados por letras maiúsculas.
81
2.5.1.7. Comentários
Comentários de uma linha:
Marca como comentário até o final da linha ou até o final do bloco de
código PHP – o que vier antes.
Pode ser delimitado pelo caracter “#” ou por duas barras ( // ).
Exemplo:
<? echo “teste”; #isto é um teste ?>
<? echo “teste”; //este teste é similar ao anterior ?>
Comentários de mais de uma linha:
Tem como delimitadores os caracteres “/*” para o início do bloco e “*/”
para o final do comentário.
Se o delimitador de final de código PHP ( ?> ) estiver dentro de um
comentário, não será reconhecido pelo interpretador.
Exemplos:
<?
echo “teste”; /* Isto é um comentário com mais
de uma linha, mas não funciona corretamente ?>
*/
<?
echo “teste”; /* Isto é um comentário com mais
de uma linha que funciona corretamente
*/
?>
82
2.5.1.8. Criando scripts
Será mostrado um script com uma saída simples inserido no HTML. Para
digitar um script em PHP pode-se utilizar qualquer editor de texto, em nosso caso
utilizei o “Bloco de notas” e para ver como fica na WEB estou utilizando a
ferramenta "DPHPEdit" ou "Davor's PHP Editor", é um IDE (Integrated
Development Environment) ambiente de desenvolvimento integrado para
linguagem PHP.
Isso mostra como o PHP funciona, o script é executado no servidor, ficando
disponível para o usuário apenas o resultado, conforme mostra a Figura 19 e
Figura 20. respectivamente
Figura 19 Script PHP
Figura 20 Apresentação do Exemplo Script1
83
Podemos também escrever um script que produza exatamente o mesmo
resultado utilizando uma variável, como mostra o código abaixo.
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?php
$texto = "Primeiro Script";
echo $texto;
?>
</body>
</html>
2.5.1.9. Enviando Dados para o Servidor http
O protocolo HTTP provê dois principais métodos para enviar informações
para o servidor web. São POST e GET
A requisição GET inicia com a palavra GET, inclui o documento solicitado e
encerra com a combinação dos caracteres carriage return e line feed. GET
/index.html crlf Pelo método GET também é possível passar parâmetros da
requisição. GET /index.php?id=0024horas&tipo=Taxi crlf GET permite uma
quantidade de dados limitada a 1024 caracteres, o que pode gerar perda de
informações. Pelo GET, como as informações fazem parte da URL, todos os
dados podem ser vistos pelo usuário. Pode ser perigoso quando informações
sigilosas estão envolvidas (senha).
84
A versão 1.0 do protocolo HTTP trouxe inovações, como o uso de headers
em mensagens de requisição e de resposta. Headers são informações trocadas
entre o navegador e o servidor de modo transparente ao usuário, contendo dados
sobre o tipo e a versão do navegador, a página de onde partiu a requisição (link),
tipos de arquivos aceitos como resposta, e uma série de outras informações.
Através da utilização de headers é possível enviar os parâmetros da URL
solicitada sem expor esses dados ao usuário, e sem limitar seu tamanho. O
usuário não deve se preocupar com os headers, em codificar os dados ou em
calcular o tamanho do corpo da mensagem. O browser faz isso de maneira
transparente. O método GET pode ser utilizado através da digitação de um
endereço no local apropriado do navegador, através de um hiperlink (com a
conversão dos dados para o formato urlencode) e através de formulários HTML. O
uso de formulários HTML é a única maneira possível de submeter dados pelo
método POST.
2.5.1.10. Utilizando formulários HTML
Ao clicar num botão “Submit” em um formulário HTML as informações dos campos
serão enviadas ao servidor especificado para que possa ser produzida uma
resposta. O PHP trata esses valores como variáveis, cujo nome é o nome do
campo definido no formulário. O exemplo abaixo mostra isso, e mostra também
como o código PHP pode ser inserido em qualquer parte do código HTML:
Ao salvar o arquivo da Figura 21 e carregá-lo no browser, o usuário verá
apenas um formulário que contém um espaço para digitar o texto, como visto na
Figura 22. Ao digitar um texto qualquer e submeter o formulário, a resposta, que é
o mesmo arquivo PHP (indicado pela constante $PATH_INFO, que retorna o
nome do arquivo) será como na Figura 23.:
85
Figura 21 Submit
Figura 22 Envia texto
Figura 23 Retorna
86
Isso ocorre porque o código PHP testa o conteúdo da variável $texto.
Inicialmente ele é uma string vazia, e por isso nada é impresso na primeira parte.
Quando algum texto é digitado no formulário e submetido, o PHP passa a
tratá-lo como uma variável. Como no formulário o campo possui o nome “texto”, a
variável com seu conteúdo será $texto. Assim, no próximo teste o valor da variável
será diferente de uma string vazia, e o PHP imprime um texto antes do formulário.
2.5.1.11. Outras facilidades do PHP
Como podemos observar existe uma enorme simplicidade em manipular as
informações utilizando PHP. Abaixo farei uma breve descrição das funcionalidades
oferecidas por esta linguagem.
Headers:
O comando header permite enviar cabeçalhos html para o cliente.
Gravando cookies:
Para gravar cookies no cliente, deve ser utilizada a função setcookie.
Lendo cookies gravados:
Os cookies lidos por um script PHP ficam armazenados em duas variáveis.
Enviando e−mail
Para enviar e−mail através de um script PHP é bastante simples. Basta utilizar a
função mail:
87
Manipulando arquivos:
Através do PHP é possível ter acesso aos arquivos do sistema, e até arquivos
remotos, como:
Copiar Arquivos
Verificar o tamanho de um arquivo
Listar o conteúdo de um diretório, através de um scritps
Mostrar o tamanho do arquivo, em bytes
Verificar se um arquivo existe
Abrir arquivos para leitura e/ou escrita
Encerrar a manipulação de um arquivo
Ler um arquivo
Escrever em um arquivo
Gravar um arquivo
Também, como toda linguagem, o PHP utiliza-se de outras propriedades comum a
qualquer linguagem como:
Tipos de variáveis
Constantes
Operadores
Estruturas de controles
Funções
Variáveis
Classes e Objetos
88
2.5.2. ASP
2.5.2.1. O que é ASP?
Active Server Pages (ASP) é uma linguagem para geração de páginas
HTML dinamicamente. Segundo Pereira (2001) Páginas de Servidor Ativas são
um ambiente para programação por scripts no servidor, que você pode usar para
criar páginas dinâmicas, interativas e de alta performance. Como as páginas ASP,
os scripts rodam no servidor e não no cliente. É o próprio servidor que transforma
os scripts em HTML padrão, fazendo com que qualquer browser do mercado seja
capaz de acessar um site que usa ASP.
Entre os recursos que podem ser implementados via ASP, podemos
citar:
Programação em VBScript ou JScript
Acesso à banco de dados
Sessões (persistência de informações no servidor)
ASP surgiu juntamente com o lançamento do Internet Information Server
3.0. Esta é uma solução Microsoft, que exige que o seu servidor precisa rodar um
sistema operacional da Microsoft (Windows 95 ou NT). Os seguintes servidores
suportam o uso de páginas ASP:
Microsoft Internet Information Server versão 3.0 no Windows NT Server
Microsoft Peer Web Services versão 3.0 no Windows NT Workstation
Microsoft Personal Web Server no Windows 95 ou Windows 98
A grande vantagem, porém, é que existe esta exigência apenas do lado do
servidor. No lado do cliente, você pode utilizar qualquer browser, mesmo os que
não suportam VBScript (como os da Netscape).
89
2.5.2.2. Vantagens do ASP
Todos os browser suportam ASP. Isto acontece pelo fato das páginas ASP
serem processadas pelo servidor. O que o cliente recebe é somente código HTML
padrão. O ASP possui uma Independência do browser, podendo rodar páginas
complexas no servidor e enviar somente os resultados para o cliente.
As páginas ASP são capazes de guardar o estados, durante a execução de
uma aplicação ASP podem armazenar dados que são mantidos durante toda uma
sessão. Desta forma, um usuário pode fornecer seu nome somente uma vez em
uma página e as demais páginas podem obter este dado automaticamente. Este
recurso é ideal para aplicações de venda pela Internet.
Uma aplicação ASP pode ser usada com qualquer banco de dados
compatível com ODBC. Isto inclui dados do Access, Microsoft SQL Server, Oracle,
Sybase, Informix, DB2, entre outros, além do que permitem visualizar, atualizar e
adicionar informações nos servidores SQL
O recurso de segurança do ASP é parte integrante do IIS (Internet
Information Server), que tem sua segurança integrada com o Windows NT Server.
É fácil restringir o acesso a páginas ASP usando os esquemas de autenticação do
IIS (senha básica da Web, senha do NT ou certificados de cliente). E ainda é
possível dar segurança aos dados transmitidos usando SSL. Como o Servidor
retorna somente o resultado html, o código fonte (lógica) fica preservado.
ASP lhe dá todos os recursos de aplicações CGI de uma forma mais fácil e
mais robusta. Com ASP, é bem mais fácil criar conexões entre o browser e os
dados em formatos normalmente incompatíveis com HTML, como bancos de
dados. ASP é mais robusto por não criar um processo no servidor para cada
90
pedido do usuário, como acontece com o CGI. Usando ASP ao invés de CGI, um
servidor pode atender a um grande número de pedidos de usuários de forma mais
rápida e usando menos memória. Além disso, criar páginas ASP é em geral muito
mais fácil do que criar aplicações CGI.
Quanto a linguagens script há suporte nativo para JScript (o JavaScript da
Microsoft) e VBScript. Existem plug-ins ActiveX para dar suporte para outras
linguagens como REXX, PERL, and Python.
2.5.2.3. Servidor
O computador que hospedará as páginas deverá rodar Windows NT Server,
Windows NT Workstation, Windows 95 ou Windows 98. Portanto deve estar
instalado o Microsoft Internet Information Server (IIS), o Peer Web Services (PWS)
ou o Personal Web Server (PWS, também) instalado neste computador. O
Windows NT 4.0 vem com a versão 2.0 do IIS, que não é suficiente. A partir de um
Windows NT Server com o IIS3 ou IIS4 (Internet Information Server) instalado, é
possível rodar códigos que geram páginas HTML dinamicamente, e então, mandá-
las para o Browser. Assim sendo, sempre que uma página ASP for requisitada
pelo Browser, esta página será executada pelo servidor, e a partir daí, será gerada
uma página HTML, a qual será enviada para o Browser que a requisitou. É
possível então, a partir de uma única rotina, gerar uma página HTML contendo os
registros ,de um banco de dados.
Detalhando um pouco mais, um usuário qualquer entra na página principal
da agenda virtual da sua empresa. Nesta página existem links para todas as letras
do alfabeto e para todas as cidades listadas na agenda. Esse usuário clica no link
na letra A (poderia ser de qualquer outra letra), e então uma página ASP (uma
rotina ASP) é acionada no servidor. O servidor por sua vez, vai ler e executar esta
página, o que significa que, em primeiro lugar, o servidor abrirá o banco de dados,
ai então, fará uma consulta a este banco de dados requisitando todos os registros
91
cujo nome comece com a letra A. Aí então o servidor cria uma página HTML
contendo todos esses registros numa tabela.
2.5.2.4. Banco de Dados
A linguagem ASP não serve apenas para consultas a banco de dados.
Serve também para envio e recebimento de correio eletrônico via páginas HTML,
para criação rotinas de propaganda rotativa, para identificação e autenticação de
usuários, para leitura de arquivos texto e uma infinidade de outras aplicações.
Se você pretende usar os recursos de acesso a bancos de dados, certifique
se os dados estão acessíveis através de ODBC. Você precisará de um driver de
ODBC instalado e funcionando no servidor. Se você optou por usar o Access,
instale uma versão 7.0 (95) ou superior no Servidor. Isto garantirá a presença do
driver ODBC e facilitará a criação dos seus bancos de dados. Se você preferir
utilizar o SQL Server, garanta que o driver ODBC está instalado.
Para usar os recursos de acesso a bancos de dados, deve estar
configurada uma "Fonte de Dados" ODBC para o banco de dados. Isto é feito
usando a opção "ODBC" do "Painel de Controle" do Windows. Se for usar o SQL
Server, o usuário devera ter direito de acesso ao banco de dados.
2.5.2.5. VBScript e ASP
A linguagem ASP é, na verdade, uma junção de programação em VBScript
e Objetos ActiveX. VBScript é uma linguagem criada a partir do Visual Basic, mas
com algumas limitações, por motivos de segurança.
92
Objetos ActiveX são objetos, ou melhor, funções prontas, já existentes no
servidor. Essas funções captam os parâmetros de entrada dos dados, manipula-os
de acordo a sua função e então os envia para a saída. Um exemplo de ActiveX é o
Objeto ASPMail, o qual capta os dados de entrada (nome, email, corpo da
mensagem, etc), cria um email com esses dados e depois envia o email.
A linguagem ASP tem uma estrutura muito bem elaborada, uma vez que ela
pode ser implementada com os chamados Objetos. A linguagem ASP, além de
trazer todo o poder do VBScript para a página HTML, traz ainda o poder dos
Componentes ActiveX e dos Objetos. Os componentes ActiveX, simplificando
bastante, são bibliotecas que contém vários objetos reunidos. Principalmente
objetos que necessitam de instâncias para funcionar, o que significa que, por
exemplo, cada acesso a um banco de dados deve ocupar uma instância daquele
objeto.Objetos são add-ons que dão a capacidade de captura e transmissão de
variáveis entre as páginas, de criação e manipulação de cookies, sessions e
publicidade rotativa nos sites, a capacidade de captura de informações sobre o
Browser do usuário e sobre o servidor, de consulta, alteração e adição de dados
em Bando de Dados, de envio e recebimento de emails via página WEB, e uma
infinidade outras funções. Esses objetos podem ser criados por outras empresas,
implementando assim o poder da linguagem ASP.
Uma vez que a linguagem ASP é usada apenas em alguns "pedaços" de
páginas HTML, existe um símbolo para diferenciar o que é programação HTML e o
que é programação ASP: <% código asp %>
Abaixo segue a simbologia e as convenções de uso da linguagem ASP.
<% -> início do trecho de código ASP
%> -> final do trecho de código ASP
93
Abaixo um exemplo de um código que exibe a frase Ola Mundo!!! de três
modos diferentes. O primeiro, usando apenas programação HTML, o segundo,
usando apenas comandos ASP, e o terceiro, é uma mistura de código HTML com
ASP.
<html>
<head><title>Como funciona o ASP?</title></head>
<body bgcolor="#FFFFFF">
<p> Ola Mundo primeiro esse!!!</p>
<% response.write "<p> Ola Mundo depois esse !!!</p>" %>
<p>
<%="Ola Mundo final !!!"%>
</p>
</body></html>
Como se percebe, não é necessário construir a página inteira com códigos
ASP. É possível criar páginas onde há a mesclagem das duas programações. A
única exigência é que, a partir do momento em que o código da página tenha pelo
menos uma linha na linguagem ASP, a terminação do nome da página deve ser
.asp. Somente assim o servidor poderá distinguir quais páginas devem ser
executadas antes de enviar ao Browser
94
2.6. Linguagem de Script
2.6.1. Java Script
2.6.1.1. O que é JavaScript?
Conforme Torres (1997), e Alves (2004) JavaScript é uma nova linguagem
para criação de Home-Pages. Funções escritas em JavaScript podem ser
embutidas dentro de seu documento HTML. Com JavaScript temos muitas
possibilidades para "incrementar" documentos HTML com elementos
interessantes. Por exemplo, responder facilmente a eventos iniciados pelo usuário.
Alguns efeitos que são possíveis agora com JavaScript antes eram
possíveis apenas com CGI. Assim você pode criar na verdade sofisticadas
páginas com a ajuda do JavaScript.
2.6.1.2. Diferença entre JavaScript e Java
Apesar dos nomes bem parecidos, Java não é o mesmo que JavaScript!
Estas são duas técnicas diferentes de programação na Internet. Java é uma
linguagem de programação. JavaScript é uma linguagem de hiper-texto. A
diferença é que realmente podemos criar programas em Java. Mas muitas vezes
precisamos apenas criar um efeito bonito sem ter que se incomodar com
programação. A solução então é JavaScript, pois é fácil de entender e usar.
Podemos dizer que JavaScript é mais uma extensão do HTML do que uma
linguagem de programação propriamente dita
95
2.6.1.3. Executando o JavaScript
Em documentos HTML, a utilização da linguagem JavaScript, se dá sob a
forma de funções (applets), as quais são chamadas em determinadas situações
ou em resposta a determinados eventos, estas funções podem estar localizadas
em qualquer parte do código HTML, a única restrição é que devem começar com a
declaração <SCRIPT> e terminar com o respectivo </SCRIPT>, por convenção
costuma-se colocar todas as funções no início do documento (entre as TAGs
<HEAD> e </HEAD>, isso para garantir que o código JavaScript seja carregado
antes que o usuário interaja com a Home Page), ou seja, antes do <BODY>.
Exemplo:
<HTML>
<HEAD>
<TITLE>Exemplo</TITLE>
Se houvesse alguma função seria bom declará-la aqui!!!
</HEAD>
<BODY>
Esta linha está escrita em HTML
<SCRIPT>document.write("Aqui já é JavaScript");</SCRIPT>
Voltamos para o HTML
</BODY>
</HTML>
96
Este exemplo mostraria o seguinte:
Esta é uma linha escrita em HTML
Aqui já é JavaScript
Voltamos para o HTML
Este exemplo realmente não é dos mais úteis - poderia ter sido escrito mais
facilmente em HTML puro. O objetivo foi apenas demonstrar o uso das TAGs
<SCRIPT> e </SCRIPT>, tudo que está entre essas TAGs é encarado como
JavaScript.
É importante ressaltar, que como no C++, as linhas sejam terminadas
com; (ponto e virgula) a menos que a próxima instrução seja um ELSE e se você
precisar escrever mais de uma linha para executar uma condição seja ela em uma
estrutura For, If ou While, este bloco de instruções deve estar entre { } (chaves).
Inclusive a definição de funções segue este modelo, ou seja, todo o código da
função deve estar limitado por { (no início) e } (no final).
2.6.1.4. Suporte a JavaScript
Um browser que não suporta JavaScript, não conhece a TAG <SCRIPT>.
Ele ignora a TAG e logicamente todo o código que estiver sendo limitado por ela,
mostrando todo o código na tela como se fosse um simples texto HTML. Deste
modo o usuário veria o código JavaScript do programa dentro do documento
HTML e como certamente essa não deve ser a intenção, existe um meio de
esconder o código JavaScript dos browsers que não conhecem esta linguagem,
basta utilizar os comentários HTML <!-- e -->. O código do nosso exemplo anterior
ficaria assim:
97
<HTML>
<HEAD>
<TITLE>Exemplo</TITLE>
Se houvesse alguma função seria bom declará-la aqui!!!
</HEAD>
<BODY>
Esta linha está escrita em HTML
<SCRIPT>
<!-- Esconde o código JavaScript dos browsers mais antigos
document.write("Aqui já é JavaScript"); // -->
</SCRIPT>
Voltamos para o HTML
</BODY>
</HTML>
Se o browser não suportar JavaScript e não inserirmos o comentário HTML,
o que apareceria na tela seria:
Esta é uma linha escrita em HTML
document.write("Aqui já é JavaScript");
Voltamos para o HTML
Note que esse artifício não esconde completamente o código JavaScript, o
que ele faz é prevenir que o código seja mostrado por browsers mais antigos,
porém o usuário tem acesso a todas as informações do código fonte de sua Home
Page (tanto HTML, quanto JavaScript), para isso ele só precisa escolher a opção
Document Source, no menu View.
98
2.6.1.5. Detectar a versão do Browser
Este script usa as variáveis do sistema navigator.appName e
navigator.appVersion para saber qual o NAVEGADOR e a VERSÃO que estão
sendo usados pela pessoa que visita uma página. Depois ela usa o comando
document.write para exibir na tela estas informações apenas para ilustrar o
exemplo, mas na pratica a intenção seria usar estas informações para direcionar o
usuário para uma página compatível com o browser que ele estiver usando.
<html>
<head>
<title>JAVASCRIPT - Versão do Navegador</title>
<script>
function navegador()
{navegador_usado = navigator.appName
versao_navegador = navigator.appVersion
document.write("Você Está Navegando No "+navegador_usado+" Versão
"+versao_navegador+"")}
</script>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#0000FF" vlink= "#800080"
alink="#FF0000">
<center>
<font color="#FF0000" FACE="arial"><b>
<font size=+2>Este script é mais um exemplo da Monografia do
Jayme.<br><br></font>
<font size=+1>Nome e versão do seu Browser:</font></b>
</font><br><br>
<script>navegador()</script>
</center>
</body>
</html>
99
A Figura 24 abaixo mostra como ficaria o código mostrado anteriormente.
Figura 24 Versão do Browser em JavaScript
Criar janelas é uma das grandes características do JavaScript. Você pode
construir novas janelas, carregar documentos HTML, navegar pela Internet, tudo
isso através do JavaScript. Podemos mostrar abrir uma janela e escrever
qualquer coisa nela.
Como podemos ver no exemplo abaixo, clicando no botão da Figura 25
chamamos a função WinOpen() que cria uma nova janela ao chamar o método
open conforme Figura 26. Observando o código abaixo vemos que as primeiras
aspas contêm a URL da página. Ali você pode colocar o endereço de um
documento HTML que você quer que seja carregado. Se você as deixa em
100
branco, nenhuma página é carregada e se pode escrever nela com JavaScript! As
aspas seguintes especificam o nome da janela. Ali você pode escrever quase tudo
<html>
<head>
<script language="JavaScript">
function WinOpen() {
msg=open(" ","DisplayWindow",
"toolbar=no,directories=no,menubar=no");
msg.document.write("<HEAD><TITLE>MONOGRAFIA DO
JAYME</TITLE></HEAD>");
msg.document.write("<CENTER><h1><B>Mais um exemplo do
JavaScript!</B></h1></CENTER></Br></Br></Br><CENTER><h2><B>M
ONOGRAFIA DO JAYME</B></h2></CENTER>"); }
</script>
</head>
<body>
<form>
<P>Exemplo de como criar janelas no JavaScript.</br></br>
<input type="button" name="Button1"
value="Aperte-me" onclick="WinOpen()">
</br></br>Uma das grandes características da linguagem.</p>
</body>
</html>
101
Figura 25 Cria uma Janela JavaScript
Figura 26 Visão da Janela JavaScript
102
2.6.1.6. Outras aplicações para o Java Script
O Javascript é uma liguagem scripting que permita que você adicione a
programação real a seus webpages. Você pode criar pequenos processos ou
aplicações com o Javascript, como uma calculadora ou algum tipo de joguinho.
Entretanto, há usos mais sérios para o Javascript:
Detecção do browser: que detecta o browser usado por um visitante em sua
página. Dependendo do browser, uma outra página projetada especificamente
para esse browser pode então ser carregada.
Os Cookies que armazenam a informação no computador do visitante,
recuperando então esta informação automaticamente quando da próxima vez o
usuário visita sua página. Esta técnica é chamada “Cookies”.
Controle dos browsers que abrem páginas nas janelas customizadas,
onde você especifica se as teclas do browser, linha do menu, linha de status ou o
que quer que deva estar presente.
Validação dos campos dos formulários que são examinados na entrada
dos dado, antes de submeter um formulário. Um exemplo seria validação do email
para verificar se no local do endereço de email foi digitado “@”, caso contrário o
endereço não é válido.
103
2.6.2. WMLScript
2.6.2.1. O que é o WMLScritp:
O WMLScript é uma linguagem de script leve e procedural, segundo Forta
(2001), projetada para sofisticar e realçar as facilidades de navegação e
apresentação do WML, bem como proporcionar aos terminais de acesso sem fio
capacidade de servir conteúdo dinâmico aos assinantes com um mínimo de
interação sem fio.
Usando WMLScript, as seleções e entradas do usuário podem ser retidas e
distribuídas entre os cartões já carregados, eliminando então, transações
excessivas com os servidores remotos. Claro que com limitações para o usuário.
Dependendo da capacidade de memória do cliente, pode ser necessário dividir
vários cartões e vários Decks para evitar que um deck fique demasiadamente
grande.
É bom mencionar que quando o WML e o WMLScript trabalham juntos, eles
compartilham as mesmas variáveis. O WML trabalha com entrada e saída de
dados, exibição de conteúdo e processamento de eventos, mas não tem recursos
computacionais elaborados.
O WMLScript preenche este vazio. Ele pode definir funções que podem ser
chamadas a partir de programas WML. Dentro destas funções pode-se manipular
instruções de atribuição, chamadas de funções, construções de laços, tipos de
dados básicos fracamente tipados e um conjunto completo e poderoso de
operadores lógicos, aritméticos e de comparação.
104
2.6.2.2. O que pode ser feito com WMLScript:
Dar suporte a comportamento da Standardized Generalized
Markup Language(UI) de modo mais avançado;
Adicionar inteligência ao cliente;
Prover um mecanismo conveniente de acesso aos dispositivos e
seus periféricos;
Verificar a validade dos dados de entrada por parte do usuário;
Manejar mediante código funções próprias do terminal, como
realizar chamadas deste telefone, enviar mensagens e agregar
um número de telefone a uma lista de endereços;
Realizar alertas, mensagens de erro, confirmações, etc;
Reduzir a necessidade de idas e voltas ao servidor.
Ainda segundo Forta (2001)A linguagem é fracamente baseada na
linguagem de script da Internet o JavaScript, pois foi refinada para dispositivos de
banda estreita. Os tipos de dados suportados pelo WMLScript são lógico, inteiro,
ponto flutuante cadeia de caracteres e inválido, e a própria linguagem tenta fazer a
conversão automaticamente entre os tipos.
A linguagem suporta também várias categorias de operações, como:
atribuições, aritméticas, lógicas e comparações, e vários tipos de funções, como
locais, externas e de bibliotecas, além de definir uma série de bibliotecas incluindo
uma para linguagem, uma para cadeia de caracteres, uma para navegador, uma
para ponto flutuante e uma para diálogo.
105
2.6.2.3. Principais características da linguagem WMLScript:
O WMLScript foi criado para ser semelhante ao ECMAScript
(desenvolvido pela European Computer Manufacturers Association)
que foi a formalização do JavaScript, o que o torna bastante fácil de
aprender e usar.
Lógica Procedural: o WML proporciona comportamento dinâmico
simples usando eventos, tarefas e substituição de variáveis, mas
suas ações são limitadas por falta de lógica procedural.
Implementação compilada pelos gateways em uma representação
binária compacta, apropriada para redes sem fio e eficiente para ser
interpretada por terminais sem fio.
A linguagem é totalmente integrada com o navegador WML, o que
permite ao desenvolvedor construir serviços usando ambas as
tecnologias, escolhendo a mais apropriada para a tarefa.
Suporte internacional.
A linguagem pode ser usada para expor e estender a funcionalidade
do dispositivo sem mudanças no software deste.
106
2.6.2.4. Exemplo de programa escrito em WMLScript:
extern function submit()
{
var a = Lang.parseFloat(WMLBrowser.getVar("valor"));
var op = WMLBrowser.getVar("opcao");
var c = invalid;
if (op == "reais")
{
c = a / 3;
}
else if (op == "dolares")
{
c = a * 3;
}
WMLBrowser.setVar("resultado", String.toString(c));
WMLBrowser.go("exercicio4.wml#Resultado");
}
Este programa é constituído de apenas uma função responsável por fazer a
conversão dólar/reais. As variáveis ”a” e ”op” declaradas nas linhas 3 e 4, são
capazes de capturar os valores das variáveis ”valor” e ”opção” utilizadas pelo
documento WML. Entre as linhas sete e 14 são feitos os cálculos propriamente
ditos da conversão. Na linha 15 a variável ”resultado” recebe o valor encontrado
após a conversão e na última linha de código existe uma instrução para voltar ao
programa WML.
107
2.7. Banco de Dados
2.7.1. MySQL
2.7.1.1. O que é MySQL?
Segundo Anselmo (2000) e Parra (2004), o MySQL é um sistema de banco
de dados rápido e fácil, que consegue interagir com diversas linguagens de
programação Web, tais como ASP e PHP. O programa MySQL é tido como um
servidor robusto de bancos de dados SQL (Structured Query Language -
Linguagem Estruturada para Pesquisas) muito rápido, multi-tarefas e multi-
usuários. O Servidor MySQL pode ser usado em sistemas de produção com alta
carga e missão crítica bem como pode ser embutido em programas de uso em
massa. MySQL é uma marca registrada da MySQL AB, além de ser gratuito e de
código aberto.
É um sistema de gerenciamento de bancos de dados relacional. Um banco
de dados relacional armazena dados em tabelas separadas em vez de colocar
todos os dados em um só local. Isso proporciona velocidade e flexibilidade. O
MySQL é um programa interativo que permite você conectar com um servidor de
MySQL, perguntar e ver os resultados.
MySQL utilizado em modo de lote é quando colocamos perguntas em um
arquivo de antemão, e o MySQL executa os conteúdos do arquivo.
Para ver uma lista de opções fornecidas pelo MySQL, devemos abrí-lo com
-help: shell> mysql --help
Para conectar a um servidor, usualmente necessitaremos fornecer um
usuário ao MySQL e, mais provavelmente, uma senha. Se o servidor estiver numa
108
máquina que não tem onde se registrar, também necessitaremos especificar um
hostname.
shell> mysql -h host -u user -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 459 to server version: 3.22.20a-log
mysql>
O prompt diz que está pronto para receber os comandos. Algumas
instalações do MySQL permitem aos usuários conectar com o servidor e continuar
como anfitrião local. Quando é este o caso podemos nos conectar com o servidor
ao abrir o MySQL sem quaisquer opções:
shell> mysql
Depois de conectado, pode-se desconectar a qualquer momento, é só
digitar QUIT no mysql> prompt:
mysql> QUIT
Bye
Podemos também, nos desconectar digitando o comando control-D.
2.7.1.2. Como funciona o MySQL?
O MySQL funciona através de querys para a execução de comandos, como
por exemplo: CREATE DATABASE (criar Database, onde ficam todas as tabelas
que você cria), CREATE TABLE (criar tabela), INSERT INTO (inserir registro em
uma tabela) e UPDATE (Updade dos dados de um registro).
109
2.7.1.3. Perguntando (querys):
Neste ponto, é mais importante descobrir como emitir perguntas do que
criar tabelas, carregar e recuperar dados. Esta seção descreve os princípios
básicos de como entrar com os comandos, usando várias perguntas.
Para ilustrar as característica do programa, podemos iniciar com um
comando simples do MySQL. que pergunta ao servidor o número de sua versão e
a data corrente.
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| version() | CURRENT_DATE |
+--------------+--------------+
| 3.22.20a-log | 1999-03-19 |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
Esta pergunta ilustra várias coisas sobre MySQL:
Um comando normalmente consiste de uma declaração do SQL
seguida por um ponto-e-vírgula, há algumas exceções onde um
ponto-e-vírgula não é necessário, QUIT, mencionado anteriormente,
é um deles.
Quando emitimos um comando, MySQL envia ao servidor para
execução e exibe os resultados, então exibe mysql>, para indicar
que está pronto para outro comando.
110
MySQL exibe a saída da pergunta como uma tabela (filas e colunas).
A primeira fila contém os rótulos das colunas. As demais filas são os
resultados da pergunta. Normalmente, os rótulos da coluna são os
nomes das colunas que vêm das tabelas do banco de dados. Se
você está recuperando o valor de uma expressão, em vez de uma
coluna de tabela, MySQL rotula a coluna usando a expressão que foi
usada.
MySQL mostra quantas filas foram exibidas, e quanto tempo à
pergunta levou para ser executada, dando uma idéia rude de
performance do servidor. Esses valores são imprecisos porque eles
representam tempo de relógio de parede (não CPU ou tempo de
máquina), e porque eles são afetados por certos tipos de fatores.
Palavras chaves podem ser inseridas em qualquer caixa de entrada .
As seguintes perguntas são equivalentes:
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
Além das “Querys” apresentadas acima, existe a possibilidade de formar
várias outras por meio de agrupamento de palavras reservadas do programa
111
2.7.1.4. O uso do MySQL com linguagens de programação
Cada linguagem de programação tem suas peculiaridades, por isso não
podemos definir como usá-la de uma maneira geral, mas cada linguagem possui
um método de você executar uma query no Mysql com suas funções, as quais
variam, de acordo com a linguagem.
2.7.1.5. Acessando o MySQL via PHP
Estabelecendo conexões
Para acessar bases de dados num servidor mySQL, é necessário antes
estabelecer uma conexão. Para isso, deve ser utilizado o comando
mysql_connect, ou o mysql_pconnect. A diferença entre os dois comandos é que o
mysql_pconnect estabelece uma conexão permanente, ou seja, que não é
encerrada ao final da execução do script. As assinaturas dos dois comandos são
semelhantes, como pode ser verificado a seguir:
int mysql_connect(string [host[:porta]] , string [login] , string [senha] );
int mysql_pconnect(string [host[:porta]] , string [login] , string [senha] );
O valor de retorno é um inteiro que identifica a conexão, ou falso se a
conexão falhar. Antes de tentar estabelecer uma conexão, o interpretador PHP
verifica se já existe uma conexão estabelecida com o mesmo host, o mesmo login
e a mesma senha. Se existir, o identificador desta conexão é retornado. Senão,
uma nova conexão é criada.
112
Uma conexão estabelecida com o comando mysql_connect é encerrada ao
final da execução do script. Para encerrá−la antes disso deve ser utilizado o
comando mysql_close, que tem a seguinte assinatura:
int mysql_close(int [identificador da conexão] );
Se o identificador não for fornecido, a última conexão estabelecida será
encerrada.
IMPORTANTE: o comando mysql_close não encerra conexões estabelecidas com
o comando mysql_pconnect.
2.7.1.6. Selecionando a base de dados
Depois de estabelecida a conexão, é preciso selecionar a base de dados a ser
utilizada, através do comando:
mysql_select_db, que segue o seguinte modelo:
int mysql_select_db(string base, int [conexao] );
Novamente, se o identificador da conexão não for fornecido, a última
conexão estabelecida será utilizada.
2.7.1.7. Realizando consultas
Para executar consultas SQL no mySQL, utiliza−se o comando
mysql_query, que tem a seguinte assinatura:
int mysql_query(string query, int [conexao] );
113
Onde query é a expressão SQL a ser executada, sem o ponto−e−vírgula no
final, e conexão é o identificador da conexão a ser utilizada. A consulta será
executada na base de dados selecionada pelo comando
mysql_select_db.
É bom lembrar que uma consulta não significa apenas um comando SELECT. A
consulta pode conter qualquer comando SQL aceito pelo banco. O valor de
retorno é falso se a expressão SQL for incorreta, e diferente de zero se for correta.
No caso de uma expressão SELECT, as linhas retornadas são armazenadas
numa memória de resultados, e o valor de retorno é o identificador do resultado.
Alguns comandos podem ser realizados com esse resultado:
2.7.1.8. Apagando o resultado
int mysql_free_result(int result);
O comando mysql_free−result deve ser utilizado para apagar da memória o
resultado indicado.
2.7.1.9. Número de linhas
int mysql_num_rows(int result);
O comando mysql_num_rows retorna o número de linhas contidas num resultado.
2.7.1.10. Utilizando os resultados
Existem diversas maneiras de ler os resultados de uma query SELECT. As
mais comuns serão vistas a seguir:
114
int mysql_result(int result, int linha, mixed [campo] );
Retorna o conteúdo de uma célula da tabela de resultados. result é o identificador
do resultado; linha é o número da linha, iniciado por zero; campo é uma string
com o nome do campo, ou um número correspondente ao número da coluna. Se
foi utilizado um alias na consulta, este deve ser utilizado no comando
mysql_result. Este comando deve ser utilizado apenas para resultados
pequenos. Quando o volume de dados for maior, é recomendado utilizar um dos
métodos a seguir:
array mysql_fetch_array(int result);
Lê uma linha do resultado e devolve um array, cujos índices são os nomes dos
campos. A execução seguinte do mesmo comando lerá a próxima linha, até
chegar ao final do resultado.
array mysql_fetch_row(int result);
Semelhante ao comando anterior, com a diferença que os índices do array são
numéricos, iniciando pelo zero (zero).
2.7.1.11. Alterando o ponteiro de um resultado
int mysql_data_seek(int result, int numero);
Cada resultado possui um “ponteiro”, que indica qual será a próxima linha lida com
o comando mysql_fetch_row (ou mysql_fetch_array). Para alterar a posição
indicada por esse ponteiro deve ser utilizada a função mysql_data_seek, sendo
que o número da primeira linha de um resultado é zero.
115
2.8. Servidores WEB
2.8.1. Personal Web Server - PWS
2.8.1.1. O que é PWS
Segundo Hokama (2003), o Personal Web Server é um servidor WWW
gratuito, da Microsoft, que roda em computadores com sistema operacional
Windows 95 e 98.
Para quem desenvolve sites, é muito importante trabalharmos primeiro
"localmente" e ver nossas páginas no nosso próprio micro, antes de enviá-la para
a Internet. Com o Personal Web Server (ou simplesmente "PWS"), isso fica bem
mais fácil.
2.8.1.2. Suporte do Servidor PWS.
Ele é um servidor WWW leve, feito sob medida para instalações pequenas
e suporta as seguintes aplicações:
ASP
PHP
Server Side Includes (SSI)
Controles ActiveX
Roda scripts "Internet Server API (ISAPI)" e "Common Gateway Interface
(CGI)"
Acesso à banco de dados via ODBC
Secure Sockets Layer (SSL)
116
2.8.1.3. Requisitos para instalação
O computador onde o Personal Web Server vai ser instalado e qualquer
cliente que quiser acessá-lo via rede, deve ter o protocolo TCP/IP instalado. Este
protocolo vem com sistema operacional Windows.
O adaptador onde TCP/IP está instalado não é importante por enquanto. O
que interessa é que este protocolo deve estar na lista. Se não estiver, deve ser
adicionado por meio de uma instalação.
Quanto ao hardware, pode ser instalado em uma maquina modesta
(pressupondo que esta instalação seria usada para teste), está configuração
básica poderia ser um Pentium clássico de 200Mhz, com 64 MB de memória RAM
e um espaço mínimo no HD.
No Apêndice I fazemos uma apresentação com maiores detalhes da
instalação e configuração do Personal Web Server.
117
2.8.2. Tomcat
2.8.2.1. O Software Tomcat
Segundo Portaljava (2004) o software Tomcat, desenvolvido pela Fundação
Apache, permite a execução de aplicações para web. Sua principal característica
técnica é estar centrada na linguagem de programação Java, mais
especificamente nas tecnologias de Servlets e de Java Server Pages (JSP). Esta
abordagem rivaliza, por exemplo, com a usada pela Microsoft com o ASP
(baseada na linguagem Visual Basic).
A Fundação Apache, mais conhecida pelo seu servidor web de mesmo
nome, permite, como no caso do servidor Apache, que o Tomcat seja usado
livremente, seja para fins comerciais ou não.
O Tomcat está escrito em Java e, por isso, necessita que a versão Java 2
Standard Edition (J2SE) esteja instalada no mesmo computador onde ele será
executado. No entanto, não basta ter a versão runtime de Java instalada, pois o
Tomcat necessita compilar (e não apenas executar) programas escritos em Java.
O projeto Jakarta da Fundação Apache, do qual o subprojeto Tomcat é o
representante mais ilustre, tem como objetivo o desenvolvimento de soluções
código aberto baseadas na plataforma Java.
2.8.2.2. Linguagens: Java, HTML e XML
O desenvolvimento de uma típica aplicação web a ser executada pelo
Tomcat implica no domínio das seguintes linguagens:
118
Java : Todos os algoritmos da aplicação devem ser escritos em Java.
HTML: A interface da aplicação, isto é, aquilo que o usuário vê em sua tela,
é construída na forma de páginas escrita em HTML e visualizada através do
browser do usuário. Esta tarefa normalmente é delegada ao web designer.
XML : Qualquer aspecto relacionado à configuração da aplicação deve ser
expresso por meio da linguagem XML em um arquivo chamado web.xml.
Os dados de configuração podem ser usados tanto pelo Tomcat como pela
aplicação.
2.8.2.3. Servlets e Java Server Pages
Um servlet é uma classe escrita em Java cujos objetos têm a finalidade de
gerar documentos codificados em HTML. Esta característica dos servlets implica
em que um web designer precisa conhecer Java para poder construir as páginas
de uma aplicação. Esta limitação (quantos web designers conhecem Java?) é
superada pela tecnologia de JSP.
Uma página escrita em JSP (arquivos com extensão .jsp) é uma página
escrita em HTML e que contém pequenos fragmentos de código Java e/ou tags
especiais (definidos na especificação JSP). Com estes tags, o web designer não
necessita escrever uma única linha de código Java. Ao contrário do que acontece
com a tecnologia ASP, o analista/programador pode criar (em Java) os seus
próprios tags customizados para a aplicação em desenvolvimento.
2.8.2.4. O servidor Tomcat
O servidor Tomcat tem a habilidade de converter automaticamente qualquer
página JSP em um servlet equivalente. Em outras palavras, o Tomcat é capaz de
criar código fonte Java a partir de um documento HTML.
119
2.8.2.5. Ponto de vista técnico
Do ponto de vista técnico, Tomcat é a implementação referência das
especificações das tecnologias de servlets e JSP criadas pela Sun. A versão 4.0.x
do Tomcat implementa as especificações Servlet 2.3 e JSP 1.2 (que são as mais
recentes). Várias empresas, como Borland, IBM, BEA, etc., também oferecem
suas implementações das duas especificações da Sun.
2.8.2.6. Ponto de vista operacional
Do ponto de vista operacional, a principal finalidade das tecnologias de
servlets e JSP é permitir a criação dinâmica de conteúdos. A dinâmica, em um
cenário típico, funciona do seguinte modo: Um usuário, no seu browser, solicita
algum documento (indicado por um URL) a um servidor Tomcat; O servidor, ao
receber uma solicitação (URL) do usuário, executa o servlet ou JSP
correspondente aquele URL (a associação entre URL e servlet ou JSP é
especificada no arquivo web.xml). O conteúdo gerado pelo servlet ou JSP,
normalmente um documento no formato HTML, é uma combinação de tags HTML
(incluídos explicitamente) e o resultado de algum processamento (por exemplo,
algoritmo Java e/ou acesso a um banco de dados). O usuário recebe o conteúdo
gerado pelo servidor Tomcat e o exibe através do seu browser.
No Apêndice II fazemos uma apresentação com maiores detalhes da
instalação e configuração do Servidor Tomcat.
120
2.8.3. Apache/PHP em Windows
2.8.3.1. Demonstrando o Apache
O Apache é um servidor Web extremamente configurável, robusto e de alta
performance desenvolvido por uma equipe de voluntários (conhecida como
Apache Group), buscando criar um servidor web com muitos recursos e com
código fonte disponível gratuitamente via Internet em http://www.apache.org/.
O Apache é mais usado que todos os outros servidores web do mundo
juntos.
2.8.3.2. Hardware necessário
A máquina mínima para se rodar um servidor Apache para atender a uma
rede padrão 10MB/s é um Pentium 90MHz, 24MB de memória RAM, um HD com
um bom desempenho e espaço em disco de acordo com o tamanho projetado de
seu servidor web (considerando seu crescimento).
2.8.3.3. Características técnicas
Podemos citar ainda uma lista de características técnicas que o Apache
apresenta, como:
Suporte a scripts CGI usando linguagens como PHP, Perl, ASP,
Shell Script, etc;
Módulos DSO (Dynamic Shared Objects) permitem
adicionar/remover funcionalidades e recursos sem necessidade de
recompilação do programa;
121
Autenticação, requerendo um nome de usuário e senha válidos para
acesso a alguma página/sub-diretório/arquivo (suportando
criptografia via Crypto e MD5).
Suporte à autorização de acesso, podendo ser especificadas
restrições de acesso separadamente para cada
endereço/arquivo/diretório acessado no servidor;
Suporte a virtual hosting, por nome ou endereço IP: é possível servir
duas ou mais páginas com endereços/portas diferentes através do
mesmo processo, ou usar mais de um processo para controlar mais
de um endereço;
Suporte a servidor proxy FTP e HTTP, com limite de acesso, caching
(todas flexivelmente configuráveis). Suporte a proxy e
redirecionamentos baseados em URLs para endereços internos;
Suporte a criptografia via SSL, certificados digitais;
Negociação de conteúdo, permitindo a exibição da página Web no
idioma.
requisitado pelo Cliente Navegador.
Suporte a tipos MIME;
Personalização de logs.
No Apêndice III fazemos uma apresentação com maiores detalhes da
instalação e configuração do Servidor Apache.
122
3. Metodologia ( Materiais e Métodos )
3.1. Métodos
Primeiramente foi feito um estudo das tecnologias que dão suporte às
aplicações WAP, WML e WMLScript e um levantamentos das referências para os
dispositivos móveis, analisando o que já havia sido feito e o que foi usado como
ferramenta. Houve necessidade também de avaliar como alguns aplicativos
funcionavam.
Estudo da comunicação entre os telefones celulares, PDAs (Personal
Digital Assistant) com programas servidores.
Comparações de ferramentas para implementação de um ambiente para
hospedar aplicações wireless.
Investigação de tecnologias relacionadas para desenvolvimento de
aplicações WML/WAP
Estudos e levantamento das ferramentas que poderiam auxiliar no
desenvolvimento de aplicações para os dispositivos móveis.
Concepção de um estudo de caso onde poderíamos avaliar de forma mais
ampla as possíveis variáveis de utilização da tecnologia dentro de um único
sistema, onde deveriam ser agregados as linguagens pretendidas junto
com banco de dados formando um único sistema wireless e sistema WEB.
Instalação dos software necessários para construção e teste do aplicativo.
Desenvolvimento de uma pequena aplicação Web
123
Seleção do ambiente para a implementação do estudo de caso.
Implementação, teste e validação do estudo de caso e.
Elaboração e desenvolvimento de estudo de caso usando tecnologia
WML/WAP
Realização de testes e avaliação de resultados em diversos emuladores
Apresentação dos resultados e discussões.
3.2. Materiais
3.2.1. Software
Para o desenvolvimento dos estudos foram utilizados vários softwares
descritos abaixo, dois micros e um telefone celular.
Navegadores
Mozilla 1.7.2
Opera 7.53
Microsoft Internet Explorer 6.0
Editores textos
Macromedia Dreamweaver 6.0
Microsoft Notepad 5.1
Microsoft Word 2000
Editores de Imagens
Advanced Batch converter 3.9
124
Simuladores
OpenWave SDK 6.22
WinWap SmartPhone Browser V 1.2
Nokia 7210 SDK v. 1.0
Nokia 5100 SDK v. 1.0
Nokia 7210 SDK v. 1.0
Nokia 6230 S40 SDK DP 2.0
Nokia Mobile Browser 4.0 NMB 4.0
Nokia WAP Gateway Simulator V 4.0
Nokia Mobile Internet ToolKit v 4.0 may/2003
Servidores
Apache 1.3.14
PWS
Tomcat
Linguagem de Programação, Marcação e Script.
PHP 4.3.4 - Win32
ASP
WML
WMLScript
JavaScript
Banco de Dados
MySQL - 4.0.16 - win
MySQL Front V 2.05
Java 2 Platform, Standard Edition (J2SE)
Java 2 SDK, Standard Edition, v. 1.4.2 for Windows
125
3.2.2. Equipamentos
Telefone celular Siemens GSM/GRPS modelo MC60 habilitado pela
operadora local, Brasiltelecom. Esse aparelho serviu para os teste de campo.
Um microcomputador AMD Athlon 1.1GHz com 256MB de memória RAM
e 20GB.de disco rígido conectado na intranet do depto. de informática e limitado
por um hub ao tráfego de 10mb/seg. trabalhando com sistema operacional
Windows XP onde ficaram instalados os softwares para implementação,
desenvolvimento e teste de avaliação/simulação dos estudos. Esse equipamento,
serviu como base de desenvolvimento.
Um microcomputador AMD K6 II 450MHz com 128 de memória RAM e
10GB.de disco rígido conectado na intranet do depto. de informática e limitado por
um hub ao trafego de 10mb/seg. trabalhando com sistema operacional Windows
98 onde ficaram instalados os servidores de web Apache, PWS e banco de dados
MySQL, para implementação, desenvolvimento e teste de avaliação/simulação
dos estudos. Esse equipamento, serviu como apoio ao desenvolvimento. Um
editor de WML e PHP para pequenas alterações nos softwares, também foi
necessário instalar.
126
4. Tecnologias Envolvidas no Estudo de Caso
Neste capítulo veremos quais as tecnologias que foram selecionadas para
o desenvolvimento do “Estudo de Caso Enquete On Line”, e fazendo um
comentário do porquê da escolha de cada uma delas.
4.1. Wireless
Como nosso estudo de caso trata de uma aplicação wireless a qual é
utilizada na comunicação (troca de informações) entre dispositivos móveis, torna-
se indispensável a utilização das tecnologias envolvidas como:
WAP (wireless Application Protocol) por ter sido criado
especificamente para ser utilizado em dispositivos sem fio é o mais
eficiente protocolo para esse tipo de aplicação (Forta 2001).
Linguagem de marcação WML, por ter sido criada para atender as
necessidades dos dispositivos sem fios (Forta 2001).
WMLScript por ser uma linguagem de Script projetada para facilitar a
navegação e apresentação da WML, bem como proporcionar
capacidade de servir conteúdos dinâmicos aos dispositivos wireless
como o mínimo de interação (Forta 2001).
4.2. Linguagem para web
Para o desenvolvimento da estrutura WEB optamos pelo PHP (Hipertext
Preprocessor) pelos seguintes motivos: segundo Ullman (2001):
Uma linguagem fácil de aprender
O código do PHP fica embutido dentro HTML
É uma linguagem de script executada do lado do servidor.
Código fonte aberto e gratuito.
127
Excelente velocidade de execução.
Acesso nativo a vários bancos de dados.
Multiplataforma, compatível com vários servidores web.
4.3. Servidor WEB
Como servidor Web optamos pelo Apache. Segundo Shibayama D. (2005)
é um servidor Web Alta performance com muitos recursos , além de:
Alta performance com muitos recursos e com
Código fonte disponível gratuitamente.
Suporte a scripts CGI usando linguagens como PHP, e outras.
Autenticação, requerendo um nome de usuário e senha válidos para
acesso a alguma página/sub-diretório/arquivo
Suporte à autorização de acesso.
Suporte a servidor proxy FTP e HTTP.
Negociação de conteúdo, permitindo a exibição da página Web no
idioma requisitado pelo Cliente Navegador.
Suporte a tipos MIME;
Extremamente configurável e robusto.
4.4. Banco de dados
Para o desenvolvimento optou-se pelo banco de dados MySQL , pois
segundo Anselmo (2000):
Utiliza linguagem SQL (structure Query language) para realizar
operações no banco de dados.
Suporta varias plataformas como win32 entre outras
Suporta API (Application Program Interface) para linguagens como PHP
entre outras .
128
Suporta múltiplos processos.
Conexão com protocolo TCP/IP.
Excelente velocidade de execução.
Facilidade de uso e robustez.
Open source.
No próximo capítulo abordaremos como foi desenvolvido nosso estudo de
caso “Enquete On Line”, mostrando os diagramas, e outros detalhes.
129
5. Desenvolvimento do Estudo de Caso “Enquete on Line”
Neste capitulo vamos demonstrar como foi estruturado nosso estudo de
caso, como e o que foi utilizado para sua criação.
5.1. Descrição do Sistema
Enquete é uma forma de pesquisa que lançamos mão quando o objetivo é
realizar uma pesquisa de opinião. O Sistema Enquete é uma aplicação que
oferece soluções voltadas a pesquisa de opiniões integrando dispositivos wireless
e internet, onde o controle pelo administrador é feito em tempo real.
5.2. Visão Geral do Sistema
PAGINÁ
PRINCIPAL
WEB
CADASTRAVOTADISPONIBILIZA
ENQUETE
ENQUETE
WAP
RESULTADO
SOLICITA
CONFIRMAÇÃO
RESPOSTA
FINALIZAÇÃO
OPÇÕES
PAGINÁ
APRESENTAÇÃO
Figura 27 Visão Geral do Sistema
130
5.3. Diagrama de Use Case
A Figura 28 mostra o diagrama de use case visão do Administrador do
protótipo Enquete On Line, e abaixo apresenta suas funcionalidades.
Cadastro Enquete
Administrador
Excluir Enquete
Ativar Enquete
Consultar Enquete
Figura 28 Use Case visão do Administrador
Funcionalidades do use case Administrador
Use Case Descrição
Cadastrar Enquete Adiciona uma nova Enquete
Ativar Enquete Disponibiliza uma Enquete p/ resposta
Excluir enquete Elimina uma Enquete do BD
Consultar Enquete Consulta votos/opções da Enquete
A Figura 29 mostra o diagrama de use case visão dos Usuários WEB do
protótipo Enquete On Line, e abaixo apresenta suas funcionalidades.
131
Usuario WEB Efetuar Votação
Consultar Posição
Figura 29 Use Case visão dos Usuários WEB
Funcionalidades do use case Usuários WEB
Use Case Descrição
Consultar posição Verifica posição de todas as opções da Enquete
Votar votação Adiciona voto p/ uma opção da Enquete
A Figura 30 mostra o diagrama de use case visão dos Usuários WAP do
protótipo Enquete On Line, e abaixo apresenta suas funcionalidades.
Usuario WAP Efetuar Votação
Receber Posição
Figura 30 Use Case visão dos Usuários WAP
Funcionalidades do use case Usuários WAP
Use Case Descrição
Receber posição Recebe posição da opção votada na Enquete
Votar votação Adiciona voto p/ uma opção da Enquete
132
5.4. Diagrama de Classes
Classe é a descrição de um conjunto de objetos que tem os mesmo
atributos, operações relacionamentos e semânticas.
ADMINISTRADOR
senha
USARIO / WEB
USUARIO / WAP
Titulo
op1
op2
op3
op4
op5
op6
t_op1
t_op2
t_op3
t_op4
t_op5
t_op6
Ativo
EnqueteBD
Cadastrar
Ativar
Excluir
Figura 31 Diagrama de Classes
133
5.5. Dicionário de Dados
EnqueteDB
Atributos Tipo Tamanho Obrigatório Descrição
id int Num. 3 Sim Chave Primaria
Titulo char Caract 150 Titulo da Enquete
op1 int Num. 3 Opção 1
op2 int Num. 3 Opção 2
op3 int Num. 3 Opção 3
op4 int Num. 3 Opção 4
op5 int Num. 3 Opção 5
op6 int Num. 3 Opção 6
t_op1 char Caract 50 Não Descrição da opção 1
t_op2 char Caract 50 Não Descrição da opção 2
t_op3 char Caract 50 Não Descrição da opção 3
t_op4 char Caract 50 Não Descrição da opção 4
t_op5 char Caract 50 Não Descrição da opção 5
t_op6 char Caract 50 Não Descrição da opção 6
Ativo char Num. 1 Sim Mostra a Enquete ativa
5.6. Fluxo de Chamada das Telas
WEB WAP
1
1.2 1.31.1
2
1
4
3
Figura 32 Fluxo de chamada das Telas
1-Pagina Principal 1-Pagina de Apresentação
1.1-Criação da Enquete 2-Seleciona Enquete
1.2-Votação 3-Solicitação de Confirmação
1.3 Resultado 4- Resposta e Finalização
134
5.7. Layout das Telas
5.7.1. WEB
1-Página Principal
Figura 33 Página Principal
1.1-Criação da Enquete
Figura 34 Criação da Enquete
1.2-Votação
135
Figura 35 Votação
1.3 Resultado
Figura 36 Resultado
136
5.7.2. WAP
1-Página de apresentação
Figura 37 Página de apresentação
137
2-Seleciona Enquete
Figura 38 Seleciona Enquete
138
3 Solicitação de confirmação
Figura 39 Solicitação de confirmação
139
4-Resposta da opção e Finalização
Figura 40 Resposta e Finalização
140
5.8. Relação de Programas
NOME DESCRIÇÃO
INDEX Mostra a pagina principal
INICIO Faz a apresentação
SALVA_VOTO Adiciona mais um a opção selecionada
ENQUETE APRESENTA A ALTERNATIVA SELECIONADA E PEDE P/ CONFIRMAR
ENQUETES Apresenta a Enquete selecionada / ativada
CRIA Cria as enquetes
VOTA Apresenta as opções para selecionar
RESULTADO Apresenta o resultado on line da tabela (gráfico e percent.)
5.9. Relação de Arquivos
Nome da Tabela Nome do DataBAse
Enquete EnqueteDB
Arquitetura do Sistema SGBD
SGBD
MySQL
WML e PHP
WEB SERVER APACHE
PARA WINDOWS
Figura 41 Arquitetura do Sistema SGBD
No próximo capitulo será mostrado os resultados obtidos, onde citaremos
o que foi estudado e utilizado para o desenvolvimento do sistema.
141
6. Resultados Obtidos
Neste capitulo vamos abordar os estudos e teste que foram realizados para
o desenvolvimento do estudo de caso e desta monografia.
6.1. Simuladores
Foram instalados seis emuladores de dispositivos moveis conforme as
Figuras 42 a Figura 47 abaixo, onde foi possível verificar as dificuldades de
instalação de cada um e como as paginas WML são apresentadas nas telas.
Todos os emuladores usados são gratuitos e foram conseguidos na Internet.
Figura 42 OpenWave
SDK 6.22
Figura 43 Nokia
Mobile Browser
Figura 44 Nokia 5100
SDK v. 1.0
142
Figura 45 Nokia
6230 S40
Figura 46 WinWap
SmartPhone
Figura 47 Nokia
7210 SDK v. 1.0
Quanto à instalação o Nokia SDK (Service Development Kits ou
simplesmente Kit para Desenvolvimento de Serviço) é um dos mais simples,
possui um emulador 7110 que não requer um Gateway independente, pois traz um
interno, conforme Figura 48.
Figura 48 Nokia WAP Gateway Simulator V 4.0
143
Já o Nokia WAP Toolkit foi desenvolvido em Java, o que implica ter que
instalar o JRE e também é necessário utilizar um Gateway independente. A
vantagem de utilizar o ToolKit é que oferece a possibilidade de compilar os
arquivos WML e WMLS, a Figura 49 mostra a área de trabalho da ferramenta.
Figura 49 Nokia Mobile Internet ToolKit v 4.0 may/2003
Os emuladores que vêm nos kits para desenvolvedores são os mais
completos: documentação, gateway, editor e compilador. Eles facilitam a edição e
a depuração dos erros no código fonte. Entre eles a documentação mais completa
é fornecidas pela Nokia e Phone.com.
Apesar dos recursos adicionais do Nokia WAP Toolkit, ainda é preferível as
facilidade do Nokia SDK, tanto pela instalação como pelo uso. O OpenWave SDK
6.22, é o que oferece maior atrativo, um utilitário wizard deixa a instalação já
configurada, pronta para o uso, e a operação é mais intuitiva, dirigida e
estruturada para as necessidades dos desenvolvedores. O trabalho com os
emuladores apresentou várias vantagens, entre elas:
Foi possível simular o teste nos seis (6) modelos apresentados.
Não foi necessário estar conectado na internet.
O resultado da pagina testada foi apresentada de imediato off-line.
A instalação do pacote Java 2 SDK, Standard Edition, v. 1.4.2 for Windows
somente foi instalado para teste do emulador.
144
6.2. Teste de Micronavegadores.
Foi feita uma bateria de teste em todos os simuladores usando o mesmo
código WML. A apresentação do código WML nos micronavegadores deveria ser
diferente em cada modelo ou pelo menos na maioria deles, conforme todos os
autores descrevem em suas literaturas, porém não foi isso que constatamos. As
diferenças apresentadas nos micronavegadores foram mínimas, como: estilo,
centralização e quebra de linha, sendo que em nenhum deles a mensagem ficou
ilegível ou distorcida.
6.3. WEB Browser
Foi verificado que os navegadores para WEB utilizados nos PCs desktop
não suportam a linguagem WML, quando chamado um arquivo ponto WML é
apresentando o código HTML e em alguns casos o browser entende como uma
solicitação de download. A única exceção foi o browser da Opera que apresentou
a pagina perfeitamente conforme Figura 50 abaixo.
Figura 50 Navegador Opera ver. 7.53
145
Os Navegadores Mozilla 1.7.2 e da Microsoft Internet Explorer 6.0 também
foram testados, ambos apresentaram restrições ao código WML.
6.4. Servidores
6.4.1. Apache
O servidor de web Apache 1.3.14 foi o instalado conforme Figura 51 sem
dificuldades, a configuração é simples e se apresentou muito bem.
Figura 51 Instalação Servidor Apache
Depois do servidor Apache instalado foi feita a configuração do arquivo
httpd.conf. Dentro deste arquivo encontra-se o "bloco" que aparece entre
<IfModule mod_mime.c> e </IfModule>, conforme está mostrado abaixo.
# Document types.
#
<IfModule mod_mime.c>
.
. </IfModule>
# End of document types.
146
Dentro deste "bloco", coloca-se as linhas conforme mostrado abaixo.
Uma dificuldade foi quanto aos MIME, porém foi logo solucionada
adicinando as linhas acima no arquivo httpd.conf .
6.4.2. PWS
A instalação PWS (Personal Web Server) conforme Figura 52 foi realizada sem
problemas.
Figura 52 Instalação do PWS
# MIME Types for WAP
# Para o PHP 4.x:
AddType application/x-httpd-php .wml
# Para paginas WML comuns:
AddType text/vnd.wap.wml .wml
# Para scripts WML:
AddType text/vnd.wap.wmlscript.wmls
# Para paginas WML compiladas:
AddType application/vnd.wap.wmlc .wmlc
# Para scripts WML compilados:
AddType application/vnd.wap.wmlscriptc .wmlsc
# Para gráficos WML embutidos:
AddType image/vnd.wap.wbmp .wbmp
# End MIME Types for WAP
147
Porem a configuração com a linguagem PHP já apresentou certa
dificuldade. Somando as dificuldades apresentadas pelo servidor e o fato de o
mesmo só ser gratuito e indicado para instalação no Windows 98, o PWS foi
preterido.
6.4.3. Tomcat
Conforme os estudos realizados a principal característica técnica do
Servidor Tomcat esta centrada na linguagem de programação Java, mais
especificamente nas tecnologias de Servlets e de Java Server Pages (JSP). Como
o objetivo desse não é o de trabalhar com essa tecnologia optamos por realizar
estudos práticos com o servidor.
148
6.5. Linguagem de Programação
6.5.1. PHP
A instalação do PHP 4.3.4 - Win32 conforme Figura 53 não apresentou
dificuldade.
Figura 53 Instalação do PHP
Segundo Frota (2001), para se trabalhar com WML, deve-se declarar o
cabeçalho indicando o tipo de conteúdo usado, conforme mostrado abaixo.
Tipo conteúdo no WML
A linguagem foi utilizada em conjunto com a WML isso facilitou o trabalho
com o uso do PHP embutido no código WML.
<?php
header (“ content-type:
text/vnd.wap.wml”);
echo “<?xml version=\”1.0\” ?>”;
?>
149
6.5.2. ASP
O teste realizado com a linguagem ASP demonstra que é possível também
utiliza-la com o código WML embutido na linguagem, porém, comparando o PHP
com ASP, a linguagem PHP oferecia maiores facilidades.
6.5.3. WML/ WMLScript
No desenvolvimento dos estudos a linguagem de marcação WML
demonstrou ser muito poderosa, durante os testes realizados conferimos que
aliada ao WMLScript é possível conseguir praticamente tudo que se espera em
termos de WEB para dispositivos móveis.
6.5.4. JavaScript
A intenção de usar o JavaScript para identificar o Browser dos visitantes
não teve seqüência porque a linguagem WMLScript se mostrou mais adequada.
Foram feitos teste com JavaScript apenas para fazer uma comparação com a
WMLScript. Esta última, como foi desenvolvida para este tipo de ambiente,
oferece recursos mais apropriados.
150
6.6. Banco de Dados
6.6.1. MySQL
Em um estudo prévio realizado através da popularidade e quantidade de
aplicações desenvolvidas e observado na Internet, a opção foi pelo MySQL -
4.0.15 – win. Após a instalação que foi simples foi rodado um script para avaliação
do banco conforme apresentado na Figura 54 abaixo.
Figura 54 Verificação do MySQL
O SGBD escolhido não apresentou nenhum tipo de problema. Ele mostrou-
se ser simples de gerenciar devido aos mecanismos implementados para facilitar
as tarefas dos usuários.
Para o desenvolvimento do banco foi utilizada a ferramenta MySQL Front V
2.05 conforme Figura 55,abaixo, de livre distribuição que proporcionou enorme
facilidades de manuseio com as instruções SQL query, conexões remotas.
151
Figura 55 Instalação do MYSQL
No próximo capitulo será discutido a conclusão do trabalho.
152
7. Conclusão
As informações pertinentes à telefonia móvel, além da documentação
dos fornecedores, estão sendo publicadas em artigos, jornais, revistas, periódicos,
e internet. Durante a pesquisa não foi encontrada obra que tenha sido publicado
recentemente. A mais recente é de 2002. Nestas obras é comum encontrar
citações das complexidades em desenvolver aplicativos para os dispositivos
móveis, como: memória de tamanho limitado, tela de apresentação com tamanho
reduzido, baixa velocidade de processamento e de transferência de dados.
Os equipamentos de telefonia móvel estão cada dia mais rápidos e com
maior capacidade de processamento. Isto permite aplicações mais dinâmicas e
com maior interatividade, prova disso são as constantes novidades tecnológicas
que o mercado vem anunciando dia a dia, como a ultima novidade divulgada pelo
jornal Estado de são Paulo (11/07/2005) onde uma operadora de telefonia móvel
divulga o lançamento da telefonia 3G, que transmite conteúdo multimídia, inclusive
TV ao vivo, com mais velocidade do que os existentes até agora.
As limitações que os dispositivos móveis possuíam até alguns anos atrás
como: telas pequenas, teclado impróprio para entrada de dados, bateria de curta
duração, conexão de baixa velocidade, pouca memória e tarifas altas, que antes
desestimulava a utilização dos celulares para o uso com internet, hoje já podemos
dizer que algumas coisas já mudaram.
As telas já não são tão pequenas, o teclado ainda continua impróprio para
entrada de dados, as baterias melhoraram bastante a sua durabilidade, a conexão
e a memória tem aumentado significativamente em velocidade e capacidade, e por
outro lado as tarifas estão em declínio devido ao aumento da oferta pelos
concorrentes.
153
A preocupação que praticamente as literaturas citam referente aos
cuidados com o conteúdo que os programadores devem ter, controlando o numero
de telas, evitando solicitar muitas informações aos usuários, já não se justificam
tanto. Não se quer dizer com isso que tudo é possível, mas que os limites foram
estendidos.
A incompatibilidade do microbrowser entre os dispositivos de fabricantes
diferentes, citada nas obras pesquisadas, como sendo uma das maiores
dificuldades no desenvolvimento, atualmente com a os novos recursos de
interfaces é praticamente imperceptível. Entre os sete modelos que foram
testados, as diferenças de conteúdo apresentadas nos microbrowser, foram
insignificantes, mostrando uma discreta compatibilidade. A padronização por parte
das empresas ainda que modesta tem ajudado muito esse processo.
Os estudos feitos com ferramentas e tecnologia para desenvolvimento de
site e aplicações para dispositivos moveis, inclusive o desta pesquisa, mostraram
que a utilização de linguagens mais adequada para esse padrão de equipamento
é uma boa maneira de contornar as pequenas restrições e limitações que ainda
existem.
Embora as restrições e limitações dos dispositivos móveis, mesmo que
em menor grau ainda exista, os estudos feitos mostraram que a utilização das
tecnologias e ferramentas leves de fácil manipulação é uma boa solução para o
desenvolvimento de sites e aplicações para os dispositivos móveis.
Com isso a utilização de linguagens como PHP, WML, WMLScript,
servidor de WEB Apache, Gerenciador de Banco de Dados MySQL mostraram
uma excelente opção para a implementação do sistema. A utilização de
ferramentas open source (código livre) também facilitaram o desenvolvimento,
pois rodam em qualquer plataforma, não necessitamos comprá-las e a
documentação também está disponível na internet.
154
Um dos objetivos deste trabalho foi o desenvolvimento do estudo de caso
“Enquete On Line”, uma aplicação que serve de exemplo para novos trabalhos. A
opção pelo uso de software livre oferece facilidade de acesso às tecnologias e às
bibliografias envolvidas para novos desenvolvedores de sistemas, sem precisar
utilizar software proprietário.
O protótipo desenvolvido teve um bom resultado, apesar de precisar de
algumas melhorias conseguiu executar de maneira objetiva o que foi proposto,
fornecendo uma pesquisa de opinião de forma simples e direta. Portanto, este
trabalho cumpre o que se propõe, na medida que fornece ao dispositivo móvel,
conteúdo de paginas no formato WML em servidor WEB. O resultado da pesquisa
recuperou um grande volume de material bibliográfico, no entanto, ainda há muitas
fontes para ser trabalhadas pertinentes ao assunto. Entretanto a generalidade
deste assunto dá uma visão ampla do contexto atual da área de wireless e serve
como ponto de partida para novas pesquisas em assuntos específicos.
155
8. Trabalhos futuros
Este capítulo apresenta alguns trabalhos complementares que visam o
aperfeiçoamento de funcionalidades já existentes e adição de novas funções no
protótipo “Enquete On Line”, para que o sistema tenha um melhor aproveitamento,
não esquecendo de estar sempre buscando simplicidade e praticidade de uso
para o usuário.
8.1. Validação do usuário
Seria interessante que fosse solicitado ao usuário digitar um código para
autenticação, impedindo que o mesmo vote várias vezes, pois dependendo do tipo
da pesquisa de opinião, poderia ter resultados distorcidos.
8.2. Segurança
Na aplicação desenvolvida não houve preocupação com a segurança, por
se tratar de protótipo, porem o item segurança para o uso comercial é
indispensável. Nesse ponto poderiam ser implementados códigos que dificultam o
rastreamento e uso das tecnologias já existentes como WTLS (Wireless Transport
Layer Security) e SSL (Secure Sockets Layer) e outros métodos.
8.3. Relatórios
Outro recurso interessante seria o deixar opções para o administrador do
sistema de solicitar relatórios das enquetes. Isso ajudaria muito na analise dos
dados.
156
9. Referências bibliográficas
9.1. Bibliografias
[Alves - 2004]
Willian Pereira Alves Dreamweaver UltraDev – Criação de sites Dinamicos
e Aplicações E-Commmerce, 2004.
[Anselmo – 2000]
Fernando Anselmo, PHP e MySQL para Windows. Florianopolis Visual Books 2000.
[Bandeira Duarte - 2004]
prof: Otto Carlos Muniz Bandeira Duarte, XML Extensible Markup LanguageTexto,
Universidade Federal do Rio de Janeiro, em
http://www.gta.ufrj.br/grad/00_1/miguel/index.html, pesquisado em 11/08/2004
[Denega – 2000]
Marco Antonio Denega, WAP Tecnologia sem Fio, Editora Berkeley
São Paulo, 2000
[Dias – 2003]
Bruna Chesye Dias, ANÁLISE DA TECNOLOGIA WAP VIA ESTUDO DE CASO EM
JOGOS DISTRIBUÍDOS E INTERATIVOS, Monografia Depto. de Ciência da
Computação da Universidade Federal de Lavras, como parte das exigências do curso
de Ciência da Computação. em 16 de Junho de 2003
[Forta - 2001]
Ben Forta, Desenvolvimento WAP com WML e WMLScript, Editora Campus, 2001.
157
[Generation – 2005]
Next Generation, Mobilidade, http://www.nextg.com.br/BR/curso.aspx,
visitado em 26/06/2005.
[Godoy - 2004]
Luiz Henrique Pereira de Godoy, USP - Centro de Divulgação Científica e Cultural
(CDCC), http://www.cdcc.sc.usp.br/tutorial/index.htm
visitado em 12/06/2004
[Hokama – 2003]
Marçal de Lima Hokama, Personal Web Server - PWS,
http://www.crieseuwebsite.com/artigos/artigo.php?categoria=pws&id=, publicado em
abril 2003, visitado em 12/02/2005.
[IT web – 2005]
IT web Google lança serviço para equipamentos móveis-- 12/04/2005 --
http://www.itweb.com.br/noticias/artigo.asp?id=89888
visitado em 18/04/2005
[Moon – 2000]
Peter Moon, O futuro é agora. IstoÉ, São Paulo, n.1579, janeiro 2000. Disponível
em:<http://www.zaz.com.br/istoe/ciencia/1999/12/28/003.htm>.
Acesso em: 12 abril. 2005.
[Oliveira – 2000]
Winson José de Oliveira, WAP Tecnologia e segurança, Editora Visual Books,
Florianópolis, 2000.
[Parra – 2004]
Michelle Parra, O que é MySQL? http://www.portalfiremasters.com.br/, Publicado em:
06 Dezembro 2004, visitado em 24/05/2005.
158
[Pekus – 2002]
PEKUS Cons. e Desenvolvimento Ltda. Dispositivos móveis, São Paulo, 2002.
Disponível em: <http://www.pekus.com.br/palmtops.htm>.
Acesso em: 12 abril. 2005.
[Portal Java – 2004]
Tutorial Desenvolvido pela equipe do PortalJava,
http://www.portaljava.com/home/modules.php?name=Content&pa=showpage&pid=51,
publicado em: 22-03-2004, visitado em 08-05-2005
[Rigonatti - 2004]
Thiago Rigonatti, Móbile Life,
http://www.mobilelife.com.br/default.asp?arquivo=092004,
Mobilidade e Entreternimento, Publicado em 15/9/2004 , Visitado em 11/04/2005
[Rischpater – 2000]
Rischpater, R., Desenvolvendo Wireless para WEB. São Paulo, Makron
Books, 1a Edição, 2000.
[Samy Silva – 2004]
Maurício Samy Silva, Introdução a tecnologia WAP, Publicado em: 10/05/2004,
http://www.linhadecodigo.com.br/artigos.asp?id_ac=319&pag=1
visitado em 11/04/2005
[Shibayama - 2005]
Davi Shibayama, Tutorial de instalação do Apache/PHP em Windows em:
<http://unix.wmonline.com.br/php/tutoriais/instalacao_apache/instalacao.htm>,
pesquisado em 22/05/2005.
159
[Silva Filho - 2004]
Antonio Mendes Silva Filho, Programando com XML, Editora Campus, 2004.
[Taurion - 2002]
Cezar Taurion, Diferencial competitivo, Revista TI, http://www.timaster.com.br ,
Publicado em 25 de junho de 2002,
pesquisado em 21/11/2003.
[Texas Inst. - 2003]
Texas Instruments, http://www.ti.com/sc/brasil/, Novo conceito para aparelhos móveis,
Publicado em: 17 de março de 2003
Visitado em 11/04/2005
[Torres - 1997]
Anderson Barros Torres, http://www.geocities.com/SiliconValley/Way/3105/,
JavaScript - Guia de Referência
publicado em 27/08/97, visitado em 15/05/2005.
[Ullman - 2001]
Larry Ullman, PHP para a Word Wide Web, Editora Campus, 2001.
[Zanetti - 2004]
L. C Gonçalves A. R Zanetti,.; Redes Locais sem Fio. Disponível,
http://www.dc.ufscar.br/~carvalho/WLAN/index.html. Pesquisado em outubro de 2004.
160
9.2. Bibliografias Auxiliares
[Genilhu – 2004]
Leo Genilhu, Utilizando PHP e MySQL para gerar páginas WAP
http://www.phpbrasil.com/articles/article.php/id/602
visitado em 10/05/2004.
[Guimarães - 2005]
Prof. Célio Guimarães, Introdução a Linguagens de Marcação: HTML, XHTML,
SGML, XML, Instituto de Computação – Unicamp, Atualizado em 06-Jun-05.
http://www.dcc.unicamp.br/~celio/inf533/docs/markup.html em 20 / 02 / 2005
[Lapa - 2004]
Eduardo Lapa, Computação móvel e diferencial nos negócios, publicado em
21/06/2004, http://webinsider.uol.com.br/vernoticia.php/id/2148, consultado em
07/05/2004.
[Macoratti - 2004]
José Carlos Macoratti, Tutorial WAP - Crie o seu site WAP,
http://www.macoratti.net/wml.htm, consultado em 29/08/2004
[Marinho – 2005]
Samuel Rocha Marinho, HTML – Tutorial,
http://www.praianet.com/tutoriais/tutorialhtml/tutorialhtml01.htm
Consultado em 10/02/2005
[Openwave Developer Network - 2004]
http://developer.openwave.com/dvl/
visitado em 02/4/2004.
161
[Shtuzer – 1997]
Waldeck Shtuzer, Curso de Html, http://www.dm.ufscar.br/~waldeck/curso/html/
Publicado em 09/01/1997, consultado em 11/06/2004
[Silva Junior – 2004]
Givanildo Francisco da Silva Junior, WAP – WIRELESS APPLICATION PROTOCOL,
http://www.wirelessbrasil.org/wirelessbr/colaboradores/givanildo_wap/wap_01.html
Consultado em 11-06-2004
[Silva – 2004]
Maurício Samy Silva, Introdução a tecnologia WAP,
http://www.linhadecodigo.com.br/artigos.asp?id_ac=319&pag=1, Publicado em:
10/05/2004, consultado em 11/04/2004.
[Vivas – 2000]
Mauricio Vivas, Comitê de Incentivo a Produção do Software Gratuito e Alternativo
CIPSGA, Curso de Aplicações WEB em PHP − www.cipsga.org.br − Junho de 2000
[W3C – 2004]
World-Wide Web Consortium, WML Specification V. 1., www.w3c.org/wml/specs/,
acessado em 25 de dezembro de 2004.
[WAP Forum – 2004]
http://www.wapforum.org/
visitado em 12/04/2004.
[Wireless Brasil – 2004]
Portal Independente de Telecomunicações, Comunidade Weriless Brasil,
http://www.wirelessbrasil.org/, acessado em 02/03/2004.
162
[WinWap Thechnologies – 2004]
http://www.winwap.com/index.php
visitado em 02/04/2004.
[WML Club – 2004]
http://www.wmlclub.com/
visitado em 15/04/2004.
[Nokia – 2004]
Nokia - Developers
http://www.nokia.com/nokia/0,8764,64431,00.html
visitado em: 15/junho/2003
[Nokia – 2003]
Nokia 5100 Software Developer’s Kit Version 1.0
User’s Guide
June 2003
[Nokia – 2003]
Nokia Mobile Internet Toolkit
Version 4.0
NMIT User’s Guide
May 2003
[Nokia – 2004]
Nokia Mobile Internet Toolkit
Version 4.1
Installation Guide
February, 2004
163
[Nokia – 2004]
Nokia Mobile Internet Toolkit
Version 4.1
User’s Guide
May 2004
[Nokia – 2004]
Nokia Connectivity Framework Lite User’s Guide
Version 1.1
June 18, 2004
[Nokia – 2003]
Nokia WAP Gateway Simulator
Version 4.0
User’s Guide
May 2003
[Nokia – 2003]
Nokia Update Manager
Version 1.1
User’s Guide
April 2003
[Nokia – 2002]
Nokia 7210 Content Authoring SDK
Version 1.0
User’s Guide
December 2002
Copyright © Nokia 2001-2002. All rights reserved.
164
10. Apêndice I Instalação PWS / TOMCAT / APACHE
10.1. PWS
10.1.1. Instalando o PWS
O PWS está no CD do Windows 98 pode ser baixado no site da
Microsoft. Download - Personal Web Server - download - 21.949 KB
Depois de copiado o arquivo para o seu computador, descompacte-o para
uma pasta temporária usando um programa descompactador. Depois, execute o
programa "Instalar.exe" no diretório temporário ou no CD. Aparecerá a tela inicial
de instalação: Clique no botão "Avançar>". Aparecerá a próxima tela onde
escolheremos o tipo de instalação. Recomenda-se a escolha da opção "Típica",
que instala todos os componentes menos o "MSMQ - Cliente Microsoft Message
Queue" e "Visual Interdev RAD - Remote Deployment Support". Tendo a
necessidade de um desses componentes, a opção de instalação deve ser
"Personalizada" e selecione o(s) componente(s) desejado(s). A pasta padrão é
"\Inetpub\wwwroot". Tudo deve estar sendo exibido pelo servidor web pasta.
Clique no botão "Avançar>" e a instalação estará concluída.
10.1.2. Configurando o PWS
Para executar o Personal Web Server, clique no botão "Iniciar", escolha o
item "Programas" e selecione a opção "Internet Explorer". Depois clique em
"Personal Web Server" e abra o programa "Gerenciador do Personal Web".
Para iniciar o servidor web, clique no botão "Iniciar" na janela. Na área
"Principal", veremos que o serviço web está ativo, que sua home page pode ser
encontrada no endereço http://nome_da_sua_maquina (para descobrir o nome do
165
seu computador, veja as propriedades do seu "Ambiente de Rede", na área de
identificação) ou também pelo endereço IP http://127.0.0.1, que se refere à própria
máquina. Quando o servidor estiver ativo, aparecerá um ícone na barra de tarefas
do Windows.
Para acessar com servidor web, abra o seu browser e digite o seguinte
endereço: http://127.0.0.1 - Será aberta a página inicial do seu servidor, que neste
caso é a "default.asp". Observando a tela do Personal Web Manager acima,
podemos ver que este arquivo se encontra localizado na seguinte pasta do seu
servidor: "C:\Inetpub\wwwroot". Esta pasta pode ser alterada, através da área
"Avançado".
Ainda na área "Principal", podemos observar a seção "Monitorando", que
mostra diversas estatísticas do servidor: Conexões ativas, visitantes, requisições,
etc.
Agora, no menu esquerdo, selecionamos "Avançado". Em "pastas
virtuais", vemos as pastas virtuais que foram criadas para este servidor e podemos
alterá-las, adicionando novas pastas através do botão "Adicionar", editar uma
pasta virtual já existente, selecionando-a e clicando no botão "Editar propriedades"
ou removendo-a clicando no botão "Remover".
Uma pasta virtual é como se criássemos um atalho no servidor web para
uma pasta localizada fisicamente (no disco) em outro local. A idéia das pastas
virtuais é justamente facilitar o acesso a diretórios que têm um caminho muito
longo ou que estão fora da pasta padrão do servidor. Nesse caso, no browser,
digitando a URL "http://127.0.0.1/iissamples/default/welcome.htm", acessaria uma
página que está fora do diretório-base do servidor, mas está na pasta virtual
"IISSAMPLES".
166
Ainda na área "Avançado", a caixa "Ativar documento padrão" faz com
que, se ativada, quando você não especificar no browser o nome de um
documento, será procurado um documento padrão, especificado no campo
"Documento(s) padrão". Se esta opção estiver desativada e você não especificar
um nome de uma página, aparecerá uma mensagem de erro, ou uma lista de
todas as páginas, dependendo da opção "Permitir busca na pasta".
No campo "Documento(s) padrão", iremos definir os nomes dos
documentos padrão, ou seja o documento que será exibido quando o usuário não
especificar no nome do documento no browser. Por exemplo, quando alguém
digitar "http://127.0.0.1", qual a página que será exibida? É isso que é definido no
campo "Documento(s) padrão". Na tela de exemplo, o valor deste campo é
"Default.htm,Default.asp". Isso quer dizer que o servidor irá verificar se existe na
pasta base algum documento de nome "default.htm". Se tiver, este será exibido no
browser. Se não tiver, ele fará uma nova busca na pasta, desta vez por
"default.asp". Se não for encontrado nenhum dos dois documentos, uma
mensagem de erro ou a lista das páginas será exibida, dependendo da opção
"Permitir busca na pasta".
Ainda, o valor deste campo pode variar de servidor para servidor. Por
isso, quando for colocar o seu site na Internet, verifique quais são os nomes de
documentos padrões do servidor onde o seu site será hospedado. Por exemplo,
suponha que no seu site você criou a página inicial de nome "default.asp", e que
aparece normalmente no servidor local, que tem como documento padrão
"default.asp". Se o servidor onde será hospedado o seu site na Internet tiver como
documento padrão "index.asp", você será obrigado a renomear a sua página
principal e alterar todos os links no seu site para ela.
167
O campo "Permitir busca na pasta" faz com que, se você não tiver um
documento padrão especificado e esta opção estiver ativada, o visitante verá uma
lista com todos os nomes de documentos contidos na pasta. Por exemplo, se no
browser digitarmos o endereço "http://127.0.0.1/iissamples/default/" (sabendo que
nesta pasta não há nenhum documento padrão), com esta opção ativada,
aparecerá algo como:
A opção "Salvar o log de atividade do site da Web" permite que dados do
acesso ao seu servidor web sejam salvos em disco. Os logs serão salvos na pasta
\System\LogFile\W3spc1 em formato texto e podem ser visualizados em qualquer
editor de textos.
Vimos aqui as principais funções do PWS, e explicando-as passo a passo.
Este é um servidor muito utilizado em projetos de desenvolvimento para Internet,
principalmente para quem usa tecnologias como ASP e SSI.
10.2. Tomcat
10.2.1. Instalando o Tomcat
Em termos práticos, o Tomcat pode ser usado isoladamente, assumindo o
papel de um servidor web, ou em conjunto com outro servidor (como o Apache).
Neste caso, o Apache atende a requisições de páginas estáticas enquanto que o
Tomcat atende a requisições de páginas dinâmicas.
Outra forma de usar o Tomcat é como parte da versão J2EE (Enterprise
Edition) de Java para a criação de servidores de aplicação. Este é o caso, por
exemplo, do servidor de aplicação JBoss.
168
10.2.2. Instalação do servidor de JSP no IIS
O Tomcat é um servidor open source e gratuito, além disso, é muito
utilizado comercialmente. Alguns podem encontrar uma certa dificuldade para
instalá-lo e colocá-lo para funcionar. Podemos ainda colocá-lo como um serviço do
Windows (NT/2000/XP).
Devemos ter os seguintes softwares :
Java Development Kit:
Tomcat 4.0.1 Binary Distribution:
Extra do Tomcat para integração com IIS e NT/2000:
Instalamos o JDK, versão j2sdk-1_4_0_01-windows-i586.exe ou mais
recente. Deixando o diretório como j2sdk1.4.0_01. Durante a instalação deixamos
todas as opções de componentes ativadas.
Em seguida temos que ajustar a variável de ambiente chamada
JAVA_HOME apontando para o caminho do diretório dentro do qual está a
instalação do JDK. Para ajustar a variável JAVA_HOME iremos em: Painel de
Controle -> Sistema -> Avançado -> Variáveis de Ambiente. Criaremos uma nova
variável de ambiente chamada JAVA_HOME com o valor c:\j2sdk1.4.0_01
Instalando o Tomcat, versão jakarta-tomcat-4.1.12.exe executando o
arquivo de instalação deixando o tipo da instalação como Normal, e alterando o
diretório para tomcat4 e ajustando a variável de ambiente chamada
CATALINA_HOME com o valor c:\tomcat4.
169
10.2.3. Para iniciar o Tomcat:
Devemos executar o arquivo .BAT
%CATALINA_HOME%\bin\startup
Deverá aparecer algo do tipo:
C:\>%CATALINA_HOME%\bin\startup
Using CATALINA_BASE: C:\tomcat4
Using CATALINA_HOME: C:\tomcat4
Using JAVA_HOME: c:\j2sdk1.4.0_01
C:\>
Colocamos o Tomcat para funcionar como um serviço do Windows, dessa
forma não é necessário deixar a janela do DOS aberta enquanto ele estiver
funcionando. Pegamos o arquivo jk_nt_service e o arquivo wrapper.properties que
estão no arquivo tc4ntiis.zip e colocamos dentro da pasta
%CATALINA_HOME%/conf/jk.
Na seqüência editamos os arquivos wrapper.properties para configurar as
variáveis de ambiente:
wrapper.tomcat_home=c:\tomcat4
wrapper.java_home=c:\j2sdk1.4.0_01
Abrimos o prompt, e na linha de comando e executamos os seguintes
comandos para instalar o serviço do Tomcat:
C:\>cd %CATALINA_HOME%
C:\tomcat4>cd conf\jk
C:\tomcat4\conf\jk>jk_nt_service -i tomcat -a wrapper.properties
170
Iniciamos o serviço do Tomcat com o comando abaixo, mas devemos nos
certificar de que o Tomcat já não esteja sendo executado:
C:\tomcat4\conf\jk>jk_nt_service -s tomcat
Asked (and given) winsock 1.1
Starting tomcat.
tomcat started.
Para removermos o serviço, utilizamos o seguinte comando:
C:\tomcat4\conf\jk>jk_nt_service -r tomcat
10.3. Apache
Apresentaremos agora os passos para instalação e configuração do
servidor Web Apache em ambientes Windows 95/98/ME/XP, para
desenvolvimento local. O maior parte dos procedimentos apresentados aqui é
válido também para sistemas Windows NT/2000, sendo que a única diferença está
na maneira como o Apache é inicializado.
É importante lembrar que, apesar do Apache executar de maneira
satisfatória em ambientes Windows, é recomendável que esta plataforma seja
usada apenas para desenvolvimento, simulando o ambiente Unix/Linux original
onde essas ferramentas devem realmente residir.
171
10.3.1. Obtendo o Apache
O arquivo de instalação do Apache para Windows está disponível em três
formatos: .ZIP, .EXE e .MSI. Trabalharemos aqui com este último, que está no
formato de pacote do Windows Installer. O arquivo de instalação do Apache pode
ser conseguido no seguinte endereço:
http://www.apache.org/dist/httpd/binaries/win32.
O arquivo deverá estar com o seguinte nome: apache_x.x.xx-win32-
x86.msi, onde x.x.xx é a versão do software. Note que este arquivo é do tipo .msi
(Microsoft Installer). É recomendável baixar o arquivo de instalação neste formato
pois ele, além de ser menor, é mais fácil de instalar e configurar. Para maiores
informações sobre os arquivos de instalação do Apache, consulte a página de
download citada acima.
Usuários do Windows95!
Os usuários do Windows95 precisam primeiro baixar a atualização do
Winsock para Windows, caso contrário, o Apache não funcionará. Esta atualização
poderá ser obtida a partir do site da Microsoft, no seguinte endereço:
http://www.microsoft.com/windows/downloads/bin/W95ws2setup.exe
172
10.3.2. Instalando o Apache
Para efetuar a instalação a partir deste tipo de arquivo .msi, você deverá
ter o utilitário Microsoft Windows Installer instalado no seu sistema. Os usuários do
Windows2000, WindowsME e WindowsXP já possuem este utilitário instalado. Os
usuários de outras versões do Windows deverão baixá-lo a partir do site da
Microsoft, nos seguintes links:
Windows Installer v1.10 para Windows NT 4.0
Windows Installer v1.10 para Windows 95 e 98
Após ter instalado o utilitário Microsoft Windows Installer, clique duas
vezes no arquivo de instalação do Apache. Uma tela como da Figura 56 abaixo
deverá aparecer:
Figura 56 Bem vindo a Instalação do Apache
173
Prossiga clicando no botão "Next", aceitando os termos da licença de uso
e, na tela de Informações do Servidor ("Server Information"), onde é solicitado
"Network Domain", "Server Name" e "Administrator's Email Address", conforme
Figura 57 abaixo, informe, respectivamente: "localdomain", "localhost" e o seu
endereço de e-mail. Deixe também selecionado a opção "Run as a service for All
users", como indicado abaixo:
Figura 57 Informações do Servidor
Prossiga selecionando a instalação completa ("Complete") e finalize a
instalação.
10.3.3. Iniciando/parando o Apache (com Win95/98/ME/XP)
Para INICIAR o servidor Web Apache, devemos clicar no botão Iniciar-
>Programas->Apache HTTP Server e clique em Start Apache in Console. Uma
janela como a da Figura 58 deverá aparecer, indicando que o Apache está em
execução
174
Figura 58 Apache em Execução
Para PARAR o Apache, não é aconselhável que se feche esta janela
diretamente. Ao invés disso, devemos ir em Iniciar->Programas->Apache HTTP
Server e clique em Stop Apache. Isso dará inicio ao processo de shutdown do
servidor Web, o que fará com que a janela acima se feche.
Atenção usuários do Windows NT/2000!
O Apache é instalado como um serviço em sistemas Windows NT e 2000
e, por isso, os procedimentos descritos acima, para iniciar e parar o Apache, NÃO
se aplicam a essas plataformas. Use o gerenciador de serviços do Windows
NT/2000, localizado no painel de controle, para controlar a execução do Apache.
10.3.4. Testando a instalação do Apache
Para testar a instalação, primeiramente, certificaremos de que o Apache
esteja em execução. Abrindo o navegador e digitando o seguinte endereço:
http://localhost. Este é o endereço do servidor web local. Uma página como a da
Figura 59 deverá aparecer, indicando que foi instalado e configurado corretamente
o servidor Web Apache no sistema.
175
Figura 59 Teste de Instalação do Apache
Se não tiver alterado a pasta padrão de instalação do Apache, a pasta raiz
do seu servidor web se encontra no seguinte caminho no seu disco:
C:\Arquivos de programas\Apache Group\Apache\htdocs
É nesta pasta que devemos colocar todos os arquivos que serão acessados
através do servidor Web local, incluindo páginas HTML, scripts em PHP, arquivos
de imagens, etc.
176
11. Apêndice II Script do Banco de Dados Enquete”
11.1. Banco de Dados enquet
# MySQL-Front Dump 2.5
#
# Host: jayme_wap Database: enquetebd
# --------------------------------------------------------
# Server version 4.0.15
#
# Table structure for table 'enquet'
#
CREATE TABLE enquet (
id int(3) unsigned NOT NULL auto_increment,
Titulo char(150) default NULL,
op1 int(3) unsigned default '0',
op2 int(3) unsigned default '0',
op3 int(3) unsigned default '0',
op4 int(3) unsigned default '0',
op5 int(3) unsigned default '0',
op6 int(3) unsigned default '0',
t_op1 char(50) default NULL,
t_op2 char(50) default NULL,
t_op3 char(50) default NULL,
t_op4 char(50) default NULL,
t_op5 char(50) default NULL,
t_op6 char(50) default NULL,
Ativo char(1) default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
177
12. Apêndice III Código Fonte “Enquete On Line”
12.1. Arquivo Index.Wml
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<!--O evento ontimer, mostra durante um tempo de quatro
segundos o card inicial -->
<card id="inicial" title="Experimental"
ontimer="enquete.php">
<timer value="40"/>
<p align="center">
<b>
Monografia
</b>
</p>
</br>
<p align="center">
</b>
do
</b>
</p>
</br>
<p align="center">
</b>
Jayme
</b>
</p>
</br>
<p align="center">
</b>
Estudo de Caso
</b>
</p>
</br>
<p align="center">
</b>
Enquete
178
</b>
</p>
</br>
</card>
</wml>
179
12.2. Arquivo index2.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<title>Monografia ->Jayme<- Comunicação
entre dispositivos</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<body>
<!-- define a formatação do "cabeçalho' da pagina: uma tabela
acom titulo e logo -->
<table width="100%" border="0">
<tr>
<td width="17%">
<div align="center">
<img src="logouem1.gif" width="94" height="86">
</div>
</td>
<td width="65%">
<div align="center">
<strong>
<font size="3" face="Verdana,Arial, Helvetica,
sans-serif">
Universidade Estadual de Maringá
</font>
</strong>
<font size="3" face="Verdana, Arial, Helvetica, sans-
serif">
<br>
<font color="#0000FF">
<strong>
Centro de Tecnologia<br>
Departamento de Informática<br>
Maringá - PR
</strong>
</font>
</font>
</div>
</td>
<td width="18%">
<div align="center">
180
<img src="cabecalho2_r03_c02.jpg" width="123"
height="56">
</div>
</td>
</tr>
</table>
<hr color="#3333CC">
<!--define a formatação do texto central da pagina -->
<p align="center">
<strong>
<font color="#000000" size="2" face="Verdana, Arial,
Helvetica, sans-serif">
Monografia apresentada ao curso de
Especialização,<br>
"Desenvolvimento de Sistem para WEB"
</font>
</strong>
</p>
<p align="center">
<font color="#999999" size="2" face="Verdana, Arial,
Helvetica, sans-serif">
<strong>
Titulo:Comunicação entre dispositivos<br>
móveis e servidores utilizando tecnologia WAP -
WML e WMLScript.
</strong>
</font>
</p>
<p align="center">
<font color="#000000" size="2" face="Verdana, Arial,
Helvetica, sans-serif">
<strong>
Orientador: Prof. Dr. Antonio Mendes da Silva Filho.<br>
email: [email protected]
</strong>
</font>
</p>
<p align="center">
<font color="#999999" size="2" face="Verdana, Arial,
Helvetica, sans-serif">
<strong>
Aluno: Jayme Frederico F. Fedrigo Jr.<br>
email: [email protected]
181
</strong>
</font>
</p>
<p align="center">
<font color="#000000" size="2" face="Verdana, Arial,
Helvetica, sans-serif">
<strong>
julho/2005
</strong>
</font>
</p>
<hr color="#3333CC">
<!--define a formatação dos links da pagina-->
<table width="100%" border="0">
<tr>
<!-volta a pagina principal >
<td width="25%" height="24">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica,
sans-serif">
<a href="index.php">Principal</a>
</font>
</div>
</td>
<!-vai para a pagina cria enquete >
<td width="25%">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
<a href="cria.php">Criação de
Enquete</a>
</font>
</div>
</td>
<!-vai para a pagina votação>
<td width="25%">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
<a href="vota.php">Votação</a>
</font>
</div>
182
</td>
<!-vai para a pagina resultado >
<td width="25%">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
<a href="resultado.php">Resultado</a>
</font>
</div>
</td>
</tr>
</table>
</body>
</html>
183
12.3. Arquivo Cria.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<title>Criação de Enquete</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<table width="100%" border="0">
<tr>
<td width="17%">
<div align="center">
<img src="logouem1.gif" width="94" height="86">
</div>
</td>
<td width="65%">
<div align="center">
<strong>
<font size="5">
Universidade Estadual de Maringá
</font>
</strong><br>
<font color="#0000FF" face="Verdana, Arial,
Helvetica, sans-serif">
Centro de Tecnologia <br>
Departamento de Informática - Bloco 19<br>
Maringá - PR</font><br>
</div>
</td>
<td width="18%">
<div align="center">
<img src="cabecalho2_r03_c02.jpg" width="123"
height="56">
</div>
</td>
</tr>
</table>
184
<hr color="#0000CC">
<?php
/*Esse if funciona como uma precaria e simples proteção*/
if($_POST[senha] == "Jayme123"){
//Estabele conexão com o host
$link = mysql_connect("seringueira", "jayme", "monografia")
or die("Não pude conectar no banco de dados: " .
mysql_error());
//Seleciona o Banco de Dados
mysql_select_db('jayme')
or die ('Não foi possível usar db: ' . mysql_error());
/*Criação do comando SQL para a inserção de uma nova
enquete no Banco de Dados,
os dados são enviados para a criação desse comando através
do Post.*/
$sql = "INSERT INTO enquet (id, Titulo, op1, op2, op3, op4,
op5, op6, t_op1, t_op2, t_op3, t_op4, t_op5, t_op6) VALUES
(NULL, '$_POST[Titulo]', 0, 0, 0, 0, 0, 0, '$_POST[Op1]',
'$_POST[Op2]', '$_POST[Op3]', '$_POST[Op4]', '$_POST[Op5]',
'$_POST[Op6]')";
//Executa o comando SQL para Criação de nova enquete no
banco de dados
$result = mysql_query($sql)
or die('Não foi possivel inserir a nova enquete no banco
de dados: '. mysql_error());
?>
<p>Formulário enviado</p>
<?php }else { ?>
<p align="center">
<font size="3" face="Verdana, Arial, Helvetica, sans-
serif">
<strong>
Formulário para criação de
enquete.
</strong>
</font>
</p>
<form name="form1" method="post" action="">
<table width="100%" border="0">
185
<tr>
<td>
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
Titulo da Enquete
</font>
</td>
<td colspan="2">
<input name="Titulo" type="text" id="Titulo"
size="80" axlength="150">
</td>
</tr>
<tr>
<td>
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
Opção 1
</font>
</td>
<td>
<input name="Op1" type="text" id="Op1" size="40"
maxlength="50">
</td>
<td>
<input type="submit" name="Submit" value="Enviar">
</td>
</tr>
<tr>
<td>
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
Opção2
</font>
</td>
<td colspan="2">
<input name="Op2" type="text" id="Op2" size="40"
maxlength="50">
</td>
186
</tr>
<tr>
<td>
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
Opção3
</font>
</td>
<td>
<input name="Op3" type="text" id="Op3" size="40"
maxlength="50">
</td>
<td>
<input type="reset" name="Submit2" value="Limpar
Campos">
</td>
</tr>
<tr>
<td>
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
Opção4
</font>
</td>
<td colspan="2">
<input name="Op4" type="text" id="Op4" size="40"
maxlength="50">
</td>
</tr>
<tr>
<td>
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
Opção5
</font>
</td>
<td>
187
<input name="Op5" type="text" id="Op5" size="40"
maxlength="50">
</td>
<td>
Digite a senha
</td>
</tr>
<tr>
<td>
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
Opção6
</font>
</td>
<td>
<input name="Op6" type="text" id="Op6" size="40"
maxlength="50">
</td>
<td>
<input name="senha" type="password" id="senha2">
</td>
</tr>
</table>
</form>
<?php } ?>
<hr color="#0000CC">
<table width="100%" border="0">
<tr>
<td width="25%">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
<a href="index.php">
Principal
</a>
</font>
</div>
</td>
<td width="25%">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
<a href="cria.php">
Criação de Enquete
188
</a>
</font>
</div>
</td>
<td width="25%">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
<a href="vota.php">
Votação
</a>
</font>
</div>
</td>
<td width="25%">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
<a href="resultado.php">
Resultado
</a>
</font>
</div>
</td>
</tr>
</table>
</body>
</html>
189
12.4. Arquivo Enquete.php
<?php ("Content-Type: text/vnd.wap.wml"); ?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<?php
//Estabele conexão com o host
$link = mysql_connect("seringueira", "jayme", "monografia")
or die("Não pude conectar no banco de dados: " .
mysql_error());
//Seleciona o Banco de Dados
mysql_select_db('jayme')
or die ('Não foi possível usar db: ' . mysql_error());
/*O PHP entrará nesse if quando a página receber algum
conteúdo passado através do
método GET, a função desse if é colocar uma enquete ativa, a
enquete que se tornará
ativa é que que for passada através do método GET na variavel
id.*/
if($_GET[id]){
//Qualquer enquete que tiver no banco irá ter seu status
marcada como inativa
//É construido abaixo o comando SQL para isso
$sql = "UPDATE enquet SET Ativo= 'N'";
//O comando é executando no Banco
mysql_query($sql);
//È contruido o comando SQL que tornará ativa a enquete
desejada
$sql = "UPDATE enquet SET Ativo= 'S' WHERE
id='$_GET[id]'";
//O Comando é executado no Banco
mysql_query($sql);
}
//É construido o comando SQL que consulta a enquete Ativa
$sql = "SELECT * FROM enquet WHERE Ativo = 'S'";
//O comando é executado no banco
$result = mysql_query($sql)
or die('Não foi possivel recuperar os dados da tabela: '.
mysql_error());
190
//O resultado da consulta é transformado em um vetor do PHP
$row = mysql_fetch_array($result);
//Computando a soma de todos os votos da enquete
$soma = $row[op1] + $row[op2] + $row[op3] + $row[op4] +
$row[op5] + $row[op6];
?>
<wml>
<card id="opcao" title="Votacao">
<do type="accept" label="Selecionar">
<go href="#Resultado"/>
</do>
<p>
<?php echo $row[Titulo]; ?>
<select name="nome" title="Nome:">
<?php
/*Esse laço for insere 6 campos do tipo option com as
alternativas da enquete, cada
opção tera como valor o código da enquete e um numero que
identifica cada opção da enquete*/
for($i = 1; ($i <=6) && $row["t_op".$i] != ""; $i++){ ?>
<option value="<?php echo "($row[id].$i) ".$row['t_op'.$i];
?>"><?php echo $row["t_op".$i]; ?></option>
<?php } ?>
</select>
</p>
</card>
<card id="Resultado" title="Resultado:">
<do type="accept" label="Voltar">
<go href="#opcao"/> </go>
</do>
<do type="accept" label="Confirmar">
<go href="salva_voto.php" method="post">
<postfield name="Opcao" value="$(nome)"/>
</go>
</do>
<p> voce selecionou a alternativa <p><br/>
<p> $(nome) <br/><br/></p>
</card>
</wml>
191
12.5. Arquivo Enquetes.php
<?php ("Content-Type: text/vnd.wap.wml"); ?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<?php
//Estabele conexão com o host
$link = mysql_connect("seringueira", "jayme", "monografia")
or die("Não pude conectar no banco de dados: " .
mysql_error());
//Seleciona o Banco de Dados
mysql_select_db('jayme')
or die ('Não foi possível usar db: ' . mysql_error());
//É construido o comando SQL que consulta as enquetes
$sql = "SELECT * FROM enquet";
//Executa o comando SQL do Banco de Dados
$result = mysql_query($sql)
or die('Não foi possivel recuperar os dados da tabela: '.
mysql_error());
//Cria a variavel enquete que contera todas as enquetes do
banco
$enquetes = array();
//Insere todas as enquetes no vetor de enquetes
while( $enquetes[] = mysql_fetch_array($result));
?>
<wml>
<card id="opcao" title="Selecione a Enquete">
<do type="accept" label="Confirmar">
<go href="enquete.php?id=$(nome)" method="post">
<postfield name="Opcao" value="$(Opcao)"/> </go>
</do>
<p>Opções
<select name="nome" title="Nome:">
<?php reset($enquetes);
/*Este laço 'for' cria 1 option para cada enquete, esses
option servirão para selecionar uma enquete a qual se tornará
ativa quando for passada para a página seguinte através do
GET*/
for($aux = pos($enquetes); $aux = pos($enquetes); $aux
= next($enquetes)){ ?>
192
<option value="<?php echo $aux[id]; ?>"> <?php echo
$aux[Titulo]; ?> </option>
<?php } ?>
</select>
</p>
</card>
<card id="Resultado" title="Resultado:">
<do type="accept" label="Voltar">
<go href="#opcao"/> </go>
</do>
<do type="accept" label="Confirmar">
<go href="salva_voto.php" method="post"> <postfield
name="Opcao" value="$(Opcao)"/> </go>
</do>
<p> Escolhido:<br/>
A Opção: $(nome) <br/>
</p>
</card>
</wml>
193
12.6. Arquivo Vota.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<title>Monografia ->Jayme<- Comunicação
entre dispositivos</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<table width="100%" border="0">
<tr>
<td width="17%">
<div align="center">
<img src="logouem1.gif" width="94" height="86">
</div>
</td>
<td width="65%">
<div align="center">
<strong>
<font size="3" face="Verdana, Arial, Helvetica,
sans-serif">
Universidade Estadual de Maringá
</font>
</strong>
<font size="3" face="Verdana, Arial, Helvetica, sans-
serif"><br>
<font color="#0000FF">
<strong>
Centro de Tecnologia<br>
Departamento de Informática<br>
Maringá - PR
</strong>
</font>
</font>
<br>
</div>
</td>
<td width="18%">
194
<div align="center">
<img src="cabecalho2_r03_c02.jpg" width="123"
height="56">
</div>
</td>
</tr>
</table>
<hr color="#3333CC">
<p align="center">
<?php
//Estabele conexão com o host
$link = mysql_connect("seringueira", "jayme", "monografia")
or die("Não pude conectar no banco de dados: " .
mysql_error());
//Seleciona o Banco de Dados
mysql_select_db('jayme')
or die ('Não foi possível usar db: ' . mysql_error());
/*A variável $_POST[op_escolhida] é uma variavel que é
recebida pelo post e
contém o voto enviado é uma variavel do tipo string com a
informação do id
que identifica qual a enquete visualizada sequida de um
ponto que é um
separador, e seguida novamente pela opção da enquete que
foi votata.*/
if($_POST[op_escolhida]){
$str = $_POST[op_escolhida];
//As proximas duas linhas extraem a informação do id e
da opção da enquete votada
$aux = substr($str, 1, strpos($str, ')')-1);
list($id,$op) = explode('.',$aux);
/*Comando SQL que faz contabilização do voto na enquete
identificada como id
na opção identificada */
$sql = "UPDATE enquet SET op$op=op$op+1 WHERE id=$id";
//Executado o Camando SQL no banco
$result = mysql_query($sql)
or die('Não foi possivel lançar o voto na enquete: '.
195
mysql_error());
//Imprime "Voto lançado"
echo "Voto Lançado";
}
//Comando para busca no BD a enquete definida como ativa e
que acabou de ter sido votada
$sql = "SELECT * FROM enquet WHERE Ativo = 'S'";
//Executa o comando no Banco
$result = mysql_query($sql)
or die('Não foi possivel recuperar os dados da tabela:'
.mysql_error());
//Transforma o resultado da consulta em um vetor PHP
$row = mysql_fetch_array($result);
//Contabiliza o total de votos
$soma = $row[op1] + $row[op2] + $row[op3] + $row[op4] +
$row[op5] + $row[op6];
?>
</p>
<form name="form1" method="post" action="">
<p>
<strong>
Vote na enqueter:
<font color="#0000FF" face="Verdana, Arial, Helvetica,
sans-serif">
<font color="#FF0000"><?php echo $row[Titulo]; ?>
</font>
</font>
</strong>
</p>
<table width="100%" border="0">
<tr>
<td>
<table width="30%" border="0">
<?php /*As proxima 10 linhas fazem parte de um loop
que será repetido o
numero de opções que tiver a enquete e irá constuir
um pedaço da tabela
que conterá as opções para serem votadas da enquete */
for($i = 1; ($i <=6) && $row["t_op".$i] != "";
$i++){ ?>
196
<tr>
<td width="4%" nowrap>
<input type="radio" name="op_escolhida"
value="<?php echo "($row[id].$i) ".$row['t_op'.$i];
?>">
</td>
<td width="96%" nowrap>
<?php echo $row["t_op".$i]; ?>
</td>
</tr>
<?php } ?>
</table>
</td>
<td>
<div align="center">
<font color="#0000FF" size="4" face="Verdana,
Arial, Helvetica, sans-serif">
Vote também pelo seu Celular, acesse o
endereço WAP http://200.201.30.189/wml/
</font>
</div>
</td>
</tr>
</table>
<p align="center">
<input type="submit" name="Submit" value="Votar">
</p>
</form>
<hr color="#3333CC">
<table width="100%" border="0">
<tr>
<td width="25%" height="24">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
<a href="index.php">
Principal
</a>
</font>
</div>
197
</td>
<td width="25%">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
<a href="cria.php">
Criação de Enquete
</a>
</font>
</div>
</td>
<td width="25%">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
<a href="vota.php">
Votação
</a>
</font>
</div>
</td>
<td width="25%">
<div align="center">
<font size="2" face="Verdana, Arial, Helvetica, sans-
serif">
<a href="resultado.php">
Resultado
</a>
</font>
</div>
</td>
</tr>
</table>
</body>
</html>
198
12.7. Arquivo Salva_Voto.php
<?php ("Content-Type: text/vnd.wap.wml"); ?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<!-- estabelece conexão com o host -->
<?php
//Estabele conexão com o host
$link = mysql_connect("seringueira", "jayme",
"monografia")
or die("Não pude conectar no banco de dados: " .
mysql_error());
//Seleciona o Banco de Dados
mysql_select_db('jayme') or die ('Não foi possível usar
db: ' . mysql_error());
/*A variável $_POST[Opcao] é uma variavel que é recebida
pelo post e contém o voto enviado é uma variavel do tipo
string com a informação do id que identifica qual a enquete
visualizada sequida de um ponto que é um separador, e seguida
novamente pela opção da enquete que foi votata.*/
$str = $_POST[Opcao];
//As proximas duas linhas extraem a informação do id e da
opção da enquete votada
$aux = substr($str, 1, strpos($str, ')')-1);
list($id,$op) = explode('.',$aux);
//Gera o Comando SQL que será utilizado para enviar ao BD
onde será computado o voto
$sql = "UPDATE enquet SET op$op=op$op+1 WHERE id=$id";
//Computa a SQL gerada no banco
$result = mysql_query($sql)
or die('Não foi possivel lançar a voto: '.
mysql_error());
//Gera o Comando SQL para fazer a consultar da propria
enquete que acaba de ser votada
$sql = "SELECT * FROM enquet WHERE id = $id";
//Dispara o Comando SQL no Banco
$result = mysql_query($sql)
or die('Não foi possivel recuperar os dados da tabela: '.
199
mysql_error());
//Transforma a consulta que acaba de ser feita em um vetor
$row = mysql_fetch_array($result);
//Cria a variavel $soma e atribui a ela a soma de todos os
votos
$soma = $row[op1] + $row[op2] + $row[op3] + $row[op4] +
$row[op5] + $row[op6];
?>
<wml>
<!--mostra o card resultado-->
<card id="Resultado" title="Resultado:">
<!--selecionando a opção voltar, vai p/ o card opção -->
<do type="accept" label="Voltar">
<go href="#opcao"/> </go>
</do>
<p> A Opção : <b>
<!--mostra a opção selecionada-->
<?php echo $row[t_op.$op];?> </b> <br/>
Tem a preferencia de <b>
<!--?calcula e mostra o total em porcentagem dos votos-->
<?php echo bcdiv($row["op".$op], $soma, 3)* 100; ?> % </b>
<br/>
De um total de: <b>
<!--calcula e mostra a soma total dos votos-->
<?php echo $soma; ?> </b>participantes.<br/>
</p>
</card>
</wml>
200
12.8. Arquivo Resultado.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<title>Resultado da votação da enquete</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<table width="100%" border="0">
<tr>
<td width="17%">
<div align="center">
<img src="logouem1.gif" width="94" height="86">
</div>
</td>
<td width="65%">
<div align="center">
<strong>
<font size="5">
Universidade Estadual de Maringá
</font>
</strong><br>
<font color="#0000FF" face="Verdana, Arial,
Helvetica, sans-serif">
Centro de Tecnologia<br>
Departamento de Informática - Bloco 19<br>
Maringá - PR</font><br>
</div>
</td>
<td width="18%">
<div align="center">
<img src="cabecalho2_r03_c02.jpg" width="123"
height="56">
</div>
</td>
</tr>
</table>
<?php
//Estabele conexão com o host
$link = mysql_connect("seringueira", "jayme", "monografia")
or die("Não pude conectar no banco de dados: " .
mysql_error());
201
//Seleciona o Banco de Dados
mysql_select_db('jayme')
or die ('Não foi possível usar db: ' . mysql_error());
//uma pequena simples checagem de senha
if($_POST[senha] == "Jayme123"){
if($_POST[OP] == "Ativar"){
//Construção de um SQL para setar todas as consultas
com desativas
$sql = "UPDATE enquet SET Ativo= 'N'";
//Execução do SQL no Banco
mysql_query($sql);
//SQL para setar como ativa a enquete a ser definida
como ativa
$sql = "UPDATE enquet SET Ativo= 'S' WHERE
id='$_POST[enquete]'";
//Execução do SQL no Banco
mysql_query($sql);
echo "alterada a enquete";
}//if
else if(($_POST[enquete] != 1) && ($_POST[OP] ==
"Excluir")){
//Comando SQL para apagar a enquete selecionada
$sql = "DELETE FROM enquet WHERE id = $_POST[enquete]";
//Execução do comando para apagar a enquete selecionada
mysql_query($sql)
or die('Não foi possivel recuperar os dados da
tabela: '. mysql_error());
}else if(($_POST[enquete] == 1) && ($_POST[OP] ==
"Excluir")){
/*Um pequeno controle para que o banco não fique sem
nenhuma enquete, no caso
a Enquete 1º foi escolhida para sempre ficar no banco*/
echo "1 Enquete deve permanecer no banco de dados pelo
menos";
}
}//if
//SQL que recupera todas as enquetes armazenadas no banco
$sql = "SELECT * FROM enquet";
202
//Executa comando SQL
$result = mysql_query($sql)
or die('Não foi possivel recuperar os dados da tabela: '.
mysql_error());
//Define a variavel enquetes que conterá todas as enquetes
$enquetes = array();
//povoa a variavel enquetes com as enquetes do banco
while( $enquetes[] = mysql_fetch_array($result));
?>
<?php
if(($_POST[senha]) && ($_POST[senha] != "Jayme123")){
?>
<script language="JavaScript">
alert("Senha Incorreta!!!!");
</script>
<?php } ?>
<hr color="#0000CC">
<form name="form1" method="post" action="">
<table width="100%" border="0">
<tr>
<td width="23%" nowrap>Selecione a Enquete:
<select name="enquete" id="select2">
<?php /*A sequencia php das proxima 7 linhas povoa
o
combo box com os titulos das enquetes*/
reset($enquetes);
for($aux = pos($enquetes); $aux =
pos($enquetes); $aux = next($enquetes)){
?>
<option value="<?php echo $aux[id]; ?>"
selected><?php echo
$aux[Titulo];?>
</option>
<?php } ?>
</select>
</td>
<td width="14%" nowrap>
<input name="Buscar" type="submit" id="Buscar4"
value="Atualizar">
</td>
<td width="17%" nowrap>Digite a senha </td>
<td width="21%"><input name="senha" type="password"
id="senha">
203
</td>
<td width="25%"><input name="Apagar" type="submit"
id="Apagar2" value="OK">
</td>
</tr>
<tr>
<td nowrap>Ativar Enquete
<input type="radio" name="OP" value="Ativar">
</td>
<td nowrap> </td>
<td nowrap>Excluir Enquete</td>
<td><input type="radio" name="OP" value="Excluir">
</td>
<td> </td>
</tr>
</table>
</form>
<?php
/*O código abaixo recupera a enquete ativa ou então a enquete
que se deseja buscar e
mostra em uma tabela o resultado*/
if($_POST[enquete] && $_POST[Buscar]){
$sql = "SELECT * FROM enquet WHERE id =
$_POST[enquete]";
}else {
$sql = "SELECT * FROM enquet WHERE Ativo = 'S'";
}//else
$result = mysql_query($sql) or die('Não foi possivel
recuperar os dados da tabela: '. mysql_error());
$row = mysql_fetch_array($result);
$soma = $row[op1] + $row[op2] + $row[op3] + $row[op4] +
$row[op5] + $row[op6];
?>
<hr color="#0000CC">
<p align="center"><strong><font color="#0000FF"
size="4">Titulo da enquete: <?php echo $row[Titulo]; ?>
</font></strong></p>
<table width="100%" border="0">
<tr>
<td bgcolor="#669900"><strong><font color="#FFCC66"
size="2" face="Verdana, Arial, Helvetica, sans-
serif">Opção</font></strong></td>
<td bgcolor="#669900"><strong><font color="#FFCC66"
size="2" face="Verdana, Arial, Helvetica, sans-
serif">Total</font></strong></td>
<td bgcolor="#669900"><strong><font color="#FFCC66"
size="2" face="Verdana, Arial, Helvetica, sans-
204
serif">Porcentagem</font></strong></td>
<td bgcolor="#669900"><strong><font color="#FFCC66"
size="2" face="Verdana, Arial, Helvetica, sans-
serif">Gráfico</font></strong></td>
</tr>
<?php for($i = 1; ($i <=6) && $row["t_op".$i] != ""; $i++){
?>
<tr>
<td bgcolor="#669900"><strong><font color="#00FFFF"
size="2" face="Verdana, Arial, Helvetica, sans-serif"> <?php
echo $row["t_op".$i]; ?> </font></strong></td>
<td><strong><font size="2" face="Verdana, Arial,
Helvetica, sans-serif"> <?php echo $row["op".$i]; ?>
</font></strong></td>
<td><strong><font size="2" face="Verdana, Arial,
Helvetica, sans-serif">
<?php if($soma !=0 ) {
echo bcdiv($row["op".$i], $soma, 3)* 100 . "%";
}else{
echo "0";
}
?>
</font></strong></td>
<td><img src="pixel.gif" width="
<?php if($soma !=0 ) {
echo bcdiv($row["op".$i], $soma, 3)* 100;
}else{
echo "0";
}
?>
"height="20"></td>
</tr>
<?php } ?>
<tr>
<td><strong><font color="#000000" size="2" face="Verdana,
Arial, Helvetica, sans-serif">Total</font></strong></td>
<td><strong><font color="#000000" size="2" face="Verdana,
Arial, Helvetica, sans-serif"> <?php echo $soma; ?>
</font></strong></td>
<td colspan="2"><strong><font color="#000000" size="2"
face="Verdana, Arial, Helvetica, sans-
serif">100%</font></strong></td>
</tr>
</table>
<hr color="#0000CC">
<table width="100%" border="0">
205
<tr>
<td width="25%"><div align="center"><font size="2"
face="Verdana, Arial, Helvetica, sans-serif"><a
href="index.php">Principal</a></font></div>
</td>
<td width="25%"><div align="center"><font size="2"
face="Verdana, Arial, Helvetica, sans-serif"><a
href="cria.php">Criação
de Enquete</a></font></div>
</td>
<td width="25%"><div align="center"><font size="2"
face="Verdana, Arial, Helvetica, sans-serif"><a
href="vota.php">Votação</a></font></div>
</td>
<td width="25%"><div align="center"><font size="2"
face="Verdana, Arial, Helvetica, sans-serif"><a
href="resultado.php">Resultado</a></font></div>
</td>
</tr>
</table>
<p> </p>
</body>
</html>