Você está na página 1de 15

AJ5 Desenvolvimento de aplicativos Web com JSP e Servlet

Arquitetura Distribuda
1.1 J2EE e Arquitetura Distribuda 1.2 Plataforma J2EE 1.2.1 Servidores / Containers de Componentes 1.3 Anlise de arquiteturas 1.3.1 Arquitetura em duas camadas: cliente / servidor 1.3.2 Arquitetura em trs camadas: baseada na Web com cliente magro 1.3.3 Arquitetura em trs camadas: utilizando EJB 1.3.4 Arquitetura em n-Camadas: baseada na Web, com EJB

4
4 5 6 7 7 8 9 10

Desenvolvimento para Web


2.1 2.1.1 2.2 2.2.1 2.2.2 2.3 2.4 2.4.1 2.4.2 Container Web Aplicaes Web Tomcat Instalao Administrao Estrutura de diretrios tipicamente utilizados em projetos web Ant Instalao Deployment de aplicaes

11
11 11 12 12 13 15 18 19 20

Requests e Responses
3.1 3.2 3.3 3.4 HTTP GET vs. HTTP POST HttpServletResponse HttpServletRequest Certificao Sun Certified Web Component Developer (SCWCD)

22
23 24 25 26

Java Servlet
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.7.1 4.7.2 4.8 4.9 4.10 HttpServlet Criando o Servlet OlaMundo Deployment Descriptor Compilando e instalando Servlets Laboratrio Recebendo dados de um HTML Forms Navegao Redirecionamento Encaminhar a request Laboratrio Laboratrio Certificao Sun Certified Web Component Developer (SCWCDP)

27
28 30 31 33 34 36 39 39 40 41 43 44

Recursos avanados
5.1 ServletConfig 5.2 ServletContext 5.2.1 Parmetros de inicializao 5.2.2 Utilizando atributos do ServletContext 5.3 Error Pages 5.3.1 Criando nossa Exception 5.3.2 Servlet que dispara Exception 5.3.3 Mapeamento Deployment Descriptor Copyright 2005 Globalcode The Developers Company, todos os direitos reservados.

45
45 49 49 52 53 54 54 56

ndice Criando a pgina que ser apresentada em caso de erro 5.3.4 5.3.5 Enviando Erros HTTP 5.4 Laboratrio 5.5 Certificao Sun Certified Web Component Developer (SCWCDP) 57 58 60 61

Gerenciamento de Sesso
6.1 HttpSession 6.1.1 Obtendo uma sesso 6.1.2 Atributos da sesso 6.1.3 Invalidando uma HttpSession 6.1.4 Laboratrio 6.2 Certificao Sun Certified Web Component Developer (SCWCDP)

62
63 63 63 64 69 70

Servlet Filter
7.1 7.2 7.3 7.4 javax.servlet.Filter javax.servlet.FilterChain Configurao do Deployment Descriptor Laboratrio

71
72 73 74 75

Java Server Pages


8.1 8.1.1 8.2 8.3 8.4 8.5 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.6.5 8.6.6 8.6.7 8.6.8 8.7 Introduo Como acessar um JSP? Scripts JSP Diretivas JSP Objetos implcitos Laboratrio Standard Actions JavaBeans <jsp:useBean> <jsp:setProperty> <jsp:getProperty> <jsp:param> <jsp:include> <jsp:forward> Laboratrio Certificao Sun Certified Web Component Developer (SCWCDP)

76
76 77 78 82 89 93 96 96 97 100 101 101 102 102 103 104

Custom Tags
9.1 9.2 9.2.1 9.2.2 9.2.3 9.3 9.4 9.5 9.6 9.7 9.8 Introduo TagSupport Definindo tags com atributos O atributo pageContext Exemplo Tag Library Descriptor Diretiva taglib Deploy da aplicao Exemplo Laboratrio Certificao Sun Certified Web Component Developer (SCWCDP)

105
105 106 107 107 108 109 111 112 114 116 117

10 Design

118

Copyright 2005 Globalcode The Developers Company, todos os direitos reservados.

AJ5 Desenvolvimento de aplicativos Web com JSP e Servlet 10.1 10.2 Model View and Controller (M.V.C) Laboratrio 119 120

