Você está na página 1de 78

UNIO EDUCACIONAL MINAS GERAIS S/C LTDA FACULDADE DE CINCIAS APLICADAS DE MINAS

Autorizada pela Portaria no 577/2000 MEC, de 03/05/2000 BACHARELADO EM SISTEMAS DE INFORMAO

DESENVOLVIMENTO DE UM SISTEMA DE VENDAS NA WEB UTILIZANDO JSP

RAFAEL FERREIRA BARALE

Uberlndia 2007

RAFAEL FERREIRA BARALE

DESENVOLVIMENTO DE UM SISTEMA DE VENDAS NA WEB UTILIZANDO JSP

Trabalho de Final de curso submetido UNIMINAS como parte dos requisitos para a obteno do grau de Bacharel em Sistemas de Informao.

Orientador: Prof. Msc. Silvio Bacal Jr

Uberlndia 2007

RAFAEL FERREIRA BARALE

DESENVOLVIMENTO DE UM SISTEMA DE VENDAS NA WEB UTILIZANDO JSP

Trabalho de Final de curso submetido UNIMINAS como parte dos requisitos para a obteno do grau de Bacharel em Sistemas de Informao. Orientador: Prof. Msc. Silvio Bacal Jr

Banca Examinadora: Uberlndia, 17 de Dezembro de 2007.

Prof. MSc. Silvio Bacal Jr. Profa. Dra. Ktia Lopes da Silva. Prof. Esp. Carlos Henrique de Barros

Uberlndia 2007

Dedico a todas as pessoas que me incentivaram para a realizao deste trabalho, como amigos, parentes, mestres e principalmente aos meus pais que acreditaram na minha capacidade de desenvolvimento e sucesso.

AGRADECIMENTOS

Primeiramente a Deus, por estar ao meu lado iluminando os caminhos que passei at hoje. A minha famlia, meus pais, irmos e minha namorada, por sempre estarem junto a mim, me apoiando e incentivando para que eu pudesse concluir o curso de Sistemas de Informao. A UNIMINAS, pela oportunidade de fazer o curso, conhecer tantos profissionais qualificados, e principalmente ao meu orientador, Prof. Silvio Bacal Jr., pela pacincia e dedicao de um mestre.

RESUMO

Este trabalho apresenta uma importante evoluo na criao de web sites, a tecnologia JSP (Java Server Pages). uma tecnologia utilizada para desenvolver sites com contedos dinmicos, dentre as diversas tecnologias disponveis atualmente no mercado, como: PHP, ASP, ColdFusion, Perl, entre outras. JSP possui suas principais caractersticas herdadas da prpria linguagem Java, como: portabilidade, facilidade de programao, flexibilidade, eficincia e, no podendo esquecer, o fato de ser uma tecnologia gratuita, o que permite ao desenvolvedor usufruir todos os recursos disponveis por ela. Antes de iniciar o estudo sobre JSP, so apresentadas algumas caractersticas e conceitos sobre a tecnologia Servlet. Entendendo o funcionamento da tecnologia Servlet fica mais prtico estudar JSP. Tambm so apresentadas ferramentas necessrias na utilizao da tecnologia JSP, alguns detalhes de suas instalaes e configuraes bsicas para o desenvolvimento de projetos. Este trabalho finalizado com o desenvolvimento de um projeto em JSP, um site que demonstra o funcionamento de uma loja virtual, contemplando o diagrama de casos de uso do projeto, as pginas que compem o projeto e os cdigos que implementam as funcionalidades do projeto.

Palavras Chave: Internet, Servidor, Web, Servlet, Java Server Pages.

ABSTRACT

This work presents important tool on web sites creation, the JSP (Java Server Pages). Among several tools disposable us to PHP, ASP, ColdFusion and Perl, JSP technology is useful to aim sites development what have dynamics contents. The main JSP features are legacy of property Java language: portability, fixture feasible, flexibility and efficient. By the principal fact watch is free technology, JSP enable to use all disposable resources. Previously in the study, some features about the Servlet technology and concepts are presents, because the understanding about Servlet operation allow easy in JSP study. Subsequently, are presents require tools on JSP technology utilization us to anyhow installation and basic configuration to projects development. Finally, this work shows one project development by use JSP. The created site demonstrates e-commerce operation, by visualizing some diagram about project use event, its compound pages and implementers codes to functionality.

Key word: Internet, Server, Web, Servlet, Java Server Pages.

LISTA DE FIGURAS

Figura 01: Arquitetura Servlet ...........................................................................................18 Figura 02: Hierarquia Servlet.............................................................................................18 Figura 03: Ciclo de vida de um Servlet ..............................................................................21 Figura 04: Exemplo de tempo de sesso.............................................................................22 Figura 05: Funcionamento JSP ..........................................................................................24 Figura 06: Classe Java Bean ..............................................................................................30 Figura 07: Estrutura de diretrios Apache Tomcat .............................................................41 Figura 08: Estrutura de diretrios do Eclipse......................................................................42 Figura 09: cone Apache Tomcat .......................................................................................42 Figura 10: Tela de apresentao do Apache Tomcat...........................................................43 Figura 11: Tela de seleo de workspace ...........................................................................43 Figura 12: Alterando a workspace......................................................................................44 Figura 13: Configurando Tomcat no Eclipse......................................................................44 Figura 14: Tela Preferences ...............................................................................................45 Figura 15: Configurando JSP no Eclipse............................................................................45 Figura 16: Arquitetura do Projeto ......................................................................................47 Figura 17: Diagrama de Casos de Uso ...............................................................................48 Figura 18: Diagrama Entidade Relacionamento .................................................................53 Figura 19: Diagrama de Classes.........................................................................................53 Figura 20: Diagrama de Navegao ...................................................................................54 Figura 21: Interface Efetuar Login .....................................................................................55 Figura 22: Cdigo Interface Login .....................................................................................55 Figura 23: Diagrama de Seqncia Efetuar Login ..............................................................56 Figura 24: Cdigo Efetuar Login .......................................................................................57 Figura 25: Interface Cadastrar Usurio...............................................................................57 Figura 26: Cdigo Interface Cadastrar Cliente ...................................................................58 Figura 27: Cdigo Cadastrar Cliente ..................................................................................59 Figura 28: Diagrama de Seqncia Cadastrar Cliente.........................................................60 Figura 29: Interface Lista Produtos ....................................................................................61 Figura 30: Cdigo Interface Lista Produtos........................................................................62 Figura 31: Cdigo Adicionar Carrinho...............................................................................62

Figura 32: Diagrama de Seqncia Adicionar Carrinho......................................................63 Figura 33: Interface Visualizar Carrinho ............................................................................64 Figura 34: Cdigo Interface Visualizar Carrinho................................................................64 Figura 35: Diagrama de Seqncia Visualizar Carrinho .....................................................65 Figura 36: Cdigo Remover do Carrinho ...........................................................................65 Figura 37: Cdigo Fechar Pedido.......................................................................................66 Figura 38: Diagrama de Seqncia Fechar Pedido .............................................................67 Figura 39: Interface Visualizar Endereo ...........................................................................68 Figura 40: Cdigo Interface Visualizar Endereo...............................................................68 Figura 41: Interface Alterar Endereo ................................................................................69 Figura 42: Cdigo Interface Cadastrar Endereo................................................................70 Figura 43: Cdigo Alterar Endereo ..................................................................................70 Figura 44: Diagrama de Seqncia Confirmar Entrega.......................................................72 Figura 45: Interface Forma de Pagamento..........................................................................72 Figura 46: Cdigo Interface Forma de Pagamento .............................................................72 Figura 47: Cdigo Sair.......................................................................................................73

LISTA DE QUADROS

Quadro 01: Diferena de Linguagens.................................................................................25 Quadro 02: Objetos Implcitos...........................................................................................34 Quadro 03: Mtodos Objeto Config...................................................................................35 Quadro 04: Diretrio do Apache Tomcat ...........................................................................41

LISTA DE ABREVIATURAS E SMBOLOS

API Application Program Interface ASP Active Server Pages CGI Common Gateway Interface DER Diagrama Entidade Relacionamento EJB Enterprise JavaBean HTML HyperText Markup Language HTTP HyperText Transfer Protocol IDE Integrate Development Environment J2EE Java 2 Enterprise Edition J2SDK Java 2 Standard Development Kit JDBC Java Data Base Connectivity JSP Java Server Pages JVM Java Virtual Machine PHP HyperText Preprocessor SGBD Sistema de Gerenciamento de Banco de Dados SQL Structure Query Language URL Universal Resource Locater WAR Web Application Archive WWW Word Wide Web

SUMRIO

1 INTRODUO ....................................................................................................................................13 1.1 CENRIO ATUAL..............................................................................................................................13 1.2 IDENTIFICAO DO PROBLEMA .........................................................................................................14 1.3 OBJETIVOS DO TRABALHO ...............................................................................................................14 1.4 JUSTIFICATIVA PARA A PESQUISA .....................................................................................................14 1.5 ORGANIZAO DO TRABALHO .........................................................................................................15 2 SERVLET ............................................................................................................................................17 2.1 ARQUITETURA DE UM SERVLET........................................................................................................17 2.2 HIERARQUIA SERVLET ....................................................................................................................18 2.2.1 Http Servlet ...........................................................................................................................19 2.2.2 Http Servlet Request.............................................................................................................19 2.2.3 Http Servlet Response..........................................................................................................20 2.3 CICLO DE VIDA DE UM SERVLET.......................................................................................................20 2.4 GERENCIAMENTO DE SESSO .........................................................................................................21 3 JAVA SERVER PAGES .....................................................................................................................23 3.1 FUNCIONAMENTO ...........................................................................................................................23 3.2 DIFERENA ENTRE LINGUAGENS SCRIPTS. .......................................................................................24 3.3 AES JSP ...................................................................................................................................25 3.3.1 <jsp:param>..........................................................................................................................25 3.3.2 <jsp:forward> ........................................................................................................................26 3.3.3 <jsp:include>.........................................................................................................................26 3.3.4 <jsp:plugin> ..........................................................................................................................27 3.3.5 <jsp:getProperty> .................................................................................................................28 3.3.6 <jsp:setProperty>..................................................................................................................28 3.3.7 <jsp:useBean>......................................................................................................................29 3.4 JAVA BEANS ...................................................................................................................................30 3.5 PROPRIEDADES DE UM JAVA BEAN ..................................................................................................31 3.5.1 Propriedades indexadas. ......................................................................................................31 3.5.2 Propriedades booleanas.......................................................................................................31 3.6 DIRETIVAS ......................................................................................................................................32 3.6.1 Include ..................................................................................................................................32 3.6.2 Page .....................................................................................................................................32 3.7 DECLARAES ...............................................................................................................................32 3.8 EXPRESSES. ................................................................................................................................33 3.9 SCRIPTLETS. ..................................................................................................................................33 3.10 OBJETOS IMPLCITOS ....................................................................................................................34 3.10.1 Objeto Page........................................................................................................................34 3.10.2 Objeto Config......................................................................................................................35 3.10.3 Objeto Request...................................................................................................................35 3.10.4 Objeto Response ................................................................................................................35 3.10.5 Objeto Out ..........................................................................................................................36 3.10.6 Objeto Session. ..................................................................................................................36 3.10.7 Objeto Application...............................................................................................................37 3.10.8 Objeto pageContext............................................................................................................37 3.10.9 Objeto Exception ................................................................................................................38 4 FERRAMENTAS PARA O DESENVOLVIMENTO DE APLICAES WEB UTILIZANDO JSP .....39 4.1 PR- REQUISITOS ...........................................................................................................................39 4.2 INSTALAO DO J2SDK..................................................................................................................40 4.3 INSTALAO E CONFIGURAO DO APACHE TOMCAT ........................................................................41 4.4 INSTALAO DO ECLIPSE 3.2 ..........................................................................................................42 4.5 INICIANDO O APACHE TOMCAT.........................................................................................................42 4.6 INICIANDO O ECLIPSE ......................................................................................................................43

