Contenu connexe
Similaire à Java Web, o Tutorial (20)
Plus de Rildo (@rildosan) Santos (20)
Java Web, o Tutorial
- 1. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010
Java Web
Capacitação
Desenvolver Java
Web Application
Rildo F Santos
rildo.santos@etecnologia.com.br
twitter: @rildosan
skype: rildo.f.santos
http://rildosan.blogspot.com/
(11) 9123-5358
(11) 9962-4260
www.etcnologia.com.br
- 2. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 2
Programa: “Menos Papel, Mais Árvores ®”
Qual é o mundo que queremos ?
O primeiro passo para criar um mundo melhor, é saber qual tipo
de mundo que queremos ter e qual tipo que deixaremos de
herança para as próximas gerações.
Nossa missão: É buscar pelo equilibro do homem, da
tecnologia e do meio ambiente.
Para cumprir esta missão é necessário: conscientizar,
comprometer e AGIR.
O programa Menos Papel, Mais Árvores®, é uma
ação, com objetivo de estimular o consumo sustentável
de papel dentro das organizações.
Quer participar ?
- Reduza o uso de papel (e de madeira) o máximo
possível.
- Só imprima se for extremamente necessário.
- Evite comprar produtos com excesso de
embalagem.
- Ao imprimir ou escrever, utilize os dois lados do
papel.
- Use papel reciclado.
Este material não deve ser
impresso..
- 3. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 3
Facilitador: Rildo F. Santos (@rildosan)
Coach , Instrutor, Consultor, Palestrante e Professor de Gestão de
Negócios, Inovação, Sustentabilidade, Processos e Tecnologia da
Informação e Métodos Ágeis.
Minha Experiência:
Tenho mais de 10.000 horas de experiência em Gestão de Negócios,
Gestão de Inovação, Governança e Engenharia de Software. Sou formado
em Administração de Empresas, Pós-Graduado em Didática do Ensino
Superior e Mestre em Engenharia de Software pela Universidade
Mackenzie.
Fui instrutor de Tecnologia de Orientação a Objetos, UML e Linguagem Java
(Sun MicroSystems e IBM).
Conheço Métodos Ágeis (SCRUM, XP, FDD, Lean e OpenUP), Arquitetura
de Software, SOA (Arquitetura Orientado a Serviço), Processo Unificado,
Business Intelligence, Gestão de Risco de TI entre outras tecnologias.
Sou professor de curso de MBA da Fiap e fui professor de pós-graduação da
Fasp e IBTA.
Tenho conhecimento de Gestão de Negócio (Inteligência de Negócio,
Gestão por Processo, Inovação, Gestão de Projetos e GRC - Governance,
Risk ando Compliance), SOX, Basel II e PCI;
Experiência na implementação de Governança de TI e Gerenciamento de
Serviços de TI. Fluência nos principais frameworks e padrões: ITIL, Cobit,
ISO 20000, ISO 27001 e ISO 15999;
Participei de diversos projetos nos segmentos: Financeiro,
Telecomunicações, Seguro, Saúde, Comunicação, Segurança Pública,
Fazenda, Tecnologia, Varejo, Distribuição, Energia e Petróleo e Gás.
Possuo as certificações: CSM - Certified SCRUM Master, CSPO -
Certified SCRUM Product Owner , SUN Java Certified Instrutor, ITIL
Foundation e sou Instrutor Oficial de Cobit Foundation e Cobit Games;
Sou membro do IIBA-International Institute of Business Analysis
(Canada)
Onde estou:
Twitter: @rildosan
Blog: http://rildosan.blogspot.com/
Comunidade: http://etecnologia.ning.com
- 4. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 4
Conteúdo
Servidores, Protocolos, Serviços,
Componentes, Formulários, Páginas
dinâmica e Scripts
Java Servlet: APIs e funcionalidades
JSP: APIs e funcionalidades
JavaBeans e JDBC
Recomendações, dicas e Melhores
prática para o desenvolvimento de
aplicação Web
Nota: As tags HTML foram escritas em letras minúsculas. A melhores práticas recomendam que
elas sejam em maiúsculo.
- 6. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 6
Conceitos
Introdução
Servidores
Server Pages
Páginas
Protocolos
Formulários
Componentes
Web Container: Tomcat
Scripts
- 7. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 7
Podemos dizer que as aplicações web são
baseada na arquiteturas Cliente/Servidor de
duas ou três camadas:
Camada de Recursos
WWW Browser
Web Server / ASs
HTML
CGI
ASP Java
Business Object
Services
Business Object
Engine
Camadas
Apresentação,
Lógica de
Negócios e
Integração
Camada de Cliente
- 9. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 9
Os servidores são responsáveis por gerenciar um
sistema virtual de arquivos e atender a requisições.
- Basicamente que temos:
Web Server:
Para atender uma aplicação web pequena ou
mediana com baixo volume de requisições e
transações.
Exemplo: Intranets extranets, webmail, fóruns e
pequenos site empresariais ou pessoais
(demanda controlada)
Application Server:
Para atender uma aplicação web corporativa
com alto volume de requisições e/ou transações.
Exemplo: aplicações de e-commerce, e-business
serviços (home banking) e grandes portais (UOL,
Globo.com, IG)
(demanda incontrolada)
O Lado Servidor : Servidores
Arquitetura da Web
- 10. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 10
O Lado Servidor: Web Server
Os servidores Web são programas que respondem chamadas
através de conexões TCP/IP com arquivos que são,
basicamente, gerados em html. Esses softwares são
instalados nas máquinas em que são armazenadas as
páginas da Web.
Ao ser instalados, criam uma estrutura de diretórios e nesses
diretórios são colocadas as páginas que se deseja fazer
acesso. Quando executado, o servidor Web abre uma porta
de comunicação (Porta 80) para que os usuários internos (no
caso de uma intranet) ou externos (internet ou extranet)
possam fazer o seu acesso. Atualmente existem diversos
softwares atuando como servidores Web disponíveis no
mercado.
Existem servidores “open source”, como Apache (maior
“player” do mercado) e outros tais como: MS Internet
Information Server, SunOne e etc.
Alguns servidores Web, são extremamente pequenos, como
o Apache, ocupando pouco espaço, outros como o IIS são
bem maiores, e já são disponibilizados com o Sistema
Operacional, no caso Windows NT e 2000.
Um ponto importante a considerar sobre os Servidores Web,
é a configuração. Apesar de ser relativamente simples
entender os princípios básicos desse tipo de software, a
configuração às vezes não é uma tarefa fácil.
Arquitetura da Web
- 11. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 11
O Lado Servidor: Web Server
Arquitetura da Web
Os mais populares servidores Web, são:
- Apache;
- Microsoft Internet Information Server (IIS);
- Zeus e
- SunOne.
O apache é produto open source que tem mais de 60% de
mercado (www.apache.org).
Microsoft IIS é distribuido atrelado a sistema operacional
Windows, no caso Windows NT e 2000.
- 12. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 12
Arquitetura da Web
A estrutura escalar e portabilidade são as novas regras
para quem quer ter vantagem competitiva sobre a
concorrência.
Em meio este cenário os Application Server despontarão
como soluções completas, de desenvolvimento a
Gerenciamento de Sistemas.
Application Server simplifica o desenvolvimento, facilita
integração, distribuição e gerenciamento de clientes leves e
sistemas de software distribuídos.
Proporciona soluções de negócios que integram ambientes
empresariais heterogêneos, incluindo servidores Web,
servidores de Banco de Dados, Legados, Múltiplos clientes,
Linguagens e Plataformas.
Construído baseado em padrão aberto e em padrões de
indústria, tais como: CORBA, J2EE (EJB, JSP, Servlets),
C++, XML e HTML, gera confiabilidade, crescimento escalar
e flexibilidade, necessárias para atingir a demanda de
aplicações comerciais.
O Lado Servidor: Application Server
- 13. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 13
Arquitetura da Web
Principais características de Application Server:
• Sistema de usuários que permita a criação de grupos e
usuários, integração com segurança da rede (usuários de
todas as plataformas, seja Windows, Linux, Unix ou
Mainframe, OS/390);
• Cadastro e uso facilitado de certificado de autorização
• Controle de acesso em nível de componentes da aplicação
e com filtros de dados;
• Estrutura escalar (embutir recursos de clusters)
• Fail Over (Tolerância a Falhas);
• Persistência de sessão;
• Atualização de componentes a quente (hot deployment)
• Suporte a padrões: Corba, XML, J2EE, EJB, COM, Web
Services e etc;
• Acesso a Banco de Dados (com recurso de pool de
conexões);
• Balanceamento de carga;
• Monitoria de Transações e
• WebServer (com suporte a HTML, RMI, IIOP, XML, WAP).
O Lado Servidor: Application Server
- 14. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 14
O Lado Servidor: Application Server
Arquitetura dos Application Server
(tecnologia J2EE)
Arquitetura da Web
Web
server
Firewall
Clientes
(browsers)
JSP e
Servlet
Container
(Componentes)
EJB
Servidor de Aplicações
Banco de Dados
Legado
Camada
Cliente
Lógica e Regra de Negócios
Repositório
de dadosCamadas Apresentação,
Lógica de Negócio e
Integração Camada
Recursos
- 15. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 15
O Lado Servidor: Application Server
Arquitetura Cliente Servidor (Três Camadas)
Application Server (tecnologia J2EE)
J2EE
App Client
WEB CONTAINER
Clients protocols
Suporte (HTTP, HTTPs
RMI, IIOP SOAP
Browser
HTTP / HTTPS
Java Servlets
JSP
EJB CONTAINER
Clients protocols
Capable of making (HTTP, HTTPs
RMI, IIOP SOAP)
EJB
RMI, IIOP, SSl, TCP
RMI,
IIOP,
SSl,
TCP
JNDI, JTA, JDBC, JMS, JAVAMAIL
JAXP, CONNECTORS e JAAS
Enterprise Systems
(ERP, SCM, Mainframe)
Banco de
Dados
Arquitetura da Web
- 16. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 16
O Lado Servidor: Application Server
Razões para usar um Application Server
Arquitetura da Web
Estrutura escalar:
Você nunca sabe quantas conexões seu site vai exigir.
Seu sucesso pode matá-lo:
BOL previu 40.000 novos usuários na
primeira semana de uso
Recebeu 60.000 no primeiro dia
O cache de transações possibilita atender o
crescimento da demanda
O balanceamento de carga possibilita dividir o
processamento em várias CPUs
A portabilidade possibilita mudar a plataforma de
hardware e software para atender uma nova
demanda
Quantos usuários
terei...?
- 17. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 17
O Lado Servidor: Application Server
Razões para usar um Application Server
Portabilidade
Arquitetura da Web
Trocar de hardware e Software, digo, Sistema
Operacional e preservar a Aplicação...
A maioria dos Application Server são baseados na
tecnologia Java (J2EE) que oferece a portabilidade entre
Sistemas Operacionais.
A portabilidade favorece o atendimento de crescimento
ou nova demanda.
Troque de hardware continue com a mesma aplicação.
“Você pode começar sua aplicação com a dobradinha wintel
(Windows + Intel) e mais tarde migrar para Unix e Risc”
- 18. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 18
O Lado Servidor: Application Server
Razões para usar um Application Server
Arquitetura da Web
Redução de Custos:
• O custo das transações efetivadas através do
Home Banking é quase dez vez menor que
nas agências.
• Call Center vs Internet, o custo de
atendimento via Internet é muito menor do
que o atendimento telefônico.
• SCM e e-Procurement podem reduzir os
custos...
Integração da Cadeia de Valores
• Possibilidade de toda a integração da cadeia
de valores, integração com Fornecedores,
Clientes e Investidores
- 19. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 19
O Lado Servidor: Application Server
Razões para usar um Application Server
As vantagens do Java:
A grande maioria dos Application Servers tem
suporte a Java. Algumas característica da
tecnologia Java:
• É Orientada por Objetos;
• Foi projetada para redes;
• É segura;
• É multitarefa;
• Gerenciamento de memória automático
• Está portada para uma grande variedade de
plataformas
• É uma padrão de mercado
• Baixo custo de aquisição de software
Arquitetura da Web
- 20. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 20
O Lado Servidor: Application Server
Razões para não usar um Application Server
Nem todos os projetos necessitam de Application
Server, veja os porquês:
• Baixo volume transações;
• Falta de domínio da tecnologia;
• Baixo investimento em hardware e
• Baixo investimento software.
Arquitetura da Web
- 21. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 21
O Lado Servidor: Application Server
Application Server:
Arquitetura da Web
Existem diversos Application Server disponíveis no mercado,
tais como:
- WebSphere Application Server, IBM
- Oracle Application Server, Oracle
- JBoss, JBoss Group (Open source)
Entre outros...
Quais são os
Application Server
disponíveis ?
- 23. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 23
CGI:
A CGI (Commom Gateway Interface) é um padrão criado para
fazer interface entre servidores Web e aplicações externas. O
programa CGI é conhecido como Script CGI, aplicação CGI ou
simplesmente Gateway.
Através dos componentes CGI podemos adicionar novas
funcionalidades aos Web Server. Fazer a aplicação
comunicação com Banco de Dados, usar mecanismo de busca,
contadores, livro de visita entre outras coisas.
Características Funcionais:
Geração de Documentos Virtuais (on-the-fly)
Documentos virtuais aqueles criados no momento de sua
requisição, ou seja, eles não existem efetivamente, como um
arquivo .HTML. Assim, são gerados automaticamente por um
programa CGI, permitindo que sejam personalizados.
Por exemplo, pode-se enviar página HTML, agradecendo o
usuário, mencionando seu nome na página, por ter preenchido
um formulário.
Arquitetura da Web
CGI
- 24. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 24
Gateway para outros serviços:
Gateways são “pontes” de comunicação para outros
serviços, por exemplo, as informações vindas de formulário
podem ser gravadas em um banco de dados, ou então
requisição web podem originar chamada a drivers capazes
de ativar componentes específicos (como envio de
mensagens para “pagers”), interface com telefones
celulares e etc.
Quando uma requisição CGI é enviada, o controlador CGI
localiza no diretório destinado aos scripts CGI, o programa
a ser acionado. Após esta localização, o programa é lido do
disco e executado em memória, sendo este recurso liberado
após o processamento. Assim estabelece-se o fluxo de
processamento CGI:
Requisição
Acesso a
Disco
Execução
Emissão de
resposta
Liberação
do recurso
Arquitetura da Web
CGI
- 25. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 25
Características Funcionais:
Gateway para outros serviços
Para cada requisição é gerado um novo fluxo, para grande
volumes de requisições, será necessário infra estrutura, para
responder tal volume. A maior desvantagem no uso do CGI é
que ele pode sobrecarregar o servidor, a maioria das
soluções, acabam por limitar a portabilidade.
Requisição
Acesso a
Disco
Execução
Emissão de
resposta
Liberação
do recurso
Requisição
Acesso a
Disco
Execução
Emissão de
resposta
Liberação
do recurso
Requisição
Acesso a
Disco
Execução
Emissão de
resposta
Liberação
do recurso
Requisição
Acesso a
Disco
Execução
Emissão de
resposta
Liberação
do recurso
Requisição
Acesso a
Disco
Execução
Emissão de
resposta
Liberação
do recurso
Requisições
Servidor
Arquitetura da Web
Componentes Web: CGI
- 26. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 26
Perl
Perl (Practical Extraction and Reporting Language) é uma
linguagem que usa técnicas de orientação a objetos que
combina um mix de C e Unix, tornando-se, uma das opção
poderosa ferramentas para desevolvimento da Internet.
Características:
Os programas feito para Perl são escrito em arquivos ASCII e
depois executados em Perl.
As classes e rotinas de bibliotecas, estão contidas em módulo
(arquivo Perl com a extensão .pm)
Disponibilidade.
Existem disponíveis gratuitamente, diversos módulos Perl. Os
módulos mais comuns utilizam o ODBC para acessar os
diversos Banco de dados, possibilitando a portabilidade do
programa para vários formato diferentes
CGI e Perl
um casamento
perfeito
Arquitetura da Web
Componentes Web: CGI
- 27. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 27
Integração CGI e Perl
Quando um usuário submete uma requisição o CGI/Perl fazem
o processamento de entrada (validando os dados) e a saída
(reposta ao envio do formulário)
Nome
Cidade
Cep
OK
<input... Name=Nome...>
<input... Name=Cidade...>
<input... Name=Cep...>
Ins_cli.pl
Ins_cli.html
HTML
Que contém um Form
<...Action=“.../Ins_cli.pl...>
CGI em Perl (Ins_cli.pl)
Recebe os dados inseridos
no Form (CGI_Lite)
Retorna uma página
HTML (on the fly)
agradecendo a adesão.
Arquitetura da Web
Componentes Web: CGI
- 28. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 28
Integração CGI e Perl (Exemplo)
A arquitetura básica é a mesma para cada Banco de Dados:
uma requisição de é enviada contendo uma consulta SQL, por
meio de formulários HTML.
Por meio de chamadas CGI ou API, o servidor Web submete o
formulário a um agente SGBD, que o converte em uma consulta
SQL específica de Banco de Dados. Os resultados são
formatados em HTML e devolvidos pelo gateway CGI ou API
para servido web, e de volta Browser.
CGI
(Programa .PL)
ODBC
Interface
Win::ODBC
SGBD SGBD
Cliente
(browser)
Servidor
(Web Server)
Dados
(Banco de
Dados)
Arquitetura da Web
Componentes Web: CGI
- 29. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 29
Arquitetura da Web
Componentes Web
Componentes Web, são parecidos componentes de
software:
“ Componentes são unidades de software freqüentemente
usadas no desenvolvimento de aplicações. Um
componente é genérico o suficiente para que possa ser
usado em diversos programas, é eficiente, fácil de usar,
possível de ser combinado com outros componentes e
tem interface bem definida”
Exemplos de componentes de Software:
- JavaBeans
- Enterprise JavaBeans
- COM (DLLs e ActiveX)
- etc
Exemplos de componentes de web (Tecnologia Java):
- JSP
- Java Servlet
Esses componentes são classes e interfaces Java com
propósito bem definido e somente podem ser executados
em ambiente especifico.
Estes ambientes são chamados de contêineres.
- 30. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 30
Arquitetura da Web
Componentes Web: Servlets
Servlets:
A API Java Servlet é uma extensão da plataforma Java que
permite que os desenvolvedores adicionem, nos servidores
web, mecanismos que estendam sua funcionalidade.
Um Servlet executa somente no Side Server (lado servidor).
Um Servlet pode fornecer vários serviços ao Servidor Web
como por exemplo:
• Processar formulários;
• Persistência de conexões http;
• Fazer acesso a Banco de Dados;
• Enviar de e-mail automáticos;
• Agentes de procura;
• Compatibilidade com vários protocolos (http, url, ftp)
- 31. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 31
Arquitetura da Web
Componentes Web: Servlets
Comparação CGI vs Servlets:
A tecnologia Servlets oferecem algumas vantagens sobre as
aplicações baseadas em CGI, entre elas podemos destacar:
-Independência de plataforma, ou seja, portabilidade;
-Melhor performance;
-Extensibilidade;
-Facilidade de manutenção;
-Consome menos memória, pois quando um novo programa
CGI é carregado para cada requisição, um servlet é carregado
somente uma vez e para cada nova requisição é gerado uma
nova thread e
-Servlet podem ter acesso o jogo grande de APIs disponível
para a plataforma de Java.
- 33. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 33
Arquitetura da Web
• Páginas Cliente são a abstração de páginas Web
como elas são vistas no lado cliente (página HTML)
• Atributos da página cliente representam variáveis do
Script. Operações da página cliente representam as
funções do Script.
• Associações das páginas cliente normalmente são
feitas com objetos do lado cliente (applets, ActiveX,
objetos Script e etc)
• As páginas cliente tem associações do tipo <<link>>
com outras páginas cliente.
Páginas Clientes
- 34. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 34
Arquitetura da Web
Páginas Clientes
Browser
Scripts
Plug ins
Sockwave
(Flash)
Real Video
PDF
Applet Java
JavaScript
VBScript
JScript
Linguagens
HTML
XML
Internet Explorer
Netscape
Opera
Mozilla
Tecnologias no lado cliente:
- 36. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 36
Server Pages
O que são Server Pages ?
Uma <<Server Page>> é um estereótipo de classe que
abstrai o comportamento da página Web no lado server
• Operações são funções executadas no server
• Atributos são variáveis no escopo da página
• Associações são feitas com recursos do lado server
(componentes, bancos de dados, sistemas externos e
etc)
O principal papel destes scripts é separar “Conteúdo”
da “Lógica de Negócio”.
Arquitetura da Web
- 37. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 37
O que é ASP?
ASP (Active Server Pages) é uma tecnologia
criada pela Microsoft, que combina
instruções HTML, comandos script e
componentes ActiveX, para criar páginas
web com conteúdo dinâmico. Os scripts são
executados no servidor web (“Server-side”),
ao contrário de outros scripts, como
Javascript que são executados no “Browser”
do cliente (“Client-side”).
Em ASP podem ser usados com quaisquer
linguagens que suportem ActiveX scripting,
tais como: Javascript, VBScript, PerlScript,
Rexx, Phyton e etc.
Plataforma para ASP
Originalmente, ASP somente poderia ser
utilizada com servidores web da Microsoft
(Personal WebServer e IIS), para a
plataforma Windows. Atualmente existem
fornecedores para outra plataforma, por
exemplo, Unix. Entre eles estão Sun
(http://wwws.sun.com/software/chilisoft/index.html)
Ferramentas de Produtividade
Embora as páginas ASP possam ser criadas
a partir de simples Editor de Texto, como
Bloco de Notas, ou dos mais populares,
como FrontPage, Dreamweaver.
Server Pages Arquitetura da Web
- 38. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 38
PHP (Personal Home Page)
Baseada em C++, PHP fica embutido no script
HTML, oferece suporte a a SGBD (dBase,
Interbase, mSQL, mySQL, Oracle, Sybase,
PostgreSQL e vários outros);
Protocolos como IMAP, SNMP, NNTP, POP3 e
HTTP; Seu módulo de compilação é pequeno e
rápido;
Criada em 1994 por Rasmus Lerdorf,
aperfeiçoado pelo projeto Zend 2000 - PHP4. É
“Open Source”.
Server Pages
Arquitetura da Web
- 39. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 39
Server Pages
JavaServer Pages é uma extensão da tecnologia
Java Servlets, que simplifica o processo de
desenvolvimento de sites com conteúdo dinâmico.
Com JSP os designers e programadores podem
rapidamente incorporar elementos dinâmicos em
páginas usando o Java embutido e algumas tags de
marcação simples (HTML).
Estas tags fornecem ao designer de HMTL um meio
de fazer acesso aos dados e lógica de negócios
armazenadas em objetos (javabeans e EJB) sem
precisar conhecer as complexidades do
desenvolvimento de aplicações.
JavaServer Pages usam tags XML e scriptlets para
escrever programas em Java para encapsular a
lógica que gera o conteúdo para a página
Arquitetura da Web
+ Veja mais em: Solução Java - JavaServer
Pages
- 40. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 40
Tecnologia Java:
Applet, Java Servlet e JavaServer Pages (JSP), EJB
JavaMail e JMS são tecnologias do framework J2EE,
que permitem desenvolver aplicações para Internet,
os recursos fornecidos por esta tecnologia
proporcionam a criação de aplicações com conteúdo
dinâmico, robusta, segura, portáveis, pois, são
independentes de plataforma e com recursos de
orientação ao objetos. Servlet e JSP são partes
integrantes da J2EE.
Destaques da tecnologia Java:
Portabilidade;
Controle de exceção;
Gerenciamento de alocação de memória;
Permite fazer acesso à gama extensiva de Java
APIs (JDBC, JavaMail, etc.);
Componentes de lógica portáteis com ênfase ao
reúso;
Desempenho;
- 42. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 42
JavaServlets Tomcat
O que é o Tomcat ?
Para desenvolvermos aplicações Web Java
(Servlet e JSP) precisamos de web container
ou algo similar. No nosso caso Tomcat é ideal.
É servlet container, também conhecido como web
container, que é usado como referência oficial da
implementação da tecnologia Servlet e JSP.
É um projeto “open source”
Cada versão do Tomcat atende uma versão Servlet
e JSP:
http://jakarta.apache.org/tomcat/index.html
Servlets JSP Tomcat
2.4 2.0 5.X.X
2.3 1.2 4.1.29
2.2 1.1 3.3.1a
versões
Isto significa que vamos precisar do arquivo servlet.jar
(tomcat_homecommomlib) para compilar as aplicações. Você
pode colocar a referência deste arquivo na Classspath.
- 43. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 43
JavaServlets Tomcat
Quais são os pré-requisitos
para instalar o Tomcat ?
Precisamos criar algumas variáveis de ambiente:
TOMCAT_HOME | CATALINA_HOME (depende
da versão que estou instalando)
Precisamos também do Kit de desenvolvimento
Java (j2sdk1.4.1_XX) instalado e suas variáveis
de ambiente como JAVA_HOME e Classpath.
Após a instalação do Tomcat você terá algumas
pastas, que representam a estrutura do Tomcat, veja
algumas delas:
Pasta Descrição
bin
Os executáveis do Tomcat e arquivos para iniciar e
parar o serviço
Commom
classes
lib
Nesta pasta colocamos todas as classes, na
subpasta classes e os jar na subpasta lib, que são
comuns a todas as aplicações.
conf
Estrutura do Tomcat
Nesta pasta encontramos os arquivos de
configuração do Tomcat, como: server.xml e outros
logs
Nesta pasta encontramos os arquivos de
log do Tomcat e das aplicações
Webapps
Root
<contexto>
Esta pasta é onde publicamos as aplicações web.
Você poderá colocar as aplicações no contexto
Root ou criar um novo contexto para sua aplicação
- 44. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 44
JavaServlets Tomcat
Como o Tomcat funcionar ?
Para iniciar o Tomcat você tem algumas opções
veja algumas delas:
- Se você optou por instalar o Tomcat como um
serviço (caso Windows), basta iniciá-lo a partir
da janela de serviços.
- Uma outra opção é executar o arquivo startup.bat
(windows) ou startup.sh (Unix), para iniciar o
serviço. Para parar use o arquivo shutdown.bat
ou shutdown.sh (Unix)
- 47. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 47
JavaServlets
Introdução
Interaçao com Servlets
Aplicação dos Servlets
Eu preciso de container Web ?
O que é container web ?
Container Web e Servidores Web
Como um Container Web Trabalha
Arquitetura:
Os pacotes
Ciclo de Vida
O pacote: Generic Servlet
O pacote: HTTP Servlet
Generic Servlet vs HTTP Servlet
Configuração, Deployment e afins
WAR Web Archive
Formulários HTML e Servlets
Formulários e tags
Metodos HTML vs HttpServlet
Tag INPUT
Tutorial
Debug
Descritor Web.xml
Arquivo descritor
Tutorial
Métodos: getInitParameter, getInitParameterNames...
Exercício
Os elementos do arquivo descritor
Escrevendo documento XML Boas Práticas
Cookie, Sessões...
Introdução
API HTTP Servlet, a classe Cookie
usando Cookies
Sessões
A interface HttpSession
Timeout
Usando Sessões
Conteúdo
- 48. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 48
JavaServlets
Despachar e Redirecionar Requisições
Interface RequestDispatcher: forward e include
Redirecionar: sendRedirect e SendError
Servlet Context
Introdução
A interface ServletContext
A interface ServletConfig
Interface ServletContextListener
Tratando Erros e Exceções
Introdução
A classe ServletException
Erros HTTP
Personalizando Páginas de erro
Tutorial
Threads
Sincronização
A intergace SingleThreadModel
Segurança
Autenticação
Autorização e Perfis
Segurança e Perfis no Tomcat
Tutorial: Protegendo um recurso com a MemoryRealm
Filtros
Introdução
Interface Filter
Interface FilterChain
Interface FilterConfig
Os elementos do Filtro
Tutorial
Boas Práticas
Conteúdo
- 50. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 50
O que é um Servlet ?
Servlets é uma tecnologia que estende a funcionalidade de
servidores Web. Um servlet é um componente web,
administrado por um container web que é responsável pelo
seu ciclo de vida.
Servlets são programas baseado na tecnologia Java (que é
independentes de plataforma) e podem ser dinamicamente
carregados e executada em ambiente de Internet. Os servlets
só executam no lado servidor.
JavaServlets
O que é um
Servlet ?
Introdução
- 51. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 51
Como feito a interação com Servlet ?
Como os servlets são projetados para a Internet as interações
entre os clientes (os browsers) e um servlet dar-se-á através
do paradigma requisição (request) e resposta (response).
O cliente faz uma requisição e o servlet (container web)
retorna uma resposta. Este paradigma de requisição e
resposta é baseado no Hipertexto Transferência Protocolo
(HTTP).
JavaServlets
Principais características da Tecnologia:
•Suporte a multithread (multi programação)
•Suporte a todas as API Java (JDBC, JMS, Java2D, JavaMail e
etc)
•Controle de sessão ;
•Persistência via Cookies e
•Servlet container pode suportar ainda o HTTPs (HTTP + SSL)
para dar suporte a transações seguras.
Principais vantagens quando se usa os Servlets:
- Manutenção centralizada;
- Clientes mais leves, pois, todo processamento está no lado
servidor;
- Desempenho;
-Segurança;
-Por ser baseado na linguagem Java tem suporte a orientação ao
objetos e demais características desta tecnologia e
- Extensibilidade através das APIs da Linguagem Java.
Introdução
- 52. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 52
Você poderá usar Servlet para fazer diversas coisas, deste
uma simples resposta de requisição http até como parte
integrante de uma aplicação web.
Um Servlet pode fornecer vários serviços ao Servidor Web
veja alguns exemplos:
• Processar formulários;
• Persistência de conexões http;
• Fazer acesso a Banco de Dados;
• Enviar e-mail automáticos;
• Suporte a ferramenta de busca;
• Permite compatibilidade entre protocolos (http, url, ftp);
• Gerar documentos em vários formatos, tais como XML, PDF
e imagens (GIF, JPG e PNG);
• Fazer integração com legado e.
• Em uma aplicação Web desenvolvida em camadas o
servlet tem o papel de “Controller”.
JavaServlets
Quando usar
Servlet ?
Introdução
- 53. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 53
Eu preciso de Container Web ?
Os servidores web entende um conjunto de serviços
baseados no protocolo HTTP, o que é muito limitado para as
algumas necessidades dos usuários.
Vejamos o caso a seguir:
Alguém quer saber o saldo de sua conta corrente, ela poderia
conseguir esta informação de várias maneiras.
Todavia a maioria dos bancos fornecem este serviço através
da Internet, são os chamados de “Home banking”.
Porém esta necessidade está além dos serviços oferecidos
pelo Servidor Web, pois, será necessário executar um
programa externo para atender a necessidade do usuário.
Para isto, precisaremos de um tecnologia adicional, tais como
CGI, ASP, PHP ou Java (Servlet ou JSP), bem no nosso caso
ficaremos com a tecnologia Java.
Para implementar a tecnologia escolhida precisamos de um
ambiente que dê suporte a ela. O web container pode ser
a solução para este problema...
JavaServlets
Qual é
meu saldo ?
Introdução
- 54. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 54
JavaServlets
O que é um Container Web ?
O container web, também são conhecido como servlet
container, é o ambiente que é responsável por tratar as
requisições Servlet e/ou JSP. Este container proverá respostas
das requisições dos usuários, desta forma conseguiremos
suprir algumas necessidade dos usuários. Exemplo: Saber o
saldo de sua conta corrente.
Browser
(cliente)
Servlet
Container
Servlet /
JSP
Conteúdo
estático
(html)
Requisição HTTP
Resposta HTTP
Servidor Web
(HTTP)
Este é um exemplo de arquitetura onde um servidor web,
também é conhecido como Servidor HTTP, (Apache, por
exemplo) recebe as requisições que são submetidas ao
servidor.
O servidor verifica se a requisição do cliente é uma chamada
Java, ou seja, Servlet ou JSP. E direciona para container web
que receberá esta requisição e a responderá.
Se for uma requisição padrão o próprio servidor web resolverá.
Exemplo: Requisição de uma página HTML estática.
Introdução
- 55. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 55
Container Web e Servidores Web:
Existem diversos containeres Web disponíveis no mercado,
entre eles podemos destacar o Tomcat (jakarta.apache.org).
O tomcat é um robusto container web, “open source” e escrito
em linguagem java.
A mesma coisa vale para servidores web, nossa sugestão vai
para o Apache (apache.org)
Serviços:
http, pop3
ftp e etc
Web
Container+
Servidor Web
JavaServlets
Apache (Unix, Linux e Win32)
ou MSIIS (Win32 )
Tomcat, Jetty, Resin...
A liberdade de escolha sempre é importante. Por isso você
poderá optar por qualquer Servidor Web e por qualquer
container web. Exemplo: Você poderia utilizar o Internet
Information Server, como Servidor Web e Resin, como web
Container ou o Tomcat.
Introdução
- 56. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 56
JavaServlets
Uma outra opção para de uso do container web é a utilização
sem um servidor web. Uma vez que ele é baseado no
protocolo HTTP ele também consegue entender as
requisições não Java, como chamada a conteúdo estático.
Este é um exemplo de arquitetura onde um container web
recebe requisição HTTP e a responde.
Contudo, esta arquitetura é mais limitada que anterior, pois,
ela não teria como tratar um “módulo” para dar suporte a PHP
ou a outro recurso.
Browser
(cliente)
Servlet
Container
Servlet
Conteúdo
estático
(html)
Requisição HTTP
Resposta HTTP
Uma terceira opção seria utilizar um Servidor de Aplicação,
como JBoss (www.jboss.org) que possui container web
embutido, o Jetty e/ou Tomcat.
Como você pode perceber que existem diversas opções para
usar container web. Faça sua opção e mãos obra.
Introdução
- 57. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 57
Como um Container Web Trabalha:
JavaServlets
Requisição HTTP
Servlet está
carregado?
É servlet
corrente ?
Processa Resposta
Retorna resposta HTTP
sim
sim
não
Carrega Servlet
não
Resposta HTTP
Recebe requisição HTTP
(servlet ou JSP)
Introdução
- 59. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 59
JavaServlets
javax.servlet javax.servlet.http
Arquitetura: Os pacotes
A tecnologia Java Servlet baseia em conjunto de
classes e interfaces que possibilita criar aplicações
web.
A arquitetura servlet tem alguns pacotes, os mais
importantes são: javax.servlet e o javax.servlet.http
O pacote javax.servlet contém uma interface genérica
e as classes que são implementados e estendem por
todos servlets.
O pacote javax.servlet.http contém as classes que
são estendidas quando criam especificação servlet
HTTP.
Arquitetura
- 60. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 60
JavaServlets
Arquitetura: Ciclo de Vida
O núcleo desta arquitetura é a interface
Javax.servlet.Servlet. Ela fornece o “framework” para
todo o servlets.
A interface servlet define alguns métodos:
- init()
- service()
- destroy()
- servletConfig() e
- getServletInfo()
Pronto
inicio
init()
destroy()
fim
Arquitetura
Clico de Vida:
doGet() | doPost() | service()...
- 61. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 61
Clico de Vida:
O método init é invocado quando o Servlet é carregado pela
primeira vez e somente na primeira inicialização do Servlet.
Este é um bom local para declarar variáveis ou ler parâmetros.
O método recebe um argumento, uma referência ao objeto
ServletConfig.
O método service, este é o núcleo do Servlet, é neste método
que as requisições são recebidas, onde ocorre o processamento
e o envio da resposta para o cliente.
Este método recebe dois parâmetros um ServletRequest e um
ServletResponse que correspondem a Requisição e Resposta.
O método destroy, é chamado antes que o Servlet seja
finalizado.
O objetivo deste método é possibilitar a liberação dos recursos.
JavaServlets Arquitetura
Interface Servlet do pacote javax.servlet é responsável pelo
ciclo de vida dos servlets.
Esta interface tem cinco métodos, destacando-se os métodos:
- init(), service() e destroy().
Outros métodos: getServletConfig() e getServletInfo()
- 62. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 62
Generic Servlet
JavaServlets Arquitetura
GenericServlet
{abstract}
service()
<<interface>>
Servlet
service
<<interface>>
ServletRequest
seuServlet
service()
javax.servlet
<<interface>>
ServletResponse
getWriter(): PrintWriter
public abstract class
GenericServlet
extends java.lang.Object
implements Servlet,
ServletConfig,
java.io.Serializable
<<interface>>
ServletConfig
public abstract interface
Servlet
import javax.servlet.*;
import javax.io.*;
public class seuServlet extends GenericServlet {
public void service(Servlet req, ServleResponse
response){
...
}
}
- 63. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 63
Generic Servlet
JavaServlets Arquitetura
import javax.servlet.*;
import java.io.*;
public class GenericServletHello extends GenericServlet {
public void service(ServletRequest request, ServletResponse response)
throws IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>Generic Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
Classe GenericServlet
O pacote Servlet
Corpo da resposta
O método service() pertence a classe GenericServlet. O servlet
GenericServletHello herda este métodos (outros também são herdados)
e sobre-escreve. Este método recebe uma requisição e processa uma
resposta, aqui no formato HTML.
- 64. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 64
Generic Servlet
JavaServlets Arquitetura
Abaixo um exemplo de como o Web container trabalha, ou seja, processa
uma requisição e retorna uma resposta ao cliente no formato HTML.
Browser
(cliente)
Servlet
Container
Requisição HTTP
Resposta HTTP
http://localhost:8080/servlet/GenericServletHello
<<html>
<body>
<head>
<title>Generic Hello
World!</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
Hello
World! GenericServletHello{
service(ServletRequest req,
ServletResponse res){
....
}
}
Requisição
Resposta
1
2
3
4
5
javax.Servlet
- 65. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 65
HTTP Servlet
JavaServlets Arquitetura
GenericServlet
{abstract}
service()
<<interface>>
HttpServlet
doGet()
doPost()
doPut()
doDelete()
doHead
doTrace()
<<interface>>
HttpServletRequest
seuServlet
service | doGet | doPost
e etc...
javax.servlet.http
<<interface>>
HttpServletResponse
getWriter(): PrintWriter
public abstract class
HttpServlet
extends GenericServlet
implements
java.io.Serializable
import javax.servlet.http.*;
import javax.io.*;
public class seuServlet extends HttpcServlet {
public void doGet(HttpServletRequest req,
HttpServleResponse response){
...
}
}
- 66. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 66
JavaServlets Arquitetura
import javax.servlet.http.*;
import java.io.*;
public class ServletHello extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse
response)
throws IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>Simple Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
Classe GenericServlet
O pacote Servlet
Corpo da resposta
O método doGet pertence a classe HttpServlet. Este método é herdado
pelo ServletHello e que faz um “overriding” do método.
O papel do doGet é processar uma requisição e devolver uma resposta,
ao cliente.
HTTP Servlet
- 67. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 67
JavaServlets Arquitetura
Browser
(cliente)
Servlet
Container
Requisição HTTP
Resposta HTTP
http://localhost:8080/servlet/ServletHello
<<html>
<body>
<head>
<title>Generic Hello
World!</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
Hello
World! ServletHello{
doGet(HttpServletRequest req,
HttpServletResponse res){
....
}
}
Requisição
Resposta
1
2
3
4
5
javax.servlet.http
HTTP Servlet
Abaixo um exemplo de como o Web container trabalha, ou seja, processa
uma requisição e retorna uma resposta ao cliente no formato HTML.
- 68. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 68
A principal diferença entre os pacotes é que enquanto o
pacote javax.servlet oferece um único método genérico,
service, para tratar as requisições e as respostas.
O pacote javax.servlet.http oferece vários métodos (doGet,
doPost, doPut, doDelete, doHead e doTrace) para tratar as
requisições. Os métodos oferecidos tem funcionalidade
similar os métodos do protocolo HTTP.
Assim podemos tratar cada requisição de acordo com as
características presentes nos métodos do HTTP, ou seja, o
método get seria tratado pelo doGet e assim por diante.
Desta forma este o pacote javax.servlet.http é mais
indicado.
JavaServlets
Qual é a diferença
entre os pacotes ?
Introdução
Generic Servlet vs HTTP Servlet:
- 69. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 69
import java.io.*;
import javax.servlet.*;
public class GenericServletHello1 extends GenericServlet {
public void doGet(ServletRequest request, ServletResponse response)
throws IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>Generic Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
public void service(ServletRequest request, ServletResponse response)
throws IOException
{ }
}
JavaServlets
Qual é resposta que
servlet irá devolver ?
Quiz-Show
1 ( ) Hello world!
2 ( ) Nada
3 ( ) Erro
- 71. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 71
Para chamar um servlet que está no contexto “root”. Execute
os seguintes passos:
1 - Copie o servlet HelloServlet.class para a pasta:
....webappsROOTWEB-INFclasses
2 - Chame o browser (tenha certeza que o serviço do tomcat
esteja funcionando)
3 - No browser digite a seguinte URL:
http://localhost:8080/servlet/ServletHello
JavaServlets
Como posso
chamar os
servlets ?
Aplicação Web
webapps
ROOT
WEB-INF
WebContainer
Aplicação
classes
servlet
O contexto “root”
HelloServlet.class
web.xml
Diretório de
Deployment
JSPs | HTML | Imagens | etc
lib
configurações
- 72. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 72
Para criar seu próprio contexto faça o seguinte:
1 - Criar uma pasta com o nome do contexto. Exemplo: loja
2 - Criar dentro da pasta loja a pasta: WEB-INF.
3 - Criar dentro da pasta WEB-INF o arquivo chamado
web.xml, que será utilizado para fazer as configurações da
aplicação.
3.1 Ainda dentro da pasta WEB-INF crie duas pastas a
classes (para os servlets e demais classes) e a pasta lib
(para os arquivos jar)
4 - Copie a pasta loja para a pasta: ....webapps
5 - Chame o browser (tenha certeza que o serviço do tomcat
esteja funcionando)
6 - No browser digite a seguinte URL:
http://localhost:8080/loja/
JavaServlets
Posso criar
o meu próprio
contexto ?
Aplicação Web
contexto
- 73. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 73
JavaServlets
webapps
ROOT
WEB-INF
WebContainer
web.xml
classes
loja
WEB-INF
HelloServlet.class
Aplicação
classes servlet
Contexto
O contexto “root”
HelloServlet.class
web.xml
Aplicação Web
Diretório de
Deployment
JSPs | HTML | Imagens | etc
JSPs | HTML | Imagens | etc
lib
jars
Javabeans e classes
lib
Configurações da aplicação
- 74. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 74
JavaServlets Aplicação Web
Como posso verificar o “status” do contexto criado ?
- Para verificar o status de contexto ou para gerencia-lo é necessário ter a senha
de administrador do Tomcat. Veja abaixo;
Na página index.jsp do Tomcat selecione o link
Tomcat Manager e depois informe o nome do
usuário e senha. Lembre-se que usuário deve
ter o papel de administrador.
Tomcat Web Application Manager
Message
Manager
Applications
List Applications HMTL Manager Help Manager Help Server Status
Path Display Name Running CommandsSession
loja Loja true Start Stop Reload Undeploy0
- 76. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 76
Módulo WAR (Web Archive)
Arquitetura da Web
JavaServlets WAR
A melhor estratégia para “empacotar” e fazer deployment de
aplicações web é através da criação de um módulo WAR.
O módulo war é um arquivo do tipo “Jar” que pode incluir uma
aplicação web completa.
Um war pode conter páginas estáticas html, páginas dinâmicas
(JSP), imagens, servlets, classes java, componentes
javabeans e etc.
Para criar um módulo (arquivo) war utilizar a ferramenta jar do
J2SDK
Loja
WEB-INF
classes
lib
component.jar
servlet.class
web.xml
index.jsp
Para fazer o deployment no Tomcat coloque o arquivo war
dentro da pasta ..webapps
Sintaxe:
jar <opções> <nome do arquivo war> <lista de arquivos>
Exemplo:
jar cvf <loja.war> *.*
Loja.war
(módulo WAR)
- 77. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 77
Exercício:
1 - Criar um contexto chamado teste, para este contexto você
também deverá criar a estrutura necessária para aplicação
web, ou seja, as pasta WEB-INF, classes, lib e etc...
2 - Criar o arquivo chamado teste.war, para isto você dever
utilizar a ferramenta jar;
3 - Fazer o deployment do módulo teste.war;
4 - Fazer validação do contexto criado. Para isto você poderá
criar um simples página chamada index.html e coloca-lo
dentro do contexto.
JavaServlets Aplicação Web
exercício
- 79. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 79
Formulários:
Para enviar dados para um servidor web, usamos os formulários.
Eles extremamente úteis para esta tarefa.
Além do envio de dados, pode-se ainda fazer requisição de
serviços, tais como:
- Acesso a banco de dados;
- Envio de e-mail e
- Executar uma aplicação
- E etc.
Os formulários trabalham com conceito de pares chaves, nome e
valor.
Basicamente a informação é enviada ao servidor em duas
partes: a primeira o identificador, ou seja, o nome e depois os
dados em si (o valor).
Por exemplo:
Numa caixa de texto com o nome como cliente onde o usuário
digitou “Ferreira”, os dados serão enviados para o servidor da
seguinte forma: cliente = Ferreira.
JavaServlets Formulários HTML & Servlets
- 80. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 80
Tags HTML:
A tag <FORM> </FORM> delimita um formulário e contém uma
seqüência de elementos de entrada e de formatação do
documento.
<FORM ACTION="URL_de_script"
METHOD=método>...</FORM>
ACTION:
Especifica o endereço URL ou URI para qual serão enviados os
dados do formulário.
METHOD:
Seleciona um método para acessar o URL de ação. Os métodos
mais populares são GET e POST. Ambos os métodos
transferem dados do browser para o servidor.
Para formulário enviar os dados ao um Servlet é necessário
usar um método de envio: Get ou Post.
Também é preciso apontar para uma URL, que representará a
chamada do servlet.
Exemplo 1: URL completa
<FORM ACTION= ="http://localhost:8080/servlet/Dados"
METHOD="POST">
URL Servletmétodo de envio
Exemplo 2: Apenas parte da URL (URI)
<FORM ACTION= ="/servlet/Dados" METHOD=”GET">
JavaServlets Formulários HTML & Servlets
- 81. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 81
Metodos HTML vs HttpServlet:
JavaServlets Formulários HTML & Servlets
HTTP HttpServlet (Java)
get doGet
put doPut
head doHead ou doGet
delete doDelete
options doOptions
trace doTrace
post doPost
- 82. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 82
Tags HTML: INPUT
Dentro de um formulário a tag INPUT define os campos de
entrada de dados.
Padrão de tipo de entrada de dados:
- Botões, checkboxes, password, “radio buttons”, campo de
texto, botões de imagens, Text Area e Hidden fields e etc
Os campos geralmente são associados a um nome e um valor
Exemplo: (fragmento de formulário)
<FORM ACTION="/servlet/Processa" METHOD=”Post">
<BR>Nome: <INPUT TYPE="text" NAME="nome" SIZE=20 TABINDEX=1>
<BR>Idade: <INPUT TYPE="text" NAME="idade" TABINDEX=2>
<INPUT TYPE="submit" VALUE="Enviar">
<INPUT TYPE="reset" VALUE="Limpar">
</FORM>
Tag INPUT, aqui somente
botões e caixa de texto
JavaServlets Formulários HTML & Servlets
- 83. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 83
Dados
Eventos
<HTML>
<TITLE>
Dados
</TITLE>
<BODY>
<H1>Preencha os campos:</H1>
<FORM ACTION="/servlet/ChkForm1" METHOD=”get”>
<BR>Nome: <INPUT TYPE="text" NAME="nome" SIZE=20 TABINDEX=1>
<BR>Idade: <INPUT TYPE="text" NAME="idade" TABINDEX=2>
<HR>
<INPUT TYPE="submit" VALUE="Enviar">
<INPUT TYPE="reset" VALUE="Limpar">
</HR>
</FORM>
</BODY>
</HTML>
Tutorial, parte 1 - O Formulário HTML:
JavaServlets Formulários HTML & Servlets
URI (contexto e servlet)
Método de envio:get
Nome do formulário: Form.html
- 84. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 84
Tutorial, parte 2 - Escreva o servlet para tratar os dados do
formulário:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ChkForm extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
// Ajusta o tipo de conteúdo (Mime)
res.setContentType("text/html");
PrintWriter out = res.getWriter();
String nome = req.getParameter("nome");
int idade = Integer.parseInt (req.getParameter("idade") ) ;
//Corpo da Resposta
out.println("<HTML>");
out.println("<HEAD><TITLE>Saudação</TITLE></HEAD>");
out.println("<BODY>");
out.println("Hello, " + nome);
out.println("</BODY></HTML>");
}
}
JavaServlets Formulários HTML & Servlets
- 85. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 85
webapps
ROOT
WEB-INF
WebContainer
Formulário HTML
classes
servlet
O contexto “root”
ChkForm.class
Web.xml
Form.html
Tutorial, parte 3 - Deployment:
Para encerrar chame o formulário, digitando a seguinte URL:
http://localhost:8080/Form.html
Preencha os dados e envio o formulário que será processado
pelo Servlet (ChkForm).
Faça a distribuição dos arquivos:
JavaServlets Formulários HTML & Servlets
- 86. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 86
<<interface>>
ServletRequest
getParameter(name): String
getParameterValues(name): String[]
getParameterNames(): Enumeration
...
javax.servlet
public abstract interface ServletRequest
A ServletRequest captura dados como parâmetros (nomes e valores),
atributos e fluxo de dados.
Define um conjunto de métodos para capturar os dados dos clientes.
Esses dados serão tratados pelo Servlet. Na verdade pelos métodos:
doGet, doPost ou service.
JavaServlets Formulários HTML & Servlets
- 87. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 87
<HTML><HEAD><TITLE>Dados</TITLE></HEAD>
<BODY>
<H1>Preencha os campos:</H1>
<FORM ACTION="/servlet/ChkForm1" METHOD="Post">
<BR> Nome: <INPUT TYPE="text" NAME="nome" SIZE=20
TABINDEX=1>
<BR>Idade: <INPUT TYPE="text" NAME="idade" SIZE=10
TABINDEX=2>
<HR>
<INPUT TYPE="submit" VALUE="Enviar">
<INPUT TYPE="reset" VALUE="Limpar">
</HR>
</FORM>
</BODY>
</HTML>
Ooops...
Onde está problema ?
Debug
Formulário HTML: Form1.html
Apache Tomcat/4.0.6 - HTTP Status 405 - HTTP method POST is not
supported by this URL
type Status report
message HTTP method POST is not supported by this URL
description The specified HTTP method is not allowed for the requested
resource (HTTP method POST is not supported by this URL).
JavaServlets Formulários HTML & Servlets
- 88. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 88
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ChkForm1 extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
String nome = req.getParameter("nome");
int idade = Integer.parseInt (req.getParameter("idade") ) ;
out.println("<HTML>");
out.println("<HEAD><TITLE>Saudação</TITLE></HEAD>");
out.println("<BODY>");
out.println(”Olá, " + nome + “<BR>”);
out.println("Você já viveu, <B> " + AgeToDay(idade) + "</B>");
out.println("</BODY></HTML>");
}
private int AgeToDay (int idade) {
return (int) (idade * 365);
}
}
Onde está problema ?
Servlet: ChkForm1.html
Debug
JavaServlets Formulários HTML & Servlets
- 90. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 90
Arquivo Descritor:
Para tornar a configuração mais simples e declarar quais são
os serviços requerido pelo servlet, escrevemos um documento
(arquivo) no formato XML.
Este documento pode ser usado para fazer várias coisas,
entre elas:
- Nomear um servlet;
- Fazer Mapeamento;
- Fazer Filtros;
- Redirecionar Páginas e
- Passar parâmetros externos.
Nome padrão: web.xml
Localização: dentro da pasta WEB-INF
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>ServletHello</servlet-class>
</servlet>
</web-app>
Neste exemplo, podemos chamar o servlet por
Hello mesmo que o nome da classe seja
ServletHello, veja que o nome do servlet ficou
mais amigável.
JavaServlets Descritor
Exemplo:
- 91. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 91
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>ServletHello</servlet-class>
<init-param>
<param-name>mailwebmaster</param-name>
<param-value>webmaster@webmaster</param-value>
</init-param>
</servlet>
</web-app>
Veja que primeiro declaramos o
nome <param-name> do parâmetro
e depois o valor <param-value>
Tutorial: 1 - Criando arquivo Descritor
Declara que o arquivo é XML
Declara o
DTD do
arquivo
Faz a nomeação do servlet
JavaServlets Descritor
Tutorial: 2 - Salve este arquivo como nome de web.xml
- 92. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 92
Tutorial: 3 - Escrevendo o servlet.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletHello extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
String param = getInitParameter("mailwebmaster");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("<h3>" + param + "</h3>");
out.println("</body>");
out.println("</html>");
}
}
Captura o parâmetro externo
JavaServlets Descritor
- 93. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 93
JavaServlets
Métodos: getInitParameter, getInitParameterNames...
javax.servlet
<<abstract>>
GenericServlet
getInitParameter(name: String): String
getInitParameterNames(): Enumeration
log(message: String)
log(message: String, Throwable: exc)
...
A classe abstrata GenericServlet fornece métodos para
capturar os parâmetros
java.util.Enumeration getInitParameterNames()
Retorna todos os nome dos parâmetros de inicialização como
Enumeration de String ou uma Enumeration vazia se não existir
parâmetros de inicialização.
Métodos:
java.util.Enumeration getInitParameter(String name)
Retorna uma String contendo o valor do parâmetro de inicialização
passado como argumento. Caso o não encontre o parâmetro o valor
será nulo (null).
classe GenericServlet:
public abstract classe GenericServlet
Descritor
- 94. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 94
webapps
teste-servlet
WEB-INF
WebContainer
classes
Aqui você
coloca o
Servlet
contexto
ServletHello.class
web.xml
Tutorial, parte 3 - Deployment:
Para encerrar chame o Servlet, digitando a seguinte URL:
http://localhost:8080/teste-servlet/servlet/Hello
Você poderia chamar o servlet com nome padrão:
http://localhost:8080/teste-servlet/servlet/ServletHello
Faça a distribuição dos arquivos:
Aqui você
coloca o
descritor
JavaServlets Descritor
- 95. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 95
1 - O formulário HTML. Converte.html
JavaServlets Descritor
Exercício
<HTML><HEAD><TITLE>Conversão</TITLE></HEAD>
<BODY>
<H1>Conversão de Real para Dolar:</H1>
<FORM ACTION="/servlet/Conversao" METHOD="Post">
<BR>Valor em Real: <INPUT TYPE="text" NAME="valorReal"
SIZE=20 TABINDEX=1>
<HR>
<INPUT TYPE="submit" VALUE="Converter">
<INPUT TYPE="reset" VALUE="Limpar">
</HR>
</FORM>
</BODY>
</HTML>
- 96. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 96
Este parâmetros externos devem
ser passados para o servlet
2 -Faça arquivo Descritor
Declara que o arquivo é XML
Declara o
DTD do
arquivo
Faz a nomeação do servlet
JavaServlets Descritor
Obs: Salve este arquivo como nome de web.xml
Exercício
- 97. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 97
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletConverte extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
String dataCotacao = getInitParameter("dataCotacao");
double valorDolar = Double.parseDouble( getInitParameter("valorDolar") );
double valorReal = Double.parseDouble(request.getParameter("valorReal") );
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>Conversão</title>");
out.println("</head>");
out.println("<body>");
out.println("<h3>Data cotação do Dólar: " + dataCotacao + "</h3>");
out.println("<h3>Valor do Dolar é de U$: <B>" + valorDolar +
"<b></h3><BR><BR><BR>");
out.println("<h3> Valor em Real R$: " + valorReal + "<b></h3>");
out.println("<h3>Valor em Dolar é de U$: <D>" + conversaoRealToDolar(valorReal,
valorDolar) + "<D></h3>");
out.println("</body>");
out.println("</html>");
}
private double conversaoRealToDolar(double valorReal, double valorDolar){
return valorReal * valorDolar;
}
}
3 - Servlet: ServletConverte.
Captura o parâmetro externo
JavaServlets Descritor
Exercício
- 98. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 98
webapps
ROOT
WEB-INF
WebContainer
classes
Aqui você
coloca o
Servlet
contexto
ServletConverte.class
web.xml
4 - Deployment:
Para encerrar chame o Servlet, digitando a seguinte URL:
http://localhost:8080/Converte.html.
Faça a distribuição dos arquivos:
Aqui você
coloca o
descritor
JavaServlets Descritor
Exercício
- 99. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 99
<servlet>
O elemento <servlet> pode conter os seguintes elementos:
[opcional] <icon>
<servlet-name> declara o nome do servlet
[opcional] <display-name>
[opcional] <description>
<init-param>
<param-name>
<param-value>
[opcional] <description>
<load-on-startup> indica que servlet deve ser carregado
quando uma aplicação web for iniciada.
<security-role-ref> “mapeia” os papéis chamados dentro
de um servlet e o nome do papel definido para aplicações
web.
<role-name> nome do papel usado dentro do servlet
<role-link> o nome do papel definido em elemento
<security-role>
[opcional] <description>
JavaServlets Descritor
<servlet-mapping>
<servlet-mapping> mapeia um servlet para URL padrão
<servlet-name>
<url-pattern>
web.xml
- 100. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 100
JavaServlets Descritor
<session-config>
<servlet-config> Configura uma sessão de uma aplicação
web
<session-timeout>define o valor padrão de timeout
de uma sessão, valor expresso em minutos
<welcome-file-list>
< welcome-file-list> Define uma lista de arquivos “welcome”
<welcome-file> nome do arquivo
<error-page>
<error-page> “Mapeia” um erro HTTP ou uma exception
para um recurso (página de erro)
<error-code> contém código do erro HTTP ou
<location> contém a localização da página de erro
dentro de uma aplicação web
<exception-type> Nome de classe java de exceção
<location> contém a localização da página de erro
dentro de uma aplicação web
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
Exemplo:
web.xml
- 101. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 101
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>ServletHello</servlet-class>
<init-param>
<param-name>mailwebmaster</param-name>
<param-value>webmaster@webmaster</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/alo</url-pattern>
</servlet-mapping>
</web-app>
O nome do servlet é mapeado de .../servlet/Hello
para simplesmente alo.
Veja como ficou a URL chamar o servlet:
http://localhost:8080/teste-servlet/alo
Exemplo: Mapping
JavaServlets Descritor
O elemento <servlet-mapping> pode ser usado para simplificar o
nome de um servlet completo (pacote e nome) ou resolver conflitos
de nomes, ambigüidade.
- 102. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 102
Escrevendo documento XML Boas Práticas:
JavaServlets Descritor
Alguns cuidados que devemos ter quando escrevemos
documentos XML:
- XML é “case-sensitive”, ou seja, sensível as letras maiúsculas
e minúsculas.
- Os elementos devem ser abertos e fechados.
<element> ... </element>
- Verifique os aninhamentos dos elementos, pois, nem sempre
eles são válidos.
- Se possível use ferramenta para validar o documento XML
antes de publicá-lo.
- DTD (Document Type Definition) é responsável pela definição
do formato do documento.
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
- 104. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 104
JavaServlets
Introdução
Quando desenvolvemos uma aplicação Web, uma loja
virtual, por exemplo, precisamos guardar algumas
informações sobre os clientes e/ou visitantes, tais como
preferências, últimas consultas, nome, duração da sessão e
etc.
Entretanto, algumas outras informações, tais como
Número e Validade do Cartão de Crédito, devem ser
mantidas apenas como variáveis de memória enquanto
durar a sessão.
Essas informações, formam um estado de um objeto, logo
podemos concluir que elas são transientes.
Para guardar estas informações podemos utilizar os
“cookies”, que são pequenos arquivos no formato texto,
que é armazenado no computador cliente e recuperado
pelo aplicação quando necessário. Assim podemos manter
o estado das sessões persistentes.
Cookies & Sessões
- 105. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 105
HTTP Servlet, a classe Cookie
JavaServlets
GenericServlet
{abstract}
service()
<<interface>>
HttpServlet
doGet()
doPost()
service()
<<interface>>
HttpServletRequest
getCookie(): Cookie[]
meuServlet
javax.servlet.http
<<interface>>
HttpServletResponse
addCookie(Cookie)
Cookie
name: String
value: int
comment: String
domain: String
path: String
maxAge: int
request response
Cookies & Sessões
- 106. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 106
JavaServlets
Principais métodos:
String getName() - Retorna o nome do Cookie;
String getPath() - Retorna o caminho;
String getValue() - Retorna o valor do cookie;
int getVersion() - Retorna a versão do cookie;
int getMaxAge() - Retorna a idade do cookie, que definida
em segundos;
void setPath(String uri) - Especifica um caminho para o
cookie;
void setMaxAge(int expiry) - Especifica a idade (em
segundos) do cookie;
void setValue(String newValue) - Atribui um novo valor ao
cookie;
void setVersion(int v) - Atribui o número da versão e
Outros métodos: getSecure, getDomain, getComment
setSecure, setDomain, setComment e clone.
Cookies & Sessões
Class Cookie:
public class Cookie extends java.lang.Object implements
java.lang.Cloneable
A classe Cookie é fornecida pelo pacote: javax.servlet.http;
HTTP Servlet, a classe Cookie
- 107. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 107
JavaServlets
Cookie métodos :
Cookie[] getCookies() - Retorna um array contendo todos
objetos Cookies.
Cookies & Sessões
public abstract interface HttpServletRequest
extends ServletRequest
A interface HttpServletRequest é fornecida pelo pacote:
javax.servlet.http;
void addCookie(Cookie cookie): Adiciona um Cookie para
uma resposta
public abstract interface HttpServletResponse
extends ServletResponse
A interface HttpServletResponse é fornecida pelo pacote:
javax.servlet.http;
HTTP Servlet, a classe Cookie
- 108. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 108
JavaServlets
Exemplo:
Cookies & Sessões
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CookieExample extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// print out cookies
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++) {
Cookie c = cookies[i];
String name = c.getName();
String value = c.getValue();
out.println(name + " = " + value);
}
// set a cookie
String name = request.getParamter("cookieName");
if (name != null && name.length() > 0) {
String value = req.getParameter("cookieValue");
Cookie c = new Cookie(name, value);
response.addCookie(c);
}
}
}
Usando Cookies
- 109. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 109
JavaServlets
Mantendo informações sobre uma sessão:
Quando o usuário faz a primeira chamada ao servidor uma
sessão é criada gerando uma identificação única,
veja exemplo: ID 8E4A1E34E91384AA18362CF5A856049B
Este ID é mantido durante a navegação do usuário pelo site,
até que ele feche o browser, troque de URL ou o tempo de
vida da sessão expire.
A classe HttpSession implementa esta funcionalidade.
O método getId() retorna uma string com o identificador único
da sessão.
Os valores de uma sessão são armazenados na forma de
nome e valor. Use o método setAttribute (nome,valor) para
guardar o ID. Para recupera-la use o método
getAttribute(nome)
Sessões:
Algumas aplicações web, tais de e-commerce, como uma Loja
Virtual, ou de serviços, como home banking.
Precisam manter informações sobre o usuário enquanto ele
estiver fazendo acesso ao site ou enquanto durar a sessão
(geralmente usamos os cookies para determinar quanto
tempo pode durar uma sessão).
Em loja virtual é necessário manter (o estado) da cesta de
compra do usuário enquanto ele navega pelo site...
Cookies & Sessões
- 110. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 110
JavaServlets
Principais métodos:
Object getAttribute(java.lang.String name) - Retorna um objeto
especificada pelo nome ou null se não encontrar o objeto
java.util.Enumeration getAttributeNames() - Retorna uma Enumeration
de String contendo os nomes dos objetos da sessão
boolean isNew() - Retorna um valor lógico, se “true” a sessão é nova
String getId() - Retorna um string contendo o identificador único da
sessão.
void removeAttribute(String name) - Remove um objeto da sessão
void setAttribute(java.lang.String name, java.lang.Object value) Atribui
um valor ao objeto especificado pelo nome.
A interface HttpSession
Cookies & Sessões
Interface HttpSession:
public abstract interface HttpSession
interface HttpSession é fornecida pelo pacote: javax.servlet.http;
- 111. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 111
A interface HttpSession
JavaServlets
GenericServlet
{abstract}
service()
<<interface>>
HttpServlet
doGet()
doPost()
service()
<<interface>>
HttpServletRequest
getSession(create: boolean)
getSession()
meuServlet
javax.servlet.http
<<interface>>
HttpSession
getID: String
isNew: boolena
getAttribute(name): String
setAttribute(name, value)
remveAttribute(name)
request
sessoin
Cookies & Sessões
- 112. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 112
JavaServlets
Sessões métodos :
Cookies & Sessões
public abstract interface HttpServletRequest
extends ServletRequest
A interface HttpServletRequest é fornecida pelo pacote:
javax.servlet.http;
HttpSession getSession()
Retorna a sessão corrente associada a uma requisição ou se a
requisição não tem uma sessão então ela é criada.
HttpSession getSession(boolean create)
Retorna a sessão corrente associada a uma requisição ou se a
requisição não tem uma sessão então ela é criada, se argumento lógico
for true.
A interface HttpSession
- 113. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 113
JavaServlets
Sessões. Time Out
Cookies & Sessões
<session-config>
<sesson-timeout>10</session-timeout>
</session-config>
Você pode definir o ciclo de vida de sessão no arquivo descritor:
Tempo expresso em minutos
- 114. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 114
JavaServlets
Exemplo: Servlet
Cookies & Sessões
import java.io.*;
import java.util.Enumeration;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletSession extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Pedido pedido;
HttpSession session = request.getSession(true);
String codigo = request.getParameter("codigo");
String produto = request.getParameter("produto");
int quantidade = Integer.parseInt(request.getParameter("quantidade"));
pedido = new Pedido(produto, quantidade);
session.setAttribute(codigo, pedido);
out.println("ID " + session.getId());
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
Pedido p = (Pedido) session.getAttribute(name);
out.println("Produto: " + p.getProduto());
out.println("Quantidade: " + p.getQuantidade());
}
}
}
Usando Sessão
- 115. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 115
JavaServlets
Exemplo: Formulário HTML (FormSession.html)
Cookies & Sessões
<HTML><HEAD><TITLE>Pedido</TITLE></HEAD>
<BODY>
<H1>Preencha os campos:</H1>
<FORM ACTION="/servlet/ServletSession" METHOD="Post">
<BR> Código: <INPUT TYPE="text" NAME="codigo" SIZE=10
TABINDEX=1>
<BR> Produto: <INPUT TYPE="text" NAME="produto" SIZE=30
TABINDEX=1>
<BR>Quantidade: <INPUT TYPE="text" NAME="quantidade" SIZE=5
TABINDEX=2>
<HR>
<INPUT TYPE="submit" VALUE="Adicionar">
<INPUT TYPE="reset" VALUE="Limpar">
</HR>
</FORM>
</BODY>
</HTML>
Exemplo: Entrada de dados
Código Produto Quantidade
100 CD Limp Park 1
200 Livro: JSP in Action 2
Usando Sessão
- 117. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 117
JavaServlets
Principais métodos:
void forward(ServletRequest request, ServletResponse response)
“Passa a diante” uma requesição de servlet para outro recurso (servlet,
JSP página ou página HTML).
void include(ServletRequest request, ServletResponse response)
Inclui o conteúdo de um recurso (servlet, JSP página ou página HTML)
em uma resposta.
Interface RequestDispatcher: forward e include
Interface RequestDispatcher:
public abstract interface RequestDispatcher
interface RequestDispatcher é fornecida pelo pacote: javax.servlet.
Exemplos: forward e include
RequestDispatcher rd =
getServletContext().getRequestDispatcher("/servlet/GetServlet");
rd.forward(httpservletrequest, httpservletresponse);
RequestDispatcher rd =
getServletContext().getRequestDispatcher("/servlet/GetServletInclude");
if (rd!=null)
try {
rd.include(httpservletrequest, httpservletresponse);
} catch (Exception e) {
}
Despachar & Redirecionar
- 118. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 118
JavaServlets
forward
RequestDispatcher rd =
getServletContext().getRequestDispatcher("/servlet/TesteB");
rd.forward(httpservletrequest, httpservletresponse);
RequestDispatcher rd =
getServletContext().getRequestDispatcher("/servlet/TesteD");
rd.include(httpservletrequest, httpservletresponse);
TesteA
Requisição HTTP: servletTesteA
TesteB
Resposta HTTP
include
TesteC
Requisição HTTP: servletTesteC
TesteD
Resposta HTTP
Despachar & Redirecionar
- 119. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 119
JavaServlets
Redirecionar: sendRedirect e sendError
Exemplo: response.sendRedirect(”http://www.sun.com/index.xml");
Podemos passar o controle a uma URL (de forma absoluta), não
que precisa fazer parte da aplicação. Geralmente utilizado para
redirecionar a outra tecnologia, tais como: chamar página
PHP, ASP e etc.
void sendRedirect(java.lang.String location)
void sendError(int sc)
void sendError(int sc, java.lang.String msg)
Métodos para redirecionamento:
public abstract interface HttpServletResponse
extends ServletResponse
A interface HttpServletResponse é fornecida pelo pacote:
javax.servlet.http;
Exemplo: response.sendError(404, “Page not found”);
O método sendError permite que enviemos uma mensagem
(string) ao cliente, com o código de erro:
Despachar & Redirecionar
- 121. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 121
JavaServlets
Introdução
Aplicação WEB
Uma aplicação WEB é uma coleção de diversos recursos, tais
como páginas HTML, imagens (jpg, gif, png), arquivos xml,
servlets, páginas JSPs e componentes javabeans, classes entre
outros objetos.
O arquivo descritor, web.xml, é utilizado para especificar a
estrutura e os serviços usados pela aplicação.
Dentro de aplicação web deve existir uma área comum de
variáveis que pode ser compartilhada por todos os recursos ou
pelo maioria deles.
Este lugar comum chamamos de contexto. O objeto
ServletContext representa a aplicação em execução.
Servlet Context
- 122. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 122
JavaServlets
ServletContext
ServletContext representa o contexto para uma aplicação WEB
Principais características:
- Ele permite que se passe o controle para qualquer outro
recurso dentro da mesma aplicação.
- Existe um mecanismo centralizado de logs, disponível aos
servlets e JSP da aplicação
- Há uma área para armazenagem de variáveis
Servlet Context
javax.servlet.ServletContext javax.servlet.ServletContext
context = getServletContext();
O método pode ser chamado a partir de qualquer
servlet, e está disponível em uma variável JSP também
sempre disponível.
Este método é criado quando a aplicação WEB é carregada e
destruído quando a aplicada web for descarregada.
Diferentes Servlets e JSPs da mesma aplicação WEB
compartilham o mesmo contexto.
- 123. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 123
JavaServlets Servlet Context
A interface ServletContex
<<abstract>>
GenericServlet
getServletContext(): ServletContext
log(message: String)
log(message: String, Throwable: exc)
javax.servlet
<<interface>>
ServletContext
getInitParameter(name: String): String
getInitParameterNames(): Enumeration
getAttribute(name: String): Object
setAttribute(name: String, value: Objet)
getAttributeNames(): Enumeration
getResource(path): URL
getResourceAsStream(path): InputStream
log(message: String)
log(message: String, Throwable: exc)
- 124. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 124
JavaServlets
Principais métodos:
Interface ServletContext
public abstract interface ServletContext
interface ServletContext é fornecida pelo pacote: javax.servlet.
java.util.Enumeration getInitParameterNames()
Retorna todo os nome dos parâmetros de inicialização como
Enumeration de String ou uma Enumeration
vazia se não parâmetros de inicialização.
java.lang.Object getAttribute(java.lang.String name)
java.util.Enumeration getAttributeNames()
ServletContext getContext(java.lang.String uripath)
int getMajorVersion()
java.lang.String getMimeType(java.lang.String file)
int getMinorVersion()
RequestDispatcher getNamedDispatcher(java.lang.String name)
java.lang.String getRealPath(java.lang.String path)
RequestDispatcher getRequestDispatcher(java.lang.String path)
java.net.URL getResource(java.lang.String path)
java.io.InputStream getResourceAsStream(java.lang.String path)
java.util.Set getResourcePaths(java.lang.String path)
java.lang.String getServerInfo()
java.lang.String getServletContextName()
void log(java.lang.String msg)
void log(java.lang.String message, java.lang.Throwable throwable)
void removeAttribute(java.lang.String name)
void setAttribute(java.lang.String name, java.lang.Object object)
Servlet Context
A interface ServletContex
- 125. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 125
JavaServlets Servlet Context
Exemplo: Contexto de parâmetro de inicialização
<web-app>
<context-param>
<param-name> catalogoProduto </ param-name>
<param-value>/WEB-INF/catalogo.txt</ param-value>
...
</context-param>
</web-app>>
Recuperando os parâmetros:
ServletContext ctxt = sce.getServletContext();
String catalogoProduto = ctxt.getInitParameter(“catalogo.txt”);
Gravando o log:
ctxt.log(“parâmetro catalogoProduto inicializado”);
Trabalhando com atributos. Atribuição e Recuperação:
ctxt.setAttribute(“catalogo”, catalogoProduto);
ctxt.getAtrribute(“catalogo”);
Os parâmetros de inicialização são informados, formato nome
e valor, no arquivo descritor (web.xml)
- 126. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 126
JavaServlets
Exemplo: Servlet. Gravando atributo
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CallServletAtrib extends HttpServlet
{
public void doGet(HttpServletRequest httpservletrequest,
HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
RequestDispatcher rd =
getServletContext().getRequestDispatcher("/servlet/GetServletAtrib");
getServletContext().setAttribute ("nome", "Duke");
rd.forward(httpservletrequest, httpservletresponse);
if (rd!=null)
System.out.println(rd);
}
}
Servlet Context
Grava um atributo
- 127. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 127
JavaServlets
Exemplo: Servlet. Recuperando atributo
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.http.*;
public class GetServletAtrib extends HttpServlet
{
public void doGet(HttpServletRequest httpservletrequest,
HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
httpservletresponse.setContentType("text/html");
PrintWriter printwriter = httpservletresponse.getWriter();
StringBuffer stringbuffer = new StringBuffer();
String value = (String) getServletContext().getAttribute ("nome");
stringbuffer.append("<HTML><HEAD><TITLE>n");
stringbuffer.append("A Simple Servlet Examplen");
stringbuffer.append("</TITLE></HEAD><BODY>n");
stringbuffer.append("<H1>Welcome to Servlets!" + value + </H1>n");
stringbuffer.append("</BODY></HTML>");
printwriter.println(stringbuffer.toString());
printwriter.close();
}
}
Servlet Context
Recupera o atributo
- 128. Versão: 3.0
CapacitaçãodeDesenvolvedorJava Java Web
rildo.santos@etecnologia.com.br
Todos os direitos reservados e protegidos © 2006 e 2010 128
JavaServlets
A interface ServletConfig
Interface ServletConfig
public abstract interface ServletConfig
Servlet Context
A responsabilidade da interface ServletConfig é fornecer um
meio para que um servlet possa ter acesso a informações
definidas no web.xml durante o processo de inicialização.
A interface ServletConfig é parte do pacote: javax.servlet
Principais métodos:
String getInitParameter(String nome): lê um parâmetro
de inicialização <init-param> do web.xml
Enumeration getInitParameterNames(): obtém os nomes
de todos os parâmetros de inicialização disponíveis
Os métodos de ServletConfig devem ser chamados no
método init(), do servlet
Exemplo: init(ServletConfig)
public void init(ServletConfig config) throws ServletException
{
String p = config.getInitParameter(“name”);
}