11 Servios do Container
11.1 Pool de Conexes 11.1.1 Acessando o Data Source atravs de cdigo 11.1.2 Laboratrio

121
121 124 125

12 Apndice
12.1 Apndice I: Servlet Listener 12.2 Apndice II: Exemplos para ilustrao da tcnica 12.2.1 Sample Servlet Multi-proposta 12.2.2 Model View Controller 12.2.3 Large Response 12.2.4 Gerando planilhas Excel 12.3 Apndice III: Resumo API Java Servlet 2.3 12.4 Apendice IV: Documentao das tasks do Ant

126
126 128 128 130 131 132 133 135

Copyright 2005 Globalcode The Developers Company, todos os direitos reservados.

1 Arquitetura Distribuda

1 Arquitetura Distribuda
1.1 J2EE e Arquitetura Distribuda
Como sabemos, Java uma excelente plataforma de desenvolvimento para softwares distribudos, pois nasceu na grande rede. Um projeto, que foi lanado em 1995, no poderia desconsiderar que qualquer aplicativo da nova gerao teria, em caso de sucesso, milhares de acessos por dia. No cenrio tecnolgico atual, vrios componentes participam da arquitetura de um software e cada vez mais eletro-eletrnicos, de uma maneira em geral, tornam-se dispositivos de acesso grande rede. Com isso, cada vez mais, importante considerar uma soluo coorporativa com:

Escalabilidade Um dos "ades" da engenharia de software que pertence nova economia globalizada e conectada. Uma campanha de marketing pode fazer com que uma pequena empresa cresa violentamente do dia para a noite. Se sua soluo no for capaz de acompanhar, o negcio pode ser prejudicado. Portabilidade A portabilidade faz com que no seja necessrio comprar um servidor ou sistema operacional de nenhuma marca especfica para seu software / soluo. Disponibilidade Com uma linguagem e plataforma confiveis, podemos contar com sistemas que rodam simultaneamente em mais de um servidor para preveno de falhas. Sistemas conhecidos como cluster de servidores permitem que aplicativos fiquem distribudos e prova de falha no seu data-center. Performance Quando o assunto computao distribuda, Java tem uma performance muito boa em comparao com outras tecnologias. Podemos dizer, por exemplo, que Fortran mais rpido que Java para resolver um algoritmo complexo isoladamente, mas Java quando distribudo entre servidores no possui concorrente. Baixo custo de manuteno Cdigo bem escrito, objetos bem definidos e documentados, herana, polimorfismo, interfaces da orientao a objeto e outros aspectos tcnicos tornam um software simples de ser mantido no decorrer do tempo, quando bem planejado e escrito em Java. Sabemos que, cada vez mais, os aplicativos tendem a ter um ciclo de vida cada vez mais duradouro na empresa, por isto o custo de manuteno do software se torna cada vez mais importante.

Copyright 2005 Globalcode The Developers Company, todos os direitos reservados.

AJ5 Desenvolvimento de aplicativos Web com JSP e Servlet

1.2 Plataforma J2EE


J2EE um padro de desenvolvimento em camadas que disponibiliza uma srie de servios de infra-estrutura de alto-nvel evitando o desenvolvimento de cdigo complexo, aproximando os desenvolvedores do negcio em si.

A plataforma J2EE composta por: Blueprints Design Guidelines for J2EE desenvolvido por tcnicos altamente capacitados e rene, em documentos e exemplos de cdigo, as melhores prticas de desenvolvimento de aplicao J2EE. J2EE Compatibility Test Suite: Processo formal de teste de compatibilidade de Application Server J2EE garantindo a padronizao entre os servidores de diferentes fabricantes. J2EE Reference Implementation: A plataforma inclui um servidor chamado de R.I. (reference implementation) implementado com 100% das funcionalidades especificadas. a chave para validar aplicaes J2EE. 100% free e com cdigo fonte disponvel. APIs: Todo poder e sucesso do J2SE + suporte para Enterprise JavaBeans, Java Servlets API, Java Server Pages, XML e Messaging.