4.7 CONFIGURANDO O AMBIENTE DO ECLIPSE .......................................................................................44 5 DESENVOLVIMENTO DE PROJETO WEB UTILIZANDO JSP........................................................47 5.1 CASO DE USO .................................................................................................................................47 5.2 MODELAGEM DE DADOS ..................................................................................................................52 5.3 DIAGRAMA DE CLASSES...................................................................................................................53 5.4 DIAGRAMA DE NAVEGABILIDADE.......................................................................................................54 5.5 IMPLEMENTAO DO CDIGO JSP ...................................................................................................54 5.5.1 Fazer login no sistema .........................................................................................................54 5.5.2 Cadastrar novo cliente..........................................................................................................57 5.5.3 Fazer Pedido. .......................................................................................................................61 6 CONCLUSO .....................................................................................................................................75 6.1 CONSIDERAES FINAIS .................................................................................................................75 6.2 PROPOSTA DE TRABALHOS FUTUROS ...............................................................................................76 REFERNCIAS BIBLIOGRFICAS......................................................................................................77

13

1 INTRODUO

1.1 Cenrio atual

A informtica tornou-se uma realidade no sculo XX, principalmente em meados de 1995, com a introduo da Internet para usurios domsticos. A Internet um dos maiores meios de comunicao desenvolvidos pelo homem e a cada dia, mais usurios utilizam esta grande rede. Por meio da Internet possvel comunicar-se com qualquer parte do mundo, de forma prtica e rpida. Um conjunto de pginas contendo informaes disponveis na Internet chamado de site. No comeo, em funo da tecnologia existente, os sites eram denominados estticos, apresentando uma srie de pginas pr-definidas, cujo contedo no era modificado. Quando um endereo digitado no navegador para acessar alguma pgina da Internet, feita uma solicitao para um determinado arquivo localizado em um computador em especial. O computador no qual o arquivo est armazenado chamado de web server (servidor web). A principal funo deste computador servir a qualquer um na Internet que solicite arquivos que ele hospeda. Como nunca se sabe quando um usurio usar o um aplicativo web, o servidor precisa estar ativo e em execuo o tempo todo. Se, no incio, a Internet era composta, principalmente, de pginas estticas com contedo institucional, hoje ela oferece uma infinidade de aplicaes com contedo dinmico e personalizado.

14

1.2 Identificao do problema

Com o aumento expressivo na quantidade de usurios da Internet nos ltimos anos, percebeu-se a necessidade de uma interao mais gil e flexvel com estes usurios. Por este motivo surgiram os chamados sites dinmicos. Os sites dinmicos possuem capacidade de receber e processar as informaes de seus usurios, reagindo s mesmas em tempo real. A fundamental diferena entre um site esttico e um dinmico a capacidade adicional que o site dinmico tem de interatividade. No site esttico, o fluxo de informao segue apenas no sentido do servidor ao usurio; j no site dinmico, o fluxo de informao ocorre em ambos sentidos. Se, no incio, a Internet era composta, principalmente, de pginas estticas com contedo institucional, hoje ela oferece uma infinidade de aplicaes com contedo dinmico e personalizado.

1.3 Objetivos do trabalho

O objetivo deste trabalho apresentar um estudo sobre a tecnologia Java Server Pages (JSP), que utilizada para a criao de sites dinmicos. Este trabalho tambm ir monstrar como utilizar ferramentas necessrias para o desenvolvimento de projetos em JSP, finalizando com o desenvolvimento de um projeto simples e eficaz, de um sistemas de vendas na web utilizando o Java Server Pages.

1.4 Justificativa para a pesquisa

Atualmente existem diversas tecnologias no mercado que possibilitam o

15

desenvolvimento de sites dinmicos, seja para construir um simples site com contedo dinmico, ou mesmo um complexo sistema de comercializao, que utiliza ferramentas que possibilitam consulta a bancos de dados, integrao com sistemas corporativos, entre outras inmeras funcionalidades. Dentre estas tecnologias, o Java Server Pages oferece diversas vantagens em relao ao uso de outras tecnologias (como PHP, ASP e CGI). As principais vantagens so herdadas da prpria linguagem Java, que tem como caracterstica: Portabilidade: a aplicao desenvolvida pode ser implantada em diversas plataformas, como por exemplo, Windows, Unix e Macintosh; Facilidade de programao: a programao orientada a objetos, simplificando o desenvolvimento de sistemas complexos. Flexibilidade: o Java j se encontra bastante difundido, contando com uma enorme comunidade de desenvolvedores, ampla documentao e diversas bibliotecas e cdigos prontos, dos quais o desenvolvedor pode usufruir. Alm dessas vantagens, pode-se destacar tambm, a licena gratuita da tecnologia JSP, permitindo ao desenvolvedor usufruir todas as ferramentas e recursos necessrios e disponveis pela tecnologia.

1.5 Organizao do Trabalho

Este trabalho est dividido em seis captulos: Os captulos 2 e 3 apresentam a fundamentao terica do trabalho, utilizando-se da pesquisa bibliogrfica onde so abordados conceitos sobre as tecnologias Servlet e Java Server Pages. O captulo 4 descreve quais ferramentas necessrias para desenvolver aplicaes web utilizando a tecnologia Java Server Pages.

16

O captulo 5 demonstra o desenvolvimento de um projeto web, apresentado os resultados obtidos. No captulo 6 so apresentadas as concluses do trabalho.

17

2 SERVLET

Antes de falar em JSP, aconselhvel primeiro entender os Servlets. Entre os diversos protocolos disponveis nas web, um dos mais utilizados o protocolo HTTP (HyperText Transfer Protocol). Este protocolo serve para estabelecer comunicao entre usurios da Internet e os servidores Web. O modelo desta comunicao conhecido como solicitao/resposta (request/response), e funciona da seguinte forma: o usurio envia uma solicitao de alguma ao ao servidor (request), o servidor realiza a ao e envia uma resposta ao usurio (response). Segundo Neto (2002, p.22), Servlets so programas simples feitos em Java os quais rodam em um Servlet Container. Um recipiente (Container) Servlet como um servidor Web que trata requisies do usurio e gera resposta.

2.1 Arquitetura de um Servlet.

Os servlets utilizam o modelo request/response que interagem dinamicamente com usurios da Internet, por isso, uma ferramenta bastante utilizada no desenvolvimento de aplicaes web. Os servlets funcionam da seguinte maneira: o usurio faz uma requisio ao servidor (o endereo de uma pgina, documentrios, arquivos), que, por sua vez, carrega os servlets, somente uma vez na memria, onde ficam armazenados at que sejam modificados, e d incio execuo do servlet gerando uma resposta solicitao do usurio, como mostra a figura 01.

18

Figura 01 - Arquitetura Servlet

A cada solicitao de um servlet j existente na memria, o servidor envia a resposta ao usurio, sem que seja tratado como um novo processo para se gerenciar.

2.2 Hierarquia Servlet

Um Servlet nada mais que uma classe Java. Em especial, essa classe deve implementar a interface javax.servlet.Servlet. Existem duas classes, na biblioteca de Servlets, que implementam essa interface, que so: javax.servlet.GenericServlet e sua sub-classe, javax.servlet.http.HttpServlet, como mostra a figura 02. A classe GenericServlet, serve para atender requisies genricas, utilizando quaisquer protocolos, e a classe HttpServlet para atender exclusivamente requisies cujo protocolo seja HTTP.

Figura 02 - Hierarquia Servlet

19

2.2.1 Http Servlet

Esta classe estende a classe javax.servlet.GenericServlet, possuindo basicamente seis mtodos que so chamados automaticamente conforme as requisies HTTP. Se o browser (navegador) faz uma solicitao atravs do mtodo get, no Servlet ir ser chamado o mtodo doGet(). Os seis mtodos so: doPost(); utilizado para envio de dados ao servidor, uma nica vez. doGet();utilizado para envio de dados ao servidor, repetidas vezes. doPut(); permite enviar um arquivo ao servidor. doDelete(); permite remover um documento ou uma pgina do servidor. doOption(); determina quais opes do HTTP so suportadas. doTrace(); fornece resposta com todos cabealhos enviados. Os mtodos mais usados so: doGet() e doPost().

2.2.2 Http Servlet Request

As solicitaes que o navegador envia atravs do usurio ao servidor, sendo informaes importantes, tais como cookies1 e referenciador, so tratadas a partir do objeto HttpServletRequest passado a um mtodo doGet ou doPost. Assim, so recuperados cabealhos e parmetros passados ao servidor, entre outros. Seus principais mtodos so: getHeaderNames(); - busca todos os nomes do cabealho. getHeader(); - busca todos os valores do cabealho. _____________
1 Cookie um arquivo texto (.txt) contendo informaes pertinentes ao usurio enviados pelo servidor.

20

getQueryString(); - busca a Query String completa. getParameterName(); - busca todos os nomes dos parmetros getParameterValues(); - recuperao de parmetros de mltiplos valores getParameter(); recuperao de parmetros simples.

2.2.3 Http Servlet Response

A interface HttpServletResponse oferece diversos mtodos especficos de protocolo. Sempre h necessidade de especificar a sada para o browser, atravs dos mtodos setContentType, usado para definir o tipo de informao passada, e getWriter, utilizado para escrever textos. Abaixo segue um exemplo de cdigo de utilizao dos mtodos setContentType e getWriter. Exemplo: response.setContentType(text/html); PrintWrite out = response.getWriter(); Com os mtodos aplicados a essa interface, pode-se enviar cookies ao browser, manipular URLs2 enviados ao browser e at mesmo gerenciar sesses.

2.3 Ciclo de Vida de um Servlet.

Em qualquer Servlet preciso implementar direta ou indiretamente a interface javax.servlet.Servlet. O ciclo de vida de um servlet determinado por trs de seus mtodos: init, service e destroy. Os servidores carregam e executam o servlet, que, por sua vez, aceita uma ou mais requisies de clientes e retornam dados para o mesmo. Os servidores podem tambm remover os servlets. A figura 03 ilustra o ciclo de vida de um servlet. _____________
2

URL (Universal Resource Locator) Cdigo para Localizao Universal, permite acessar um servio na rede web.

21

Figura 03 - Ciclo de vida de um Servlet

Carregar: Quando um servidor carrega um servlet, ele invoca o mtodo init() do mesmo. Como a maioria dos servlets roda em servidores multi-thread3, no h concorrncia durante a inicializao dos mesmos. Isto ocorre devido ao fato do servidor chamar somente uma vez o mtodo init() quando carrega o servlet, e no o chamar de novo a no ser que o servlet seja recarregado. O servidor no pode recarregar um servlet at que o mesmo seja removido pelo mtodo destroy(). Executar: Aps o servidor carregar e inicializar o servlet, o mesmo est apto a receber requisies do usurio. Cada requisio possui uma chamada ao mtodo run() em sua prpria thread4 do servlet. O mtodo recebe a requisio do usurio e envia a resposta. Os servlets podem executar vrios mtodos de servios de uma vez. Remover: Os servlets permanecem em execuo at que sejam removidos. Quando um servidor remove um servlet, ele executa o mtodo destroy() do mesmo. O mtodo executado somente uma vez. O servidor no executar o mtodo destroy() novamente at que o servlet seja recarregado e reinicializado.

2.4 Gerenciamento de Sesso

O protocolo de rede que os servidores web e browsers cliente usam para se comunicar o HTTP. Os servidores HTTP no mantm qualquer informao a respeito dos navegadores que esto conectados a eles. As conexes HTTP so iniciadas por um browser _____________
3 4

Servidores com mais de um fluxo de controle seqencial. Fluxo de controle seqencial dentro de um programa.

22