Podemos dividir J2EE em duas partes: Infra-estrutura de Runtime para hospedagem de aplicaes (servidor de aplicao) Um conjunto de APIs para construo de aplicaes. A infra-estrutura de Runtime composta por uma conjunto de objetos e processos que hospedam aplicaes desenvolvidas com as APIs J2EE (Servlets, JSP, EJBs etc.). Esta infra-estrutura chamada de container. O conjunto de APIs J2EE definida, em sua maioria, por interfaces que podem ser empregadas pelos desenvolvedores das aplicaes corporativas. Tais APIs possuem vnculos com o ncleo (kernel) do servidor que executam tarefas voltadas para o gerenciamento de recursos e infra-estrutura. Podemos dizer que, ao desenvolvermos aplicaes J2EE atravs do uso de APIs disponibilizadas no Java 2 Enterprise Edition (Reference Implementation), elas podem ser executados nos servidores de aplicaes que tenha implementado as especificaes tcnicas dos servidores J2EE. Contamos com as seguintes APIs na plataforma J2EE: JDBC Extension Enterprise JavaBeans (EJB) Java Servlets Java Server Pages Java Message Service Java Transaction API JavaMail Anotaes

1 Arquitetura Distribuda

1.2.1 Servidores / Containers de Componentes


Container so servidores de objetos modernos que oferecem servios e infra-estrutura para a execuo de uma aplicao distribuda. Temos uma diviso de perfil de containers Java e J2EE: Server-side Web container - para objetos dirigidos por HTTP (Servlets e JSP). EJB container - para objetos de negcio server-side. Client-side Applet container - para painis grficos desenvolvidos com AWT/Swing controlados por browser. Application client container - aplicaes stand-alone AWT / Swing, podendo, opcionalmente, ser distribudas por Java Web Start. Um container client-side responsvel pelo ciclo de vida da aplicao, gerenciamento de eventos e outros. J um container server-side gerencia,alm do ciclo de vida de componentes, recursos e meios de acesso. Configuramos no container os recursos que desejamos disponibilizar e nossas aplicaes acessam tais recursos atravs de APIs de servios, como no caso de um pooling de Conexes a Banco de Dados. Na figura abaixo podemos visualizar dois containeres J2EE: Web Container: hospeda Servlets, JSPs (Java Server Pages), arquivos estticos como HTMLs, JavaScript, XML, e pode utilizar qualquer classe Java, como por exemplo, APIs de envio de e-mail ou acesso a banco de dados. EJB Container: hospeda Enterprise JavaBeans (EJB), que por sua vez tambm podem utilizar uma srie de APIs Java, como por exemplo, envio de e-mail e acesso a banco de dados.

Representamos aqui um banco de dados, mas com arquitetura J2EE podemos acessar arquivos, sistemas legados, ERPs, fila de mensagens e qualquer outra fonte de dados.

Copyright 2005 Globalcode The Developers Company, todos os direitos reservados.

AJ5 Desenvolvimento de aplicativos Web com JSP e Servlet

1.3 Anlise de arquiteturas


1.3.1 Arquitetura em duas camadas: cliente / servidor
Arquitetura tpica quando no temos o conceito de servidor intermedirio, na qual temos muitas aplicaes construdas. Exemplos de tecnologias tipicamente utilizadas: Visual Basic com Banco de Dados; Oracle Forms / Report com Oracle Database; Centura / Power Designer com Sybase; Delphi com Banco de Dados; Por ser uma arquitetura que centraliza todo o processamento crtico no banco de dados, acaba sendo limitado para integrao, alm de tornar o cdigo muito complexo devido linguagem SQL.

Anotaes

1 Arquitetura Distribuda

1.3.2 Arquitetura em trs camadas: baseada na Web com cliente magro


Este padro permite uma melhor distribuio de processamento e tambm usa um cliente mais enxuto para acessar a aplicao. Esta arquitetura o foco do treinamento deste mdulo e talvez uma das arquiteturas mais procuradas e utilizadas para desenvolvimento para Internet. Devemos sempre tomar cuidado com o modismo de utilizar browser / HTML como cliente, pois o HTML muitas vezes restringe ou dificulta o desenvolvimento de uma boa interface grfica. Quando a soluo for baseada na Web utilizando HTML, sugerimos que tenha sempre um webdesigner na equipe de desenvolvimento. Vale lembrar que podemos ter solues baseadas na Web que utilizam clientes gordos, desta forma a acessibilidade da soluo no fica prejudicada e podemos ter clientes mais especficos. Para isto, podemos utilizar Servlets ou JSPs, gerando XML para clientes Macromedia Flash, Swing ou qualquer outro.