cliente que envia uma solicitao e recebe uma resposta. No final do processo, o servidor no possui nenhuma informao a respeito do computador no qual aquele navegador est rodando. Se o navegador fizer outra solicitao, a mesma ser tratada, pelo servidor como se fosse a primeira. Atualmente, grande parte de sites web usa algum tipo de login (usurio/senha) para realizar operaes durante o decorrer do processamento da pgina. Se vrias pginas forem solicitadas, necessrio um mecanismo para manter o controle de usurios, caso contrrio o usurio ter que confirmar o login a cada operao realizada. Este mecanismo de tentar manter a informao de login chamado de gerenciamento de sesso. A idia do gerenciamento de sesso fazer com que todas as solicitaes feitas por um nico usurio, durante um determinado perodo, faam parte de uma nica sesso. Das tcnicas de gerenciamento de sesso, o objeto Session muito utilizado por ser fcil de usar, alm de muito poderoso. Por padro, o objeto session, quando criado, envia ao browser do cliente e ao servidor um identificador de sesso, que fica ativo at que se destrua a mesma ou o tempo expire. O arquivo web.xml um arquivo de configurao de aplicaes web. Nesse arquivo, so especificadas as servlets que compe a aplicao web. O arquivo WEB-INF/web.xml o descritor do contexto de aplicao web, segundo a especificao Java Servlet/J2EE. As informaes nele contidas so as configuraes especficas da aplicao. (d'vila,2003) A figura 04 ilustra um exemplo de configurao de tempo de sesso atravs do arquivo web.xml:

Figura 04 - Exemplo de tempo de sesso

23

3 JAVA SERVER PAGES

Segundo Neto (2002, p.22), JSP uma pgina da Web que contm cdigo Java junto com html. Em termos funcionais, a tecnologia JSP (Java Server Pages) no oferece nada que no possa conseguir com Servlets. O JSP, entretanto, oferece vantagem de ser facilmente codificado, facilitando assim a elaborao e manuteno da pgina dinmica. Alm disso, permite separar a programao lgica (parte dinmica) da programao visual (parte esttica), facilitando o desenvolvimento de aplicaes mais robustas, seguras, portteis e eficientes, em que o programador e designer podem trabalhar em um mesmo projeto de forma independente. A tecnologia JSP usada para servir contedo dinmico para o usurio, usando lgica de dados no lado do servidor. JSP possui a vantagem da portabilidade de plataforma, e da compilao das pginas permitindo que elas rodem mais rapidamente. Possibilita tambm que o desenvolvedor de sites possa produzir aplicaes que acessa aos mais diversos bancos de dados utilizando a tecnologia JDBC (Java Database Connectivity), acesso a arquivos texto, captao de informaes sobre visitante e sobre o servidor, entre diversas outras.

3.1 Funcionamento

Inicialmente o usurio faz uma requisio de uma pgina JSP, por meio de um browser. Esta pgina, ento, ser processada pelo servidor; se for a primeira vez, a pgina JSP transformada em um Servlet, que compilado, e gerando um bytecode (conhecido por .class), a partir da qual gerada uma pgina HTML5 (HyperText Markup Language) que enviada ao browser do cliente. A partir da segunda vez que esta pgina for acessada _____________
5

HTML - trata-se de uma linguagem de marcao utilizada para produzir pginas na Internet.

24

verificado apenas se ocorreram ou no quaisquer mudanas; caso negativo, apenas o bytecode chamado para gerar a pgina HTML. A figura 05 ilustra esse funcionamento.

Figura 05 Funcionamento JSP

Vale lembrar que existe uma pequena lentido no primeiro acesso a pgina JSP devido compilao do JSP em Servlets (bytecode .class). A partir do segundo acesso, as pginas JSP executam com maior rapidez. JSP usa a linguagem Java como base para a sua linguagem de Scripts, aproveitando todo seu potencial, motivo pelo qual JSP apresenta-se muito mais flexvel e robusto.

3.2 Diferena entre linguagens scripts.

Existem vrias linguagens scripts usadas para criar aplicaes Web. Entre elas ASP, PHP, ColdFusion e Perl. O quadro 01 apresenta as principais diferenas entre essas linguagens.
JSP ASP Windows, Windows Sistemas Operaciona Linux, Unix is Sun PWS, IIS Servidores Apache, One, Netscape Banco de Dados Oracle, DB2, Sybase, Informix ColdFusion Windows, Linux, Unix Perl Windows, Linux, Unix, Mac OS Apache, IIS Access, MySQL, Oracle, DB2, Sybase, Informix PHP Windows, Linux, Unix Apache, IIS Access, MySQL, Oracle, DB2, Sybase, Informix

Apache, IIS, Sun One, Netscape Access, SQL Access, SQL Server, Oracle, Server, DB2, Informix Sybase, DB2, Oracle, Informix

25 JSP ASP ColdFusion - Portabilidad - Grande - Sintaxe e base no simples, - Todos os mercado parecida recursos da - Fcil com linguagem aprendizad HTML Java o - Integrao - Gratuito com produtos Macrome dia - Exige - S roda - Base nativamen instalada conhecimen to Java te no pequena Windows - Custo adicional com servidor Perl PHP - Gratuito - Gratuito - Expansivo - Sintaxe por meio de simples mdulos

Prs

Contras

Sintaxe complexa - No h suporte oficial, mas comunidade atuante presta ajuda Quadro 01 Diferena entre linguagens

No h suporte oficial, mas comunidad e atuante presta ajuda

O quadro 01 apresenta tambm os prs e contras na utilizao das linguagens. Devese levar em considerao que a linguagem JSP necessita de um nico componente para que execute suas aplicaes em diversas plataformas: a Mquina Virtual Java (JVM). A Mquina Virtual Java responsvel por traduzir o bytecode em cdigo nativo, independente do sistema operacional utilizado.

3.3 Aes JSP

As aes JSP executam diversas funes que estendem a capacidade de JSP. Na maioria das vezes so usadas para manipular JavaBeans (em 3.5 ser visto). Existem sete tipos de aes, a seguir apresentadas.

3.3.1 <jsp:param>

Esta ao, como o prprio nome diz, define um parmetro. Sintaxe: <jsp:param name="nomeParmetro" value="valor />

26

Exemplo: <jsp:param name=total value=<%total%>/>

3.3.2 <jsp:forward>

A ao forward transfere os dados de uma solicitao contendo informaes da requisio do usurio de uma pgina JSP para outro arquivo JSP, HTML ou Servlet, desde que faam parte de uma mesma aplicao. Sintaxe: <jsp:forward page = (URL relativa | <%= expresso %>)/> ou <jsp:forward page = (URL relativa | <%= expresso %>)/> <jsp:param name = nome do parmetro value = (valor do parmetro | <%= expresso %>)/> </jsp:forward> Exemplo: <jsp:forward page = selecimg.jsp> <jsp:param name = totalimg value = <%=totalimg%>/> </jsp:forward> 3.3.3 <jsp:include>

Este elemento permite incluir um arquivo esttico ou dinmico numa pgina JSP. O resultado de incluir um ou outro so diferentes. Se o arquivo esttico, seu contedo includo quando a pgina compilada num servlet. Se for dinmico, funciona como uma requisio para o arquivo e manda o resultado de volta para a pgina. Quando estiver terminada a ao do include continua-se processando o restante da pgina. Sintaxe: <jsp:include page = ( URL relativa | <%=expresso %>) flush=true/>

27

ou <jsp:include page = ( URL relativa | <%=expresso %>) flush=true/> <jsp:param name= nome do parmetro value = (nome do parmetro | <%=expresso%>)/> </jsp:include> Exemplo: <html> <body> Ol! <jsp:include page = conteudo.jsp/> </body> </html> 3.3.4 <jsp:plugin>

Executa ou mostra um objeto (precisamente um applet** ou um JavaBean) no navegador do cliente, usando o plug-in Java que est embutido no navegador ou instalado na mquina. Sintaxe: <jsp:plugin type="bean | applet" code="classFileName" codebase="classFileDirectoryName" [ name="instanceName" ] [ archive="URIToArchive, ..." ] [ align="bottom | top | middle | left | right" ] [ height="displayPixels" ] [ width="displayPixels" ] [ hspace="leftRightPixels" ] [ vspace="topBottomPixels" ] [ jreversion="JREVersionNumber | 1.1" ] [ nspluginurl="URLToPlugin" ] [ iepluginurl="URLToPlugin" ] > </jsp:plugin> Exemplo: <jsp:plugin type=applet code =MyApplet.class width =475 height = 350> </jsp:plugin>

28

3.3.5 <jsp:getProperty>

O elemento <jsp:getProperty> captura o valor da propriedade de um JavaBean usando o mtodo get da propriedade, e mostra o valor na pgina JSP. necessrio criar ou localizar o bean com <jsp:useBean> antes de usar <jsp:getProperty>. Sintaxe: <jsp:getProperty name= nome do objeto(JavaBean) property=nome da propriedade/> Exemplo: <jsp:getProperty name =livro1 property =titulo/>

3.3.6 <jsp:setProperty>

Este elemento ajusta o valor de uma ou mais propriedades em um JavaBean, usando o mtodo de ajuste (set) dele. necessrio declarar o JavaBean com <jsp:useBean> antes de ajustar uma propriedade. Estas duas aes trabalham juntas, portanto o nome de instancia usada nas duas deve ser igual. Sintaxe: <jsp:setProperty name=nome da instancia de bean property= * | property= nome da propriedade param= nome do parmetro | property= nome da propriedade value=(string | <%expresso%>)/> Exemplo: <jsp:setProperty name =clients property =telefone value =3265-5687>

29

3.3.7 <jsp:useBean>

A ao jsp:useBean responsvel por localizar ou criar uma nova instncia de um JavaBean. Esta ao possui as propriedades: id, scope e class, onde id uma varivel que identifica o bean, scope o escopo no qual o bean existe e no qual a varivel definida por id estar disponvel, os valores da propriedade scope podem ser: page, request, session e application, a propriedade class cria uma instncia de um bean a partir de uma class. Quando o valor da propriedade scope for page, o bean poder ser usado dentro de uma pgina JSP que contenha o elemento jsp:useBean, caso o valor seja request o bean pode ser usado a partir de qualquer pgina JSP processando a mesma requisio, com o valor igual a session o bean existir durante toda a sesso do usurio, j com o valor sendo application, o bean poder ser usado a partir de qualquer pgina na mesma aplicao web da pgina que o criou. Sintaxe: <jsp: useBean id=nome scope=page|request|session|application class=nome completo da classe> . . . </jsp:usebean> Exemplo: <jsp:useBean id =clientes class =Clientes scope =page> <jsp:setProperty name =clientes property =nome value =Jose> <jsp:setProperty name =clientes property =telefone value=3265-5687/> </jsp:useBean>

30

3.4 Java Beans

JavaBeans so, na verdade, classes Java reutilizveis que seguem algumas regras bem definidas para nomeao de seus mtodos e variveis. A idia por trs do uso desses JavaBeans em pginas JSP que eles encapsulem a lgica da aplicao, separando-a do restante da pgina. Para efeitos de uso dessas classes em pginas JSP, necessrio seguir algumas regras bsicas no desenvolvimento: 1- O construtor da classe, se declarado, no deve receber nenhum argumento. 2- Podem existir um ou mais mtodos pblicos para a definio de valores de propriedades do JavaBean; esses mtodos so chamados de mtodos setter. 3- Podem existir um ou mais mtodos pblicos para a obteno de valores de propriedades do JavaBean; esses mtodos so chamados de mtodos getter. A figura 06 mostra um exemplo de classe JavaBean que implementa uma lgica bsica.

Figura 06 Classe JavaBean

31

3.5 Propriedades de um Java Bean

Os atributos so definidos como privados, com mtodos get e set para acess-los, que ento sero pblicos, conforme a sintaxe abaixo. Sintaxe: private String nome; public String getNome() {return nome;} public void setNome(String novo) {nome = novo;} Uma boa conveno de nome de propriedades comear com letra minscula e colocar em maiscula a primeira letra de cada palavra subseqente. Assim como nos mtodos de ajuste, a palavra set ou get comea em minscula e a primeira letra da propriedade ser maiscula. Exemplo: private String corCarro; public String getCorCarro( );

3.5.1 Propriedades indexadas. a propriedade que possui um conjunto de valores, por meio de mtodos pode-se acessar o conjunto completo de valores ou mesmo acessar um elemento especifico. private String[ ] telefone; public String[ ] getTelefone(); public void setTelefone (int index); 3.5.2 Propriedades booleanas

A propriedade booleana possui dois valores: verdadeiro e falso. Para as propriedades booleanas, pode-se substituir a palavra get por is. private boolean enabled; public Boolean isEnabled();

32

3.6 Diretivas

So instrues processadas quando a pgina JSP compilada em um servlet. Diretivas so usadas para ajustar instruo no nvel da pgina, inserir dados de arquivos externos e especificar bibliotecas. Diretivas so definidas entre <%@ e %>". Existem trs tipos de diretivas:

3.6.1 Include

A diretiva include inclui arquivo esttico em uma pagina JSP. Sintaxe: <%@ include file=URL relativa%> Exemplo <%@ include file=Reverso.jsp%> 3.6.2 Page

Esta diretiva define atributos que so aplicados a todo o arquivo JSP e a todos os seus arquivos includos estaticamente. sintaxe <%@ page attributelist %> exemplo: <%@ page language=java %>

3.7 Declaraes

So similares s declaraes de variveis de Java e definem variveis para uso

33

subseqente em expresses ou scriptlets. So definidas entre <%! e %> Sintaxe: <%! Declarao %> Exemplo: <%! private int id = 0; Public String parseDate(Date dt) {} %>

3.8 Expresses.

Possui um contedo da linguagem Java que validado, convertido para uma String, e inserido onde a expresso aparece no arquivo JSP. No usado ponto e vrgula para terminar a expresso e s pode haver uma entre <%= e %>. Sintaxe: <%= expresso %> Exemplo: <% = new java.util.Date()%>

3.9 Scriptlets.

Scriptlets so blocos de cdigo Java embutidos em uma pgina JSP. O cdigo do scriptlet inserido literalmente no servlet gerado pela mquina. definido entre <% e %>. Sintaxe: <% scriptlet %> Exemplo: <% if(Calendar.getinstance().get(Calendar.AM_PM)== Calendar.AM) {%>Est de manh!<%} else {%>Que horas so <%} %>

34

3.10 Objetos Implcitos

Como uma caracterstica conveniente, o container JSP deixa disponveis objetos implcitos que podem ser usados nos scriptlets e expresses, sem que o autor tenha que crilos. Estes objetos instanciam classes definidas na API (Application Progam Interface) de Servlets. A seguir o quadro 02 mostra os principais objetos implcitos, suas classes e descrio destes objetos.
Objeto Page Config Request Response Out Session application pageContext Exception Classe ou Interface javax.servlet.jsp.HttpJspPage javax.servlet.ServletConfig javax.servlet.http.HttpServletRequest javax.servlet.http.HttpServletResponse javax.servlet.jsp.JspWriter javax.servlet.http.HttpSession javax.servlet.ServletContext javax.servlet.jsp.PageContext javax.lang.Throwable Descrio Instncia de servlet da pagina Dados de configurao do servlet Dados de solicitao incluindo parmetros Dados da resposta Fluxo de sada para o contedo da pgina Dados de sesso especficos de usurio Dados compartilhados por todas as pginas de aplicao Dados de contexto para execuo da pgina Erros no capturados ou de execuo

Quadro 02 Objetos Implcitos

3.10.1 Objeto Page.

O objeto page representa a prpria pgina JSP ou, mais especificamente uma instncia da classe de servlet na qual a pgina foi traduzida. Abaixo segue um exemplo utilizando o objeto implcito page: <%@ page info="Pgina de Teste" %> ..... <%= ((javax.servlet.jsp.HttpJspPage)page).getServletInfo() %>

35

3.10.2 Objeto Config.

O objeto config armazena dados de configurao do servlet na forma de parmetros de inicializao - para a qual uma pgina JSP compilada. O objeto config uma intncia da interface javax.servlet.ServletConfig. Esto listados abaixo os mtodos fornecidos por esta interface.
Mtodos EnumerationgetInitParameterNames() String getInitParameter(String name) Descrio Recupera o nome de todos os parmetros de inicilizao Recupera o valor do parmetro de inicilizao a partir de um nome

Quadro - 03 Mtodos do objeto config.

As pginas JSP raramente so escritas para interagir com parmetros de inicializao, por isso, este objeto pouco utilizado na prtica.

3.10.3 Objeto Request

O objeto request representa a solicitao que acionou o processamento da pgina atual. Para solicitaes de protocolo HTTP, este objeto fornece acesso a todas as informaes associadas pgina, incluindo sua fonte, a URL solicitada e quaisquer cabealhos, cookies ou parmetros associados com a solicitao. Exemplo:
// Retorna o endereo de rede (IP) do host que enviou a solicitao.

Seu IP :<%= request.getRemoteAddr() %>


// Retorna o nome totalmente qualificado do host que enviou a solicitao.

Seu Host :<%= request.getRemoteHost() %> 3.10.4 Objeto Response

O objeto response representa a resposta que ser enviada de volta para o usurio como resultado do processamento da pgina JSP.

36

Exemplo ...
// Atribui o valor definido pela varivel "value" ao cabealho especificado por "name"

response.setHeader (String name, String value); 3.10.5 Objeto Out

Este objeto implcito representa o fluxo da sada para a pgina, cujo contedo ser enviado para o navegador como o corpo de sua resposta. Exemplo: ...
//retorna pgina a palavra UNIMINAS

out.println(UNIMINAS); 3.10.6 Objeto Session.

Este objeto implcito representa a sesso atual de um usurio individual. Todas as solicitaes feitas por um usurio so partes de uma nica srie de interaes com o servidor web, ou seja, parte de uma sesso. Desde que novas solicitaes por aquele usurio continuem sendo recebidas pelo servidor, a sesso persiste. Se, no entanto, um perodo de tempo passar sem que qualquer nova solicitao do usurio seja recebida, a sesso expira. O objeto session, ento, armazena informaes a respeito da sesso. Os dados especficos de aplicao so tipicamente adicionados sesso atravs de atributos, usando os mtodos de interface javax.servlet.http.HttpSession. O objeto session no est disponvel para todas as pginas JSP. Seu uso restrito s pginas que participam do gerenciamento da sesso, o que indicado atravs do atributo session da diretiva page. O padro que todas as pginas participem do gerenciamento de sesso. Se o atributo estiver definido para false, o objeto no estar disponvel e seu uso resultar em um erro de compilao quando o container JSP tentar traduzir a pgina para um servlet.

37

Exemplo: ... Usuario u = new Usuario(nome, senha);


//associa o valor da senha u ao nome usuario"

session.setAttribute("usuario", u); ... 3.10.7 Objeto Application.

Este objeto implcito representa a aplicao qual a pgina JSP pertence. As pginas JSP esto agrupadas em aplicaes de acordo com suas URLs. Este objeto permite acessar informaes do container, interagir com o servidor e fornecer suporte para logs. Todas pginas JSP no mesmo contexto (aplicao) podem acessar as mesmas informaes embutidas neste objeto. Exemplo: ... Date d = new Date(); application.setAttribute("hoje", d); ... Date d = (Date) application.getAttribute("hoje");

3.10.8 Objeto pageContext

O objeto pageContext uma instncia da classe javax.servlet.jsp.PageContext, e fornece acesso programtico a todos os outros objetos implcitos. Para os objetos implcitos que aceitam atributos, o objeto pageContext tambm fornece mtodos para acessar aqueles atributos. Alm disso, o objeto pageContext implementa mtodos para transferir controle da pgina atual para outra pgina, temporariamente, para gerar um output a ser includo no output da pgina atual, ou para transferir todo o controle.

38

Exemplo: ...
// Recupera o objeto "usuario" do escopo pageContext

User uPag = (User)pageContext.getAttibute ("user", pageContext.PAGE_SCOPE) ... 3.10.9 Objeto Exception

O objeto exception uma instncia da classe Java.lang.Throwable. O objeto exception no est automaticamente disponvel em todas as pginas JSP. Ao invs disso, este objeto est disponvel apenas nas pginas que tenham sido designadas como pginas de erro, usando o atributo isErrorPage da diretiva page. Exemplo: ...
// Imprime a pilha de execuo em funcionamento quando a exceo foi lanada para o fluxo de sada //especificado pelo parmetro out.

exception.printStackTrace(out);

Aps a apresentao de algumas caractersticas e funcionalidades da tecnologia JSP, j possvel criar um ambiente de desenvolvimento de aplicaes web. No capitulo 4 sero apresentados pr-requisitos necessrios para o desenvolvimento de aplicaes web baseado em JSP.

39

4 FERRAMENTAS PARA O DESENVOLVIMENTO DE APLICAES WEB UTILIZANDO JSP

Atualmente existem ferramentas que auxiliam o desenvolvedor na criao de aplicaes web e estas ferramentas tm o objetivo de agilizar o processo de desenvolvimento de uma aplicao, evitando que grandes trechos de cdigos sejam implementados. As ferramentas utilizadas nos exemplos aqui mostrados possuem cdigo livre, podendo ser utilizadas sem nenhum custo para o desenvolvedor.

4.1 Pr- requisitos

O primeiro passo para desenvolver aplicaes Web com Servlets e pginas JSP a configurao de um ambiente bsico para a implantao e execuo dessas aplicaes. Esse ambiente bsico pressupe a instalao de dois componentes principais: o Java 2 Standard Development Kit (J2SDK), utilizado para compilar aplicaes Java, e um Servlet Container, que ir executar os Servlets e pginas JSP desenvolvidas. o container o componente responsvel por dar suporte para as APIs de servlet e JSP . (Caleum,2006) Alguns sistemas operacionais j possuem um J2SDK instalado. Caso ainda no se encontre instalado, possvel obt-lo no site oficial do Java (http://java.sun.com). Neste site possvel selecionar entre as verses de J2SDK para as diversas plataformas de mercado tais como Windows, Linux, Solaris e outros. O Servlet Container ser responsvel por prover um framework bsico para as diversas aplicaes desenvolvidas, inicializandoas, distribuindo as requisies entre elas e tratando os resultados do processamento de cada aplicao. Existem diversos servidores disponveis no mercado, como: IIS, Sun One, Netscape,

40

Apache, dentre outros. Nos exemplos aqui mostrados ser usado o Apache Tomcat, disponvel no site http://jakarta.apache.org. Esse servidor de aplicaes atende s especificaes mencionadas anteriormente e pode ser utilizado sem nenhum custo para o desenvolvedor. Um ltimo componente utilizado para desenvolver Servlets e pginas JSP um ambiente grfico de desenvolvimento (IDE). Nos exemplos a seguir ser utilizado o Eclipse 3.2 que pode ser encontrado no site oficial (http://www.eclipse.org). O Eclipse um dos ambientes grficos mais utilizados atualmente e no gera nenhum custo aos usurios. O Eclipse traz em sua instalao alguns plugins bsicos para desenvolvimento, mas existem outros que facilitam muito o trabalho do desenvolvedor, como o Lomboz para trabalhar com JSP e Servlets, e o Sysdeo para interao com o Tomcat. Para desenvolvimento de aplicaes Web com Servlets e pginas JSP, utilizando o Eclipse, sero utilizados dois plugins, um para interao do Eclipse com o Container que o plugin Sysdeo, disponvel no site http://www.sysdeo.com/eclipse/tomcatplugin, e o outro para gerar Servlets e JSPs (Lomboz), disponvel no site

http://forge.objectweb.org/projects/lomboz . Para a utilizao correta dos plugins, necessrio que possuam verso correspondente a do Eclipse.

4.2 Instalao do J2SDK

A verso do J2SDK utilizada nos exemplos a seguir a 5.0, para plataformas Windows XP e, como visto anteriormente, pode ser encontrada no site oficial do Java (http://java.sun.com). O processo de instalao do J2SDK tpico, uma vez iniciado, basta seguir corretamente as instrues do assistente de ajuda. O processo simples e rpido.

41

4.3 Instalao e configurao do Apache Tomcat

No site oficial do Apache Tomcat esto disponveis verses do software com instaladores para os diversos sistemas operacionais. O processo de instalao simples e um tutorial deste processo est disponvel no site http://www.mhavila.com.br/topicos/java/tomcat.html. Uma vez finalizado, tem-se um servidor de aplicaes pronto para produo. Para entender um pouco mais a fundo o funcionamento do Tomcat, deve-se examinar os diretrios criados durante o processo de instalao. Os principais diretrios criados podem ser vistos no quadro 04:

Quadro 04 Diretrio do Apache Tomcat

A figura 07 ilustra a estrutura de diretrios do Apache Tomcat.

Figura 07 Estrutura de diretrios do Apache Tomcat

42

4.4 Instalao do Eclipse 3.2

Conforme visto, existe um diretrio no Apache Tomcat chamado webapps onde devem ser instaladas as diversas aplicaes desenvolvidas. O Eclipse 3.2 gera um arquivo de extenso WAR (Web Application Archive), que serve para empacotar toda a aplicao web. Atravs do arquivo war, pode-se instalar aplicaes web junto ao Apache Tomcat. Para isto, o arquivo .war deve ficar localizado dentro do diretrio webapps do Tomcat. Para instalar o Eclipse 3.2, basta descompactar o contedo do arquivo no diretrio raz da mquina, como na figura mostrada abaixo.

Figura 08 - Estrutura de diretrios do Eclipse

A instalao do tomcatplugin praticamente igual a do Eclipse, bastando descompactar todo o arquivo dentro da pasta C:\eclipse\plugins. No caso do Lomboz, necessrio descompactar as pastas plugins e features dentro de suas respectivas pastas.

4.5 Iniciando o Apache Tomcat

Para iniciar o Apache Tomcat, basta executar o Monitor Tomcat. Aparece um cone do Apache Tomcat na rea de notioficao, como na figura 09.

Figura 09 - cone Apache Tomcat

43

Basta clicar com o boto direito do mouse na figura e selecionar a opo start service. Para testar se o Tomcat est funcionando corretamente, abra o navegador e digite o seguinte endereo http://localhost:8080, onde 8080 a porta selecionada durante a instalao do Apache. A figura 10 mostra a tela de apresentao do Apache Tomcat.

Figura 10 - Tela de apresentao de Apache Tomat

4.6 Iniciando o Eclipse

Para iniciar o uso do Eclipse, execute o arquivo eclipse.exe. Durante o processo de inicializao do Eclipse deve-se configurar o diretrio padro das Workspaces, que ser o local onde ficaro armazenados os projetos.

Figura 11 - Tela de seleo de workspace

A figura 11 mostra a seleo do workspace, que pode ser alterado posteriormente, no menu File, na opo Switch workspace, como mostra a figura 12.

44

Figura 12 - Alterando a workspace

4.7 Configurando o Ambiente do Eclipse

Ao iniciar o desenvolvimento de um novo projeto no Eclipse, necessrio configurar o ambiente do mesmo, para possibilitar a comunicao do projeto com o Tomcat e desenvolver pginas JSP e Servlets. Para configurar o projeto com o Tomcat, deve-se acessar no menu Window, a opo Preferences (Figura 13).

Figura 13 - Configurando o Tomcat no Eclipse

Na tela Preferences, selecionar a opo Tomcat. Em Tomcat version selecionar a verso instalada do Tomcat, neste caso a 5.X. Em Tomcat home selecionar o diretrio do Tomcat (C:\Arquivos de programas\Apache Software Foundation\Tomcat 5.5). A tela Preferences deve ficar da mesma forma como mostrado na figura 14.

45

Figura 14 - Tela Preferences

Na opo Tomcat Manager App, deve-se especificar o nome e a senha do administrador do Tomcat. Clicar no boto Add user to tomcat-users.xml e clicar em OK, observando que administrador e senha foram definidos anteriormente, no processo de instalao do Apache Tomcat. O segundo passo configurar o Eclipse para que possa gerar pginas JSP e Servlets. Para isto, deve-se selecionar no menu Window a opo Customize Perspective, na qual mostrada na figura 15.

Figura 15 - Configurando JSP no Eclipse

Em Shortcut Categories selecionar a opo web, como mostra a figura 15. Na

46

aba commands, selecionar a opo tomcat e clicar em OK. Aps realizar estes dois processos, o ambiente Eclipse est configurado para o desenvolvimento de um novo projeto.

47

5 DESENVOLVIMENTO DE PROJETO WEB UTILIZANDO JSP O projeto tem como base um sistema simples de comrcio eletrnico (e-commerce), seguindo alguns procedimentos bsicos para desenvolver funcionaldades do sistema. O principal intuito de um comrcio eletrnico expandir a rea de vendas, podendo assim aumentar o faturamento de uma empresa. O usurio ter acesso a consultas e manipulao de banco de dados. Para isso ser utilizada a tecnologia JDBC (Java Database Connectivity). A arquitetura utilizada no desenvolvivemento do projeto, uma arquitetura centrada em pginas JSP, onde a pgina inicial a pgina Login.jsp. A figura 16 ilusta a arquitetura do projeto.

Figura 16 Arquitetura do Projeto.

5.1 Caso de uso

Um caso de uso uma descrio de um conjunto de seqncias de aes, inclusive variantes, que um sistema executa para produzir um resultado de valor observvel por um ator. (BOOCH; RUMBAUGH; JACOBSON, 2000, p. 220). Os casos de uso so descritos atravs de especificaes. O diagrama de casos de uso uma representao grfica de cada funcionalidade que os usurios utilizam no decorrer do

48

sistema. A figura 17 ilustra o diagrama de casos de uso de um sistema simples de comrcio eletrnico, que conta com oito casos de uso.

Figura 17 Diagrama de casos de uso.

Caso de uso 1: Efetuar Login. Objetivo: Logar no sistema. Ator: Usurio. Prioridade: Essencial. Pr-condies: Usurio cadastrado. Resultados: Usurio logado no sistema. Fluxo de eventos Principal: Efetuar Login. 1) Sistema solicita dados do usurio 2) Usurio informa dados solicitados 3) Sistema valida dados 4) Sistema permite entrada no sistema Fluxos Secundrios: Usurio no cadastrado. 3.1) Sistema exibe mensagem Usurio invlido 3.2) Voltar para o passo 2 do fluxo principal

49

Senha incorreta. 3.3) Sistema exibe mensagem Senha invlida 3.4) Voltar para o passo 2 do fluxo principal Caso de uso 2: Cadastrar usurio. Objetivo: Cadastrar novo usurio no sistema. Ator: Usurio. Prioridade: Essencial. Pr-condies: Usurio no cadastrado. Resultados: Usurio cadastrado no sistema. Fluxo de eventos Principal: Cadastrar usurio. 1) Sistema solicita dados do novo usurio 2) Usurio informa dados solicitados 3) Usurio solicita a gravao dos dados 4) Sistema valida dados 5) Sistema grava dados do novo usurio Fluxos Secundrios: Usurio existente. 4.1) Sistema exibe mensagem Usurio j cadastrado 4.2) Voltar para o passo 2 do fluxo principal 4.3) Sistema exibe mensagem Dados obrigatrios no informado 4.4) Voltar para o passo 2 do fluxo principal Senha diferente da confirmao. 4.5) Sistema exibe mensagem Senha digitada diferente da confirmada 4.6) Voltar para o passo 2 do fluxo principal Caso de uso 3: Adicionar no carrinho. Objetivo: Adicionar produtos no carrinho. Ator: Usurio. Prioridade: Essencial. Pr-condies: Usurio logado no sistema Resultados: Produto adicionado no carrinho. Fluxo de eventos Principal: Adicionar produto no carrinho.