Uma das vantagens que solues baseadas na Web apresentam a segurana, j que permite a utilizao de criptografia nos dados (HTTPS) sem exigir trabalho adicional com o firewall.

Copyright 2005 Globalcode The Developers Company, todos os direitos reservados.

AJ5 Desenvolvimento de aplicativos Web com JSP e Servlet

1.3.3 Arquitetura em trs camadas: utilizando EJB


Esta arquitetura favorece a distribuio das regras de negcio da soluo, alm de facilitar a manuteno do cdigo. Temos clientes que podem ser programados com AWT ou Swing que utilizam objetos remotos em um container EJB. Todo cdigo de acesso a dados (SQL) fica no servidor intermedirio e o objeto se beneficia de diversos servios oferecidos pelo container.

Anotaes

1 Arquitetura Distribuda

1.3.4 Arquitetura em n-Camadas: baseada na Web, com EJB


J2EE tipicamente consistido nas seguintes camadas: Camada Cliente: Browser / HTML, Applets, aplicaes Java (Swing/AWT), Flash e outros. Camada Web: responsvel pela comunicao com a camada de negcios. Geralmente possui lgica de apresentao e formatao de dados. Tipicamente gera HTML ou XML e implementada com Servlets e JSPs. Camada de Negcios: Geralmente a inteligncia da aplicao est nesta camada. Na maioria das ocasies esta camada implementada utilizando EJBs. O container EJB vai prover servios de persistncia, transaes e gerenciamento de ciclo de vida. Camada de Dados ou Integrao: a camada responsvel pela comunicao com os bancos de dados e sistemas legados. A plataforma J2EE simplifica o desenvolvimento de solues corporativas, provendo infra-estrutura e padronizao. Como mostra a figura abaixo, ao trmino de um projeto J2EE temos um conjunto de componentes para apresentao de dados e componentes de regras de negcio reutilizveis, utilizando tanto o container Web quanto o container EJB.

10

Copyright 2005 Globalcode The Developers Company, todos os direitos reservados.

AJ5 Desenvolvimento de aplicativos Web com JSP e Servlet

2 Desenvolvimento para Web


2.1 Container Web
Aplicaes Web J2EE utilizam o conceito de container. O container Web, alm de gerar contedo dinmico atravs da execuo dos JSPs e Servlets, oferece os seguintes servios: Gerenciamento dos recursos utilizados pelos componentes. Exemplo: Conexes com o banco de dados. Gerenciamento do ciclo de vida dos componentes. Gerenciamento de sesses de usurios. Gerenciamento de segurana da aplicao. As duas principais APIs do container Web so: Java Servlets e Java Server Pages. A implementao de referncia de container Web o Tomcat. Observe que h alguns servidores que se denominam compatveis com o J2EE, mas que no passaram pelo teste de Compatibilidade. Em caso de dvidas, pode-se encontrar uma lista dos containers J2EE na seguinte URL http://java.sun.com/j2ee/compatibility_1.3.html

2.1.1 Aplicaes Web


Quando desenvolvemos uma aplicao para um container Web, devemos desenvolver: Componentes Web: Servlets, JSP, JavaBeans etc Deployment Descriptors: arquivos XML que descrevem os componentes desenvolvidos para registro no container.

App(1)

App(2)

App(3)

App(4)

App(n)

Anotaes

11

2 Desenvolvimento para Web Server

2.2 Tomcat
O Tomcat foi originado a partir de um projeto da Sun chamado Java Web Server e foi doado para a Apache Foundation. Versionamento do servidor Tomcat:

Tomcat 3.xx 4.xx 5.xx

Servlet 2.2 2.3 2.4

JSP 1.1 1.2 2.0

Estas APIs possuem versionamento independente, ou seja, no precisam acompanhar o J2EE.

O Tomcat um container Java e vem acompanhado de um servidor Web chamado Coyote, no entanto, em aplicaes corporativas freqentemente necessrio utilizar um servidor Web mais robusto, como o caso do Apache Web Server. Para maiores informaes sobre a configurao do Tomcat com o Apache Web Server, consulte a documentao do Tomcat: http://jakarta.apache.org/tomcat/tomcat-3.2-doc/tomcat-apache-howto.html