50

1) Sistema informa lista de produtos. 2) Usurio seleciona o(s) produto(s) e quantidade desejada 3) Sistema adiciona produtos ao carrinho 4) Sistema informa lista de produtos adicionados ao carrinho Fluxos Secundrios: Produto no selecionado. 3.1) Sistema exibe mensagem Nenhum produto selecionado 3.2) Voltar para o passo 2 do fluxo principal Caso de uso 4: Remover do carrinho. Objetivo: Remover algum determinado produto do carrinho Ator: Usurio. Prioridade: Desejvel. Pr-condies: Produto adicionado ao carrinho Resultados: Produto removido do carrinho. Fluxo de eventos Principal: Remover Produto do Carrinho de Compras. 1) Sistema informa lista de produtos adicionados ao carrinho 2) Usurio seleciona o produto que deseja remover 3) Sistema remove produto do carrinho 4) Sistema informa produtos existentes no carrinho Fluxos Secundrios: Produto no selecionado. 3.1) Sistema exibe mensagem Nenhum produto selecionado 3.2) Voltar para o passo 2 do fluxo principal Caso de uso 5: Fechar Pedido. Objetivo: Salvar o pedido no banco de dados. Ator: Usurio. Prioridade: Essencial. Pr-condies: Produto adicionado ao carrinho Resultados: Pedido armazenado no banco de dados. Interface associada: Figura 20. Fluxo de eventos Principal: Fechar Pedido de Compras.

51

1) Sistema informa lista de produtos adicionados ao carrinho 2) Usurio solicita o fechamento do pedido 3) Sistema verifica produtos adicionados ao carrinho 4) Sistema grava os produtos ao pedido Fluxos Secundrios: Produto no adicionado ao carrinho. 3.1) Sistema exibe mensagem Nenhum produto no carrinho 3.2) Voltar para o passo 2 do fluxo principal do caso de uso 3. Caso de uso 6: Visualizar Endereo. Objetivo: Permitir o usurio validar o endereo de entrega. Ator: Usurio. Prioridade: Importante. Pr-condies: Usurio cadastrado no sistema. Resultados: Endereo de entrega confirmado. Fluxo de eventos Principal: Confirmao do endereo de Entrega. 1) Sistema informa Endereo de entrega cadastrado 2) Usurio confirma o endereo de entrega do pedido 3) Sistema mantm armazenado o endereo de entrega do pedido Fluxo de eventos Alternativo: Alterar o endereo de entrega. 1) Usurio solicita a alterao do endereo. 2) Sistema disponibiliza a alterao do endereo. Caso de uso 7: Alterar Endereo Objetivo: Permitir ao usurio a alterao do endereo de entrega. Ator: Usurio. Prioridade: Desejvel. Pr-condies: Usurio cadastrado no sistema. Resultados: Endereo de entrega alterado. Fluxo de eventos Principal: Alterao do Endereo de Entrega. 1) Sistema solicita dados do novo endereo de entrega. 2) Usurio informa dados solicitados.

52

3) Sistema valida os novos dados informados. 4) Sistema grava os dados informados. Fluxos Secundrios: Dados obrigatrios no informado. 3.1) Sistema exibe mensagem Dados obrigatrios no informado 3.2) Voltar para o passo 2 do fluxo principal Caso de uso 8: Confirmar pagamento. Objetivo: Permitir o usurio confirmar a forma de pagamento. Ator: Usurio. Prioridade: Essencial. Pr-condies: Pedido fechado e endereo confirmado. Resultados: Forma de pagamento confirmado e compra realizada. Fluxo de eventos Principal: Forma de pagamento confirmada. 1) Sistema disponibiliza a forma de pagamento. 2) Usurio confirma a forma de pagamento. 3) Sistema finaliza o pedido de compra. Fluxo Alternativo: Efetuar logoff. 1) Usurio solicita a saida do sistema. 2) Sistema executa a saida. 5.2 Modelagem de dados

O modelo entidade-relacionamento (E-R) tem por base a percepo de que o mundo real formado por um conjunto de objetos chamados entidades e pelo conjunto dos relacionamentos entre esses objetos. (SILBERSCHATZ; KORTH; SUDARSHAN, 1999, p. 21). O modelo entidade-relacionamento (MER) uma tcnica utilizada para modelagem dos dados. Os componentes deste modelo so: entidades, relacionamentos e atributos. As entidades representam um conjunto de pessoas, coisas ou conceitos do projeto

53

que precisam de informaes. Os relacionamentos so as associaes entre as entidades. Os atributos so as propriedades particulares de cada entidade. O modelo de dados representado graficamente pelo Diagrama de Entidades e Relacionamentos(DER), a figura 18 ilustra o DER utilizado neste projeto.

Figura 18 Diagrama de Entidades e Relacionamentos.

5.3 Diagrama de classes

Um diagrama de classes representa a estrutura e relaes das classes que compem um sistema orientado a objetos. Neste diagrama podem-se encontrar informaes sobre mtodos, atributos e funes referentes s classes, a figura 19 ilustra o diagrama de classes do projeto.

Figura 19 Diagrama de Classe.

54

5.4 Diagrama de navegabilidade.

O diagrama de navegao mostra como os usurios navegaro atravs do site, este diagrama ilustra a seqncia das pginas em forma de rvore e os links existentes entre elas, a figura 20 representa o diagrama de navegabilidade do projeto.

Figura 20 Diagrama de Navegabilidade.

5.5 Implementao do cdigo JSP

5.5.1 Fazer login no sistema

O primeiro cdigo a ser implementado o cdigo da interface efetuar login (figura 21). A figura 22 ilustra o cdigo que implementa esta interface. E a figura 23 ilustra o diagrama de seqncia ao efetuar o login.

55

Figura 21 Interface Efetuar login.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body> <center><b>Para logar-se, informe seu login e senha:</b></center><br/><br /> <form name="Login" method="post" action="Login.jsp"> <table width="20%" border="1" align="center"> <tr> <td colspan="2"> <div align="center"><b>Login</b></div> </td> </tr> <tr> <td width="8%">Email</td> <td width="92%"> <input type="text" name="email" size="50" maxlength="50"> </td> </tr> <tr> <td width="8%">Senha</td> <td width="92%"> <input type="password" name="senha" size="10" maxlength="10"> </td> </tr> </table> <p align="center"> <input type="submit" name="Login" value="Login"> <input type="reset" name="Limpar" value="Limpar"> </p> </form> <p align="center"><a href="Cadastro.jsp" target="_parent">Usuario nao cadastrado</a></p> </body> </html>

Figura 22 Cdigo Interface Login.

56

Figura 23 Diagrama de seqncia Efetuar Login.

O sistema solicita as credencias necessarias para efetuar o login, e-mail e a senha. Caso seja o primeiro acesso, o usurio deve acessar o link Usurio no cadastrado, que direciona para a pgina de cadastro de cliente (figura 25), permitindo o usurio cadastrar-se ao sistema. A figura 24 implemeta o cdigo que faz a autenticao do usurio, quando o mesmo efetua o login.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.sql.*"%> <%@ page errorPage="Erro.jsp" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body> <%//Recuperendo o email e a senha digitada String email = request.getParameter("email"); String senha = request.getParameter("senha"); //Estabelecendo a conexo com o banco de dados Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String dsn = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Rafael/Monografia/Distribuidora/rbdist.mdb"; Connection ligacao = DriverManager.getConnection(dsn,"adm","1234"); //Confirmando se o usurio est cadastrado e se os dados foram digitados corretamente try { PreparedStatement pstmt = ligacao.prepareStatement(" select senha from Cliente where email = ?"); pstmt.setString(1, email); ResultSet rs = pstmt.executeQuery(); if ( !rs.next() ) { String msg = "Login invlido"; throw new Exception(msg); } else { String senhaBD = rs.getString("senha");

57
if ( !senha.equals(senhaBD) ) { String msg = "Senha invlida"; throw new Exception(msg); } else { //Colocando o email na sesso session.setAttribute("email", email); } } } catch (Exception e) { throw new Exception(e.getMessage()); } //Caso o login esteja correto, redireciona pagina de Produtos response.sendRedirect("Produto.jsp"); %> </body> </html>

Figura 24 Cdigo efetuar login.

No cdigo descrito pela figura 24, o sistema recupera as informaes fornecidas pelo usurio e estabelece a conexo com o banco de dados para que seja feita a confirmao dos dados. acessada a tabela cliente em busca do e-mail informado, no encontrando exibe a mensagem de login invlido; caso o e-mail seja vlido, o sistema parte para a confirmao da senha. Que consiste em comparar a senha informada com a senha cadastrada, e se forem diferentes, o usurio informado que a senha est invlida; Caso contrrio, o sistema inicia uma sesso utilizando o atributo e-mail e direciona o usurio pgina de produtos (figura 29).

5.5.2 Cadastrar novo cliente.

A figura 25 representa a interface cadastro de cliente.

Figura 25 Interface cadastrar usurio.

58

A figura 26 ilustra o cdigo que implementa a interface de cadastro de cliente.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body bgcolor="#FFFFFF"> <div align="center"><b>Cadastro de Cliente</b><br> </div> <form method="post" action="CadastroCliente.jsp"> <table width="70%" border="1" align="center"> <tr> <td width="16%"><b>Email</td> <td width="50%"> <input type="text" name="email" size="50" maxlength="50">(*) </td> </tr> <tr> <td width="16%"><b>Nome</td> <td width="50%"> <input type="text" name="nome" size="50" maxlength="50">(*) </td> </tr> <tr> <td width="16%"><b>Rua</td> <td width="50%"> <input type="text" name="rua" size="50" maxlength="50">(*) </td> </tr> <tr> <td width="16%"><b>Bairro</td> <td width="50%"> <input type="text" name="bairro" size="50" maxlength="50">(*) </td> </tr> <tr> <td width="16%"><b>Nmero</td> <td width="50%"> <input type="text" name="numero" size="5" maxlength="5">(*) </td> </tr> <tr> <td width="16%"><b>Complemento</td> <td width="50%"> <input type="text" name="complemento" size="50" maxlength="50"> </td> </tr> <tr> <td width="16%"><b>CEP</td> <td width="50%"> <input type="text" name="cep" size="8" maxlength="8"> </td> </tr> <tr> <td width="16%"><b>Telefone</td> <td width="50%"> <input type="text" name="telefone" size="20" maxlength="20"> </td> </tr> <tr> <td width="16%"><b>Senha</td> <td width="50%"> <input type="password" name="senha" size="10" maxlength="10">(*) </td> </tr> <tr> <td width="16%"><b>Confirmao de Senha</td> <td width="50%"> <input type="password" name="ConfSenha" size="10" maxlength="10">(*) </td> </tr> <tr>

59
<td align="center" colspan="2"><b>(*) Campos obrigatrios</td> </tr> </table> <p align="center"> <input type="submit" name="Gravar" value="Gravar"> <input type="reset" name="Limpar" value="Limpar"> </p> </form> </body> </html>

Figura 26 - Cdigo Interface Cadastro Cliente.

Na figura 26 o sistema solicita todas as informaes necessrias para efetuar o cadastro de novo cliente. Na opo Gravar, o sistema grava as informaes no banco de dados, na opo Limpar, o sistema apaga todos os dados digitados nos campos. Na figura 27 segue o cdigo que implementa opo Gravar e a figura 28 exibe o diagrama de seqncia cadastar cliente.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page errorPage="Erro.jsp" %> <%@ page import="java.sql.*" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body> <% /* Obtendo os campos do formulrio */ String email = request.getParameter("email"); String nome = request.getParameter("nome"); String rua = request.getParameter("rua"); String bairro = request.getParameter("bairro"); String numero = request.getParameter("numero"); String complemento = request.getParameter("complemento"); String cep = request.getParameter("cep"); String senha = request.getParameter("senha"); String confSenha = request.getParameter("ConfSenha"); /* Confirmando os campos obrigatrios */ if ( email.trim().equals("") || nome.trim().equals("") || rua.trim().equals("") || bairro.trim().equals("") || numero.trim().equals("") || senha.trim().equals("") || confSenha.trim().equals("") ) { String msg = "Os campos marcados com (*) so obrigatrios."; throw new Exception(msg); } /*confirmando se a senha igual a confirmao */ if ( !senha.equals(confSenha) ) { String msg = "Senha diferente da Confirmao"; throw new Exception(msg); else { //Colocando o email na sesso session.setAttribute("email", email); } /* Inserindo o novo cliente no banco de dados */ try { /* Conexo com banco de dados */ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String dsn = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Rafael/Monografia/Distribuidora/rbdist.mdb"; Connection ligacao = DriverManager.getConnection(dsn,"adm","1234"); /* Obtendo um PreparedStatement preenchido com o codigo de inserir cliente */

60
PreparedStatement ps = ligacao.prepareStatement(" insert into Cliente (email,nome,rua,bairro,numero,complemento,cep,senha)values(?,?,?,?,?,?,?,?)"); /* Setando os atributos do PreparedStatement */ ps.setString(1, email); ps.setString(2, nome); ps.setString(3, rua); ps.setString(4, bairro); ps.setString(5, numero); ps.setString(6, complemento); ps.setString(7, cep); ps.setString(8, senha); /* Executa o comando de atualizao do PreparedStatement */ ps.executeUpdate();} catch (SQLException e) { String msg = e.getMessage() + " : ErrorCode = " + e.getErrorCode(); throw new Exception(msg);} catch (Exception e) { String msg = e.getMessage(); throw new Exception(msg);} //Caso o cadastro esteja preenchido corretamente, redireciona pagina de Produtos response.sendRedirect("Produto.jsp"); %> </body> </html>

Figura 27 Cdigo Cadastrar Cliente.

Figura 28 Diagrama de Seqncia Cadastrar Cliente.

Com o cdigo descrito na figura 27, o sistema recupera todas as informaes solicitadas para o cadastramento de novo cliente, validando duas opes: campos obrigatrios digitados corretamente e senha digitada diferente da confirmada. Com os dados informados corretamente, o sistema inicia a sesso utilizando o atributo e-mail e estabelece conexo com o banco de dados. Aps a conexo, o sistema salva todos os dados informados na entidade cliente e direciona o usurio para pgina de produtos (figura 29).

61

5.5.3 Fazer Pedido.

A figura 29 ilustra a interface que representa a lista de produtos disponveis para compra.

Figura 29 Interface Lista de Produtos.

Na figura 30, o sistema estabalece a conexo com o banco de dados e exibe uma lista dos atributos contidos na entidade produtos. Na lista de produtos venda, o sistema solicita qual(is) produto(s) e quantidade o usurio deseja comprar. Com o(s) produto(s) e quantidade(s) selecionado(s), o usurio tem a opo de limpar produtos selecionados e adicionar produtos ao carrinho.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.sql.*" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body> <p align="center"><b>Lista de Produtos</b></p> <%//Instanciando o objeto para acessar o banco de dados Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String dsn = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Rafael/Monografia/Distribuidora/rbdist.mdb"; Connection ligacao = DriverManager.getConnection(dsn,"adm","1234"); //Anulando o ResultSet e Statement ResultSet rset= null; Statement stmt=null; //Criando um Statement stmt=ligacao.createStatement(); //Executando Statement preenchido com o codigo selecionar produto rset=stmt.executeQuery("SELECT * FROM PRODUTO;"); %> <form name="produtos" method="post" action="AdicionarCarrinho.jsp">

62
<table width="90%" border="1" align="center"> <tr> <td width="8%"><div align="center">Comprar</div></td> <td><div align="center">Descrio</div></td> <td width="8%"><div align="center">Preo</div></td> <td width="10%"><div align="center">Quantidade</div></td> </tr> <% //Listando todos os produtos do banco de dados while ( rset.next() ) { //Buscando os codigos, descricoes e precos dos produtos String codigo = rset.getString("codigo"); String descricao = rset.getString("descricao"); String preco = rset.getString("preco"); %> <tr> <td align="center"> <input type="checkbox" name="comprar_<%=codigo%>" value="Sim"> </td> <td> <%=descricao%> </td> <td><div align="center"><%=preco%></div></td> <td align="center"> <input type="text" name="quantidade_<%=codigo%>" size="1" maxlength="3" value="1"> </td> </tr> <% } %> </table> <p> <input type="submit" value="Adicionar ao Carrinho" name="Submit"> <input type="reset" name="Limpar" value="Limpar"> </p> <%//Fechando e anulando o ResultsSet e Statemente rset.close(); rset=null; stmt.close();stmt=null; //Cancelando a conexao com o banco ligacao.close(); %> </form> </body> </html>

Figura 30 Cdigo Interface Lista Produto.

A figura 31 implementa o cdigo que adiciona produtos ao carrinho, e a figura 32 ilustra o diagrama de seqncia adicionar carrinho.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.util.Enumeration" %> <%@ page import="java.util.Hashtable" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body> <%//Buscando o carrinho da sessao Hashtable carrinho = (Hashtable) session.getAttribute("carrinho"); //Se carrinho for igual a vazio, busca novo carrinho if ( carrinho == null ) { carrinho = new Hashtable(); } //Verificando os Produtos selecionados e salvando o codigo e quantidade no carrinho Enumeration e = request.getParameterNames(); while ( e.hasMoreElements() ) { String parameterName = (String) e.nextElement(); if ( parameterName.startsWith("comprar") ) { int pos_ = parameterName.indexOf("_"); String codigo = parameterName.substring(pos_ + 1); String quantidade = request.getParameter("quantidade_" + codigo);

63
carrinho.put(codigo, quantidade); }} //Colocando o atual carrinho na sessao session.setAttribute("carrinho",carrinho); //Redirecionado pgina do carrinho de compras response.sendRedirect("Carrinho.jsp"); %> </body> </html>

Figura 31 Cdigo Adicionar Carrinho.jsp.

Figura 32 Diagrama de seqncia Adicionar Carrinho.

Na figura 31, o sistema busca o carrinho da sesso (sesso iniciada pelo atributo email), caso o carrinho esteja vazio, o sistema fornece um novo carrinho ao usurio. Com o carrinho fornecido, o sistema percorre todos os produtos da lista e adiciona ao carrinho todos os produtos selecionados e quantidade desejadas, feito isto o sistema coloca o carrinho na sesso e direciona o usurio uma pgina que permite visualizar os produtos contidos no carrinho (Figura 33).

64

Figura 33 Interface Visualizar Carrinho.

A figura 34 ilustra o cdigo que implementa a interface visualizar carrinho, e a figura 35 ilustra o diagrama de seqncia visualizar carrinho.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page errorPage="Erro.jsp" %> <%@page import="java.util.*" %> <%@page import="java.sql.*" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body> <p align="center"><b>Carrinho de Compras</b></p> <br> <table width="80%" border="1" align="center"> <tr> <td><div align="center"><b>Produto</b></div></td> <td><div align="center"><b>Preo</b></div></td> <td><div align="center"><b>Quantidade</b></div></td> <td><div align="center"><b>Remover</b></div></td> </tr> <%//Acessando o banco de dados Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String dsn = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Rafael/Monografia/Distribuidora/rbdist.mdb"; Connection ligacao = DriverManager.getConnection(dsn,"adm","1234"); //Obtendo um PreparedStatement preenchido com o codigo sql seleo de produtos PreparedStatement pstmt = ligacao.prepareStatement("SELECT * FROM PRODUTO where codigo = ?;"); // Obtendo o carrinho de compras da sesso Hashtable carrinho = (Hashtable) session.getAttribute("carrinho"); //Casso o carrinho exista e possua valores if ( carrinho != null && !carrinho.isEmpty() ) { //Obtendo todos os cdigos de produtos do carrinho Enumeration codigos = carrinho.keys(); // Passando por cada cdigo while ( codigos.hasMoreElements() ) { //Obtendo cada cdigo String codigo = (String) codigos.nextElement(); //Setando o cdigo no PreparedStatement pstmt.setString(+ 1, codigo); //Executando a consulta do PreparedStatement ResultSet rs = pstmt.executeQuery(); //Verificando se houve retorno if ( rs.next() ) { //Obtendo a descrio e o preo do produto String descricao = rs.getString("descricao"); String preco = rs.getString("preco"); String quantidade = (String) carrinho.get(codigo); %> <tr>

65
<td> <div align="center"><%=descricao%></div> </td> <td> <div align="center">R$<%=preco%></div></td> <td> <div align="center"><%=quantidade%></div></td> <td><div align="center"> <a href="RemoverCarrinho.jsp?produto=<%=codigo%>">Remover</a></div> </td></tr> <%} } } %></table> <p align="center"><a href="FecharPedido.jsp">Fechar</a></p> </body> </html>

Figura 34 Cdigo Interface visualizar Carrinho.

Figura 35 Diagrama de Seqncia Visualizar Carrinho.

Com o cdigo ilustrado pela figura 34, o sistema realiza a conexo com o banco de dados, obtm o carrinho de compras da sesso e lista todos os produtos contidos no carrinho, dando a opo do usurio de remover algum determinado produto ou finalizar o pedido de compra. A figura 36, descreve o cdigo responsvel por executar a ao de remoo de um determinado produto do carrinho de compras.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="java.util.Hashtable" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <%//Obtendo o cdigo do produto String codigo = request.getParameter("produto"); //Obtendo o carrinho da sesso Hashtable carrinho = (Hashtable) session.getAttribute("carrinho");

66
//Removendo o cdigo do produto do carrinho carrinho.remove(codigo); //Redirecionando para o Carrinho.jsp response.sendRedirect("Carrinho.jsp"); %> </body> </html>

Figura 36 Cdigo Remover Carrinho.

Com o cdigo implementado na figura 36, o sistema busca o carrinho da sesso e atravs do cdigo do produto faz a remoo do mesmo, aps realizado a remoo, o sistema direciona o usurio pgina de visualizao do carrinho de compras. A figura 37 ilustra o cdigo responsvel pelo fechamento do pedido de compras e a figua 38 exibe o diagrama de seqncia executada ao fechar o pedido.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page errorPage="Erro.jsp" %> <%@ page import="java.util.*" %> <%@ page import="java.sql.*" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body> <% //Criando um objeto Timestamp com a hora atual Timestamp dataPedido = new Timestamp(System.currentTimeMillis()); //Obtendo o email da sesso. String email = (String) session.getAttribute("email"); //Obtendo o carrinho de compras da sesso. Hashtable carrinho = (Hashtable) session.getAttribute("carrinho"); //Verificando se o email estava na sesso if ( email == null ) { String msg = "Para fechar o pedido necessrio efetuar Login"; throw new Exception(msg);} //Verificando se o carrinho estava na sesso if ( carrinho == null ) { String msg = "Nenhum produto foi inserido no carrinho"; throw new Exception(msg);} //Acessando o banco de dados try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String dsn = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Rafael/Monografia/Distribuidora/rbdist.mdb"; Connection ligacao = DriverManager.getConnection(dsn,"1234","1234"); //Gravando o pedido //Obtendo um PreparedStatement para inserir em Pedido PreparedStatement ps = ligacao.prepareStatement("insert into Pedido (data,email)values(?,?)"); //Setando os parmetros do PreparedStatement ps.setTimestamp(1, dataPedido); ps.setString(2, email); //Executando o comando de atualizao do PreparedStatement ps.executeUpdate(); //Gravando os itens do pedido // Obtendo um PreparedStatement para inserir em PedidoProduto PreparedStatement insertPedidoProduto = ligacao.prepareStatement("insert into PedidoProduto(email,dataPedido,codigoProduto,Preco,Quantidade)values(?,?,?,?,?)"); //Obtendo um PreparedStatement para pesquisar em Produto PreparedStatement selectProduto = ligacao.prepareStatement("select * from produto where codigo = ?"); //Obtendo todos os cdigos do carrinho de compras

67
Enumeration codigosProdutos = carrinho.keys(); //Passando por cada cdigo while ( codigosProdutos.hasMoreElements() ) { //Obtendo o codigo e quantidade do carrinho de compra String codigo = (String) codigosProdutos.nextElement(); String quantidade = (String) carrinho.get(codigo); //Setando o codigo selectProduto.setString(1, codigo); //Executando a pesquisa do produto ResultSet rs = selectProduto.executeQuery(); if ( rs.next() ) { //Obtendo o preco do produto String preco = rs.getString("preco"); //Setando o parmetros email e data do PreparedStatement insertPedidoProduto.setString(1, email); insertPedidoProduto.setTimestamp(2, dataPedido); insertPedidoProduto.setString(3, codigo); insertPedidoProduto.setString(4, preco); insertPedidoProduto.setString(5, quantidade); //Inserindo em PedidoProduto insertPedidoProduto.executeUpdate(); } } //Removendo o carrinho da sesso session.removeAttribute("carrinho"); } catch (Exception e) { String msg = "Erro Fechando Pedido : " + e.getMessage(); throw new Exception(msg);} //Redirecionando a pagina de confirmacao de entrega response.sendRedirect("ConfirmarEntrega.jsp"); %> </body> </html>

Figura 37 Cdigo Fechar Pedido.

Figura 38 Diagrama de Seqncia Fechar Pedido.

No cdigo descrito pela figura 37, o sistema cria um objeto com a data atual, busca o e-mail e o carrinho da sesso verificando se os mesmos esto vazios, caso no estejam vazios, o sistema estabelece conexo com o banco de dados, armazena o e-mail da sesso e a

68

data atual na entidade Pedido, posteriormente o sistema busca os produtos e quantidades contidos no carrinho da sesso, para que sejam armazenados na entidade Pedido Produto. Gravando os dados: e-mail da sesso, data atual, cdigo do produto, preo e quantidade na entidade Pedido Produto, o pedido de compra fechado. Feito isto o sistema remove o carrinho da sesso e direciona o usurio pgina de visualizao do endereo de entrega (Figura 39). A figura 39 representa a interface confirmar endereo.

Figura 39 Interface Visualizar Endereo.


<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.sql.*" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body> <% //Buscando o email da sessao. String email = (String) session.getAttribute("email"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String dsn = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/eclipse/Distribuidora/rbdist.mdb"; Connection ligacao = DriverManager.getConnection(dsn,"1234","1234"); Statement stmt=ligacao.createStatement(); String sql ="SELECT * FROM cliente WHERE email='"+ email + "'"; ResultSet rset=stmt.executeQuery(sql); while ( rset.next() ) { String rua = rset.getString("rua"); String bairro = rset.getString("bairro"); String numero = rset.getString("numero"); String complemento = rset.getString("complemento"); String cep = rset.getString("cep"); %> <h3 align="center">Confirmao do Endereo de Entrega</h3> <h3 align="center">Endereo de Entrega</h3> <table width=35%" border="1" align="center">

69
<tr> <td width="16%"><b>Rua:</b></td> <td width="84%"><%=rua %></td> <tr> <td width="16%"><b>Numero</b></td> <td width="84%"><%=numero %></td></tr> <tr> <td width="16%"><b>Bairro:</b></td> <td width="84%"><%=bairro%></td></tr> <tr> <td width="16%"><b>Complemento:</b></td> <td width="84%"><%=complemento%></td></tr> <tr> <td width="16%"><b>Cep:</b></td> <td width="84%"><%=cep %></td> </tr> <% } %> </table> <br> <table width=25%" border="0" align="center"> <tr> <td width="84%"><a href="CadastroEndereco.jsp" target="_parent">Alterar</a></td> <td width="15"><a href="FormaPagamento.jsp" target="_parent" align="center">Confirmar</a></td> <tr> </table> </body> </html>

Figura 40 Cdigo Interface Visualizar Endereo.