2.2.1 Instalao
URL para download: http://jakarta.apache.org Existe uma verso especial para Windows que possui um programa de instalao do Tomcat, mas tambm est disponvel um arquivo .zip que pode ser descompactado em qualquer sistema operacional, sendo este o padro para instal-lo: Configure a varivel de ambiente CATALINA_HOME em seu sistema operacional, atribuindo o nome do diretrio onde o Tomcat foi instalado. Inicializao: Windows: Execute o startup.bat presente no diretrio %CATALINA_HOME%\bin. Linux: Execute o startup.sh no diretrio $CATALINA_HOME/bin, digitando: ./startup.sh Para testar se o Tomcat est funcionando, abra o navegador e coloque o seguinte endereo: http://localhost:8080 Observao: Por padro, o Tomcat vem configurado para trabalhar na porta 8080. Se a pgina inicial do Tomcat aparecer, a instalao do Tomcat foi feita com sucesso.

12

Copyright 2005 Globalcode The Developers Company, todos os direitos reservados.

AJ5 Desenvolvimento de aplicativos Web com JSP e Servlet

2.2.2 Administrao
Tomcat Administration A partir da verso 4.1, o Tomcat tem uma aplicao de administrao http://localhost:8080/admin Para fazer o login nesta aplicao, ser necessrio editar o arquivo tomcat-users.xml que, como veremos mais a frente, contm as regras de segurana. Embora estejamos editando um arquivo XML (o que parece muito inseguro), possvel fazer autenticao no banco de dados ou em servidores de nomes e diretrios. Exemplo: Microsoft Active Directory ou qualquer outro diretrio LDAP.

Tomcat Manager Esta aplicao est disponvel atravs da URL: http://localhost:8080/manager /html Esta aplicao faz o gerenciamento de todas as aplicaes instaladas neste servidor, permitindo que seja possvel iniciar e parar uma aplicao especfica sem a necessidade de reinicializar o servidor inteiro. Tambm ser necessrio adicionar um usurio no arquivo tomcat-users.xml para fazer o login nesta aplicao.

Anotaes

13

2 Desenvolvimento para Web Server tomcat-users.xml Este documento pode ser encontrado em $CATALINA_HOME/conf e nele podemos definir roles para usurios, ou seja, grupos aos quais os usurios pertencem. Cada usurio pode pertencer a um ou mais roles. Enquanto no arquivo de configurao da aplicao configuramos os roles que podem acess-la, como ser visto mais adiante. Neste arquivo estamos indicando que o usurio globalcode com a senha globalcode poder acessar todas as aplicaes que estiverem acessveis para a role admin e manager (que exatamente o caso das aplicaes Tomcat Administration e Tomcat Manager).
1 2 3 4 5 6 7 8 9 10 <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="tomcat"/> <role rolename="manager"/> <role rolename="admin"/> <user username="tomcat" password="tomcat" roles="tomcat,admin,manager"/> <user username="both" password="tomcat" roles="tomcat,role1,manager"/> <user username="role1" password="tomcat" roles="role1"/> <user username="globalcode" password="globalcode" roles="admin,manager"/> </tomcat-users>

14

Copyright 2005 Globalcode The Developers Company, todos os direitos reservados.

AJ5 Desenvolvimento de aplicativos Web com JSP e Servlet

2.3 Estrutura de diretrios tipicamente utilizados em projetos web


Normalmente trabalhamos com, no mnimo, duas estruturas de diretrio: Diretrios de desenvolvimento: Nesta estrutura de diretrios armazenamos o cdigo fonte do projeto e geralmente criamos o projeto na nossa IDE apontando para esta estrutura de diretrios. Diretrios no container Web: Esta estrutura de diretrios normalmente fica localizada dentro do container Web. Armazenamos aqui o cdigo que ser executado, no sendo necessrio deixar os arquivos fontes nestes diretrios.

Diretrios de desenvolvimento A estrutura de desenvolvimento a estrutura que utilizaremos para criar nossos projetos, normalmente fora da estrutura de diretrios do Tomcat ou de qualquer outro servidor de aplicaes. Esta estrutura no obrigatria, mas usual, por isto estaremos utilizando esta estrutura em nossos laboratrios.

Anotaes

15

Você também pode gostar