A interface visualizar endereo, permite o usurio visualizar o endereo cadastrado anteriormente. Atravs do cdigo descrito pela figura 40, o sistema inicia a pgina obtendo o e-mail da sesso e estabelece a conexo com o banco de dados. Com o e-mail da sesso, o sistema exibe os dados referentes ao endereo do usurio e disponibiliza a opo de alterar ou confirmar este endereo. Caso seja necessrio alterar o endereo de entrega, o sistema direciona o usurio interface cadastro de novo endereo (Figura 41), se o usurio confirmar o endereo, o sistema direciona o mesmo para a pgina que exibe a forma de pagamento (figura 45).

Figura 41 Interface Alterar Endereo.

70

A figura 41 representa a interface alterar endereo de entrega.


<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body bgcolor="#FFFFFF"> <div align="center"><b>Cadastrar Novo Endereo</b><br> </div> <form method="post" action="AlterarEndereco.jsp"> <table width=25%" border="1" align="center"> <tr> <td width="16%">Rua/Av</td> <td width="25%"><input type="text" name="rua" size="20" maxlength="20"> </td></tr> <tr> <td width="16%">Bairro</td> <td width="25"><input type="text" name="bairro" size="20" maxlength="20"> </td></tr> <tr> <td width="16%">Nmero</td> <td width="25%"><input type="text" name="numero" size="5" maxlength="5"> </td></tr> <tr> <td width="16%">Complemento</td> <td width="25%"><input type="text" name="complemento" size="50" maxlength="50"> </td></tr> <tr> <td width="16%">CEP</td> <td width="25%"><input type="text" name="cep" size="8" maxlength="8"> </td> </tr> </table> <p align="center"> <input type="submit" name="Alterar" value="Alterar"> <input type="reset" name="Limpar" value="Limpar"> </p> </form> </body> </html>

Figura 42 Cdigo Interface Cadastrar Endereo.

A figura 42 ilustra o cdigo que implementa a interface alterar endereo de entrega, atravs do cdigo o sistema solicita ao usurio os novos dados do endereo de entrega. Com os dados informados o sistema e permite o usurio gravar o novo endereo ou limpar os dados digitados. Na figura 43 segue o cdigo que implementa a opo de gravar o novo endereo.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page errorPage="Erro.jsp" %> <%@ page import="java.sql.*" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title>

71
</head> <body> <% String email = (String) session.getAttribute("email"); /* Obtendo os campos do formulrio */ String rua = request.getParameter("rua"); String bairro = request.getParameter("bairro"); String numero = request.getParameter("numero"); String complemento = request.getParameter("complemento"); String cep = request.getParameter("cep"); /* Verificando os campos obrigaatrios */ if (rua.trim().equals("") || bairro.trim().equals("") || numero.trim().equals("")) { String msg = "Os campos marcados com (*) so obrigatrios."; throw new Exception(msg); } /* Inserindo o novo cliente no banco de dados */ try { /* Instanciando o objeto para acesso ao banco de dados */ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String dsn = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/eclipse/Distribuidora/rbdist.mdb"; Connection ligacao = DriverManager.getConnection(dsn,"1234","1234"); /* Obtendo um PreparedStatement preenchido com o template "ALTERA ENDERECO" */ PreparedStatement stmt=ligacao.prepareStatement("UPDATE cliente SET rua =?,bairro =?,numero =?,complemento =?, cep =? where email like ?"); stmt.setString(1, rua); stmt.setString(2, bairro); stmt.setString(3, numero); stmt.setString(4, complemento); stmt.setString(5, cep); stmt.setString(6, "%"+email+"%"); stmt.executeUpdate(); } catch (SQLException e) { String msg = e.getMessage() + " : ErrorCode = " + e.getErrorCode(); throw new Exception(msg); } catch (Exception e) { String msg = e.getMessage(); throw new Exception(msg); } /* Redirecionando pgina de Forma de Pagamento */ response.sendRedirect("ConfirmarEntrega.jsp"); %> </body> </html>

Figura 43 Cdigo Alterar Endereo.

Com o cdigo descrito pela figura 43, o sistema inicialmente busca o e-mail da sesso e os dados informados pelo usurio. Com os dados obtidos, o sistema faz a confirmao do dados obrigatrios, se todos estiverem preenchidos corretamente, o sistema estabelece a conexo com o banco e armazena o novo endereo na entidade cliente. Feito isto, o usurio redirecionado a interface visualizar endereo de entrega (Figura XXX) para que confirme novamente o endereo. A figura 44 ilustra o diagrama de seqncia executada na confirmao do endereo de entrega.

72

Figura 44 Diagrama de seqncia Confirmar Entrega.

Com o endereo atualizado e confirmado, o sistema direciona o usurio pgina que exibe a forma de pagamento (Figura 45).

Figura 45 Interface Forma Pagamento.


<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%@ page import="java.sql.*" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body> <% String email = (String) session.getAttribute("email"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String dsn = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/eclipse/Distribuidora/rbdist.mdb";

73
Connection ligacao = DriverManager.getConnection(dsn,"1234","1234"); Statement stmt=ligacao.createStatement(); String sql ="SELECT * FROM PedidoProduto WHERE email='"+ email + "'"; ResultSet rset=stmt.executeQuery(sql); while ( rset.next() ) { String codigo = rset.getString("codigo"); String preco = rset.getString("preco"); %> <table width=25%" border="0" align="center"> <tr> <td width="50%"><b>Nmero do Pedido:</b></td> <td width="19%"><b><%=codigo%></b></td> <td width="50%"><b>Valor a Pagar:</b></td> <td width="19%"><b><%=preco%></b></td> </tr> <% } %> </table> <h3>Forma de Pagamento</h3><br> <p>O pagamento e feito somente atravs de Deposito em Conta Corrente, transferncia bancria ou DOC. No caso de DOC, o titular RB Distribuidora Ltda e CNPJ 04.568.789/0001-98</p> <table width=25%" border="0"> <tr> <td width="19%">Banco</td> <td width="26%">Agncia</td> <td width="50%">Conta Corrente</td> </tr> <tr> <td>786</td> <td>4159</td> <td>61451-0</td> </tr> </table> <p>Aps efetuar o pagamento, favor enviar um e-mail com o comprovante de pagamento e o nmero do pedido para o endereo: rbdistribuidora@rbdist.com.br</p> <br> <p align="center"><a href="Sair.jsp" target="_parent">Sair</a></p> </body> </html>

Figura 46 Cdigo Interface Forma de Pagamento.

No cdigo descrito pela figura 46, o sistema inicialmente busca o email da sesso e estabelece a conexo com o banco de dados. Com o e-mail da sesso obtido, o sistema exibe o nmero do pedido efetuado pelo usurio, e estabelece a forma de pagamento, no final da pgina o sistema disponibiliza ao usurio a opo de sair. Na figura 47, o sistema destri a sesso iniciada anteriormente e direciona o usurio pgina de login, finalizando o pedido de compras com sucesso.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Distribuidora Bebidas</title> </head> <body> <%/* Invalidando a sesso */ session.invalidate();

74
/* Redirecionando para o Login */ response.sendRedirect("Principal.jsp"); %> </body> </html>

Figura 47 Cdigo Sair.

75

6 CONCLUSO

6.1 Consideraes Finais

Este trabalho apresentou um estudo sobre o desenvolvimento de sites dinmicos, tendo como base a tecnologia JSP. Procurando ampliar a rea de vendas com baixo custo ao prprietario de uma empresa do ramo atacadista, foram realizados estudos para definir que a melhor forma seria a criao de um site dinmico, em que qualquer usurio da Internet pode ser cliente. Para obter produtividade e ganho de tempo no desenvolvimento do sistema web, foi usada a tecnologia JSP. Esta tecnologia baseada na linguagem Java, que oferece ao desenvolvedor uma infra-estrutura de APIs e classes integrantes da linguagem, facilitando no desenvolvimento de uma aplicao. Os benefcios no uso da tecnologia JSP so muitos. Com esta tecnologia, as aplicaes podem ser executadas em qualquer plataforma do mercado, os aplicativos Servlets permanecem carregados na memria do servidor, o que permite um fluxo de informaes mais eficiente. A tecnologia JSP de distribuio livre, tornando-se um fator fundamental na deciso de qual linguagem utilizar. Para que fosse possvel a criao de um sistema simples de comrcio eletrnico, foram elaboradas algumas funcionalidades importantes relativas ao processo de vendas. Por intermdio destas funcionalidades foi elaborado um projeto para a construo de um sistema web. Para o desenvolver o projeto utilizando a tecnologia JSP, exigiu conhecimentos bsicos sobre as linguagens HTML, JAVA, alm de noes de banco de dados. O desenvolvimento deste projeto foi realizado de forma simples em relao as diversidades que

76

a tecnologia JSP oferece, mas de forma minuciosa em relao as funcionalidades de um processo de vendas. Com a implantao do site, os produtos da empresa podem ser vendidos para qualquer usurio da Internet, levando a uma espectativa de aumento no faturamento da empresa na ordem de 40%. Com isso, pode-se concluir que o sistema web contribuir com a ampliao da rea de vendas, podendo aumentar a lucratividade da empresa.

6.2 Proposta de trabalhos futuros

Futuramente, para melhorar ainda mais o sistemas web aqui desenvolvido, proposto: - Incluir neste projeto o controle do pagamento de contas e a emisso de boleto bancrio via web site. - Incluir o tratamento de cartes de crdito como forma de pagamento em uma loja virtual, abordando caractersticas de segurana. - Desenvolver outros projetos que utilizem aspectos de tecnologia JSP no

contemplados neste estudo, tais como uso de filtros, beans, arquitetura MVC e uso de frameworks, tais como JSF, spring, struts e hibernate. - Fazer um estudo comparativo entre tecnologia JAVA e .net utilizadas no desenvolvimento para web.

77

REFERNCIAS BIBLIOGRFICAS

CAELUM. Java para desenvolvimento web. Disponvel <http://www.caelum.com.br/caelum/curso-21.jsp> Acessado em 22 ago. 2006.

em

DE SOUZA, A. J; HEIDER, R. Desenvolvimento web bsico.Disponvel em <https://javarn.dev.java.net/slides/WebBasico.pdf > Acessado em 21 nov. 2006. TEMPLE, A; DE MELLO, R. F; CALEGARI, D. T; SCHIEZARO, M. JSP, Servlets e J2EE. 2004. Disponvel em <http://143.107.183.115/mello/outros/livro-v03-figuras.pdf> Acessado em 24 jul. 2004. GONALVES, F. C. Introduo aplicao web com Java. Disponvel em <http:// www.javanoroeste.com.br/2006/cursointroweb/minicurso_java_web.html > Acessado em 23 dez. 2006. SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistema de banco de dados. 3 ed. So Paulo: Makron Books, 1999. 788 p. DE OLIVEIRA, R. A. Apostila bsica de JSP, Construo de sites dinmicos. Disponvel em <http://www.aro.eti.br> Acessado em 13 jul. 2006. GOMES, R. P. Eclipse Quem s tu? . Disponvel em <http://www.guj.com.br/content/articles/ecplise/eclipse_quem_es_tu.pdf> Acessado em 22 jun. 2006. PEREIRA, A. Java para web. Disponvel em <http://www.dcc.ufrj.br/~austeclynio/> Acessado em 26 mar. 2007. NETO, R. H. Curso de JSP. 2002. Disponvel <http://www.rootlinux.com.br/documentos/downloads/> Acessado em 13 nov. 2006. em

BRAZ, C. C. M. Introduo a Java Server Pages. Disponvel em <http://www.efetiva.net/documents/Tutorial%20JSP%20-%20Completo.pdf> Acessado em 24 mai. 2006. GUIMARES, G. F. Eclipse com Tomcat <http://www.guj.com.br/> Acessado em 03 jul 2006. e Struts. 2002. Disponvel em

D VILA, M. Tutorial Tomcat Instalao e Configurao Bsica. 2003. Disponvel em < http://paginas.terra.com.br/informatica/ednilsonrossi/tutoriais/tomcat.html> Acessado em 20 jun 2006