O documento discute servlets, Java Server Pages (JSP) e o ciclo de vida de um servlet. Servlets estendem a funcionalidade de um servidor web para fornecer acesso seguro a sites e gerar dinamicamente documentos personalizados. JSP permite aos desenvolvedores criar páginas dinâmicas com código Java. O ciclo de vida de um servlet inclui métodos como init(), service() e destroy().
2. Servlets
• Um servlet estende a funcionalidade de um
servidor, como um servidor Web que serve
páginas da Web para um navegador do usuário
com o protocolo HTTP.
• Os pacotes javax.servlet, javax.jsp e
javax.servlet.http fornecem as classes e
interfaces para definir os servlets.
• Os pacotes javax.servlet.jsp,
javax.servlet.jsp.tagex fornecem classes e
interfaces que estendem as capcidades dos
servlet para Java Server Pages (JSP)
3. Servlets
• JSP permite que desenvolvedores de páginas web
criem páginas que encapsulam a funcionalidade Java
e até mesmo escrevam scriptlets do código Java real
diretamente na página.
• Os servlets são eficientes para desenvolver soluções
baseadas na Web que ajudam a fornecer acesso
seguro a um site, interagir com bancos de dados em
favor de um cliente, gerar dinamicamente
documentos personalizados de XHTML a ser exibidos
por navegadores e manter informações de sessão
exclusivas de cada cliente.
4. Clientes Magros
• São aplicativos que fornecem apresentação, mas não
processam dados, reqeurendo assim menos recursos de
computação
• O servidor é responsável pelo acesso ao banco de
dados.
• Os clientes conectam-se ao servidor utilizando
protocolos-padrão disponíveis na maioria das
plataformas clientes
• O código da lógica de apresentação para gerar conteúdo
dinâmico pode ser escrito uma vez e residir no servidor
para acesso pelos clientes para permitir que os
programadores criem clientes magros eficientes.
5. Tomcat
• JCP – Java Community Process: comunidade
java responsável pelo desenvolvimento das
especificações (APIs) Java.
• A implementação de referência para JSP e
Servlet é feita pela Apache Software
Foundation como parte do Jakarta Project.
• Um dos suprojetos do Jakarta é o TOMCAT que
é a implementação oficial de referência dos
padrões JSPs e Servlets
6. Ciclo de Vida de um Servlet
• Um ciclo de vida de um servlet inicia quando o
contêiner de servlets o carrega na memória.
• Antes que o servlet possa tratar essa
solicitação, o contêiner invoca o método INIT
do servlet.
• Depois que INIT completa a execução, o
servlet pode responder à sua primeira
solicitação
7. Ciclo de Vida de um Servlet
• Todas as solicitações são tratadas por um
método SERVICE do servlet, que recebe a
solicitação, processa-a e envia uma resposta
ao cliente
• Durante o ciclo de vida de um servlet, o
método SERVICE é chamado uma vez por
solicitação
8. Ciclo de Vida de um Servlet
• Cada nova solicitação é em geral tratada em
uma nova thread separada de execução e
gerenciada pelo contêiner de servlets na
qual o método SERVICE executa.
• Quando o contêiner de servlets termina o
servlet, o método DESTROY do servlet é
chamado para liberar os recursos do servlet.
9. Ciclo de Vida de um Servlet
MÉTODO DESCRIÇÃO
VOID INIT
(SERVLETCONFIG
CONFIG)
O contêiner de servlets chama esse método
uma vez durante o ciclo de execução de um
servlet para inicializar o servlet. O argumento
SERVLETCONFIG é fornecido pelo contêiner
de servlets que executa o servlet
SERVLETCONFIG
GETSERVLETCONFIG()
Este método retorna uma referência para um
objeto que implementa a interface
SERVLETCONFIG. Esse objeto fornece acesso
às informações de configuração do servlet,
como seus parâmetros de inicialização e
SERVLECONTEXT, que fornece ao servlet
acesso ao seu ambiente
10. Ciclo de Vida de um Servlet
MÉTODO DESCRIÇÃO
STRING
GETSERVLETINFO()
Este método é definido por um programador de
servlet para retornar uma string que contém
informações do servlet como o autor e a versão do
servlet
VOID SERVICE
(SERVLETREQUEST
REQUEST,
SERVLETRESPONSE
RESPONSE)
O contêiner de servlets chama este método para
responder a uma solicitação do cliente para o servlet
VOID DESTROY() Este método de limpeza é chamado quando um
servlet é terminado pelo seus contêiner de servlets.
Os recursos utilizados pelo servlet, como abrir
arquivos ou abrir conexões ao banco de dados,
devem ser desalocados aqui
11. Servlets
• Os pacotes de servlet definem duas classes
ABSTRACT que implementam a interface
SERVLET: GENERICSERVLET e
HTTPSERVLET
• Essas classes fornecem implementações
padrão de alguns métodos SERVLET
• A maioria dos servlets estende
GENERCSERVLET ou HTTPSERVLET
12. Servlets
• A maioria dos servlets sobrescreve alguns
ou todos os métodos de GENERICSERVLET
e HTTPSERVLET
• GENERICSERVLET é um servlet
independente de protocolo
• HTTPSERVLET utiliza o protocolo HTTP para
trocar as informações entre o servidor e o
cliente
13. Servlets
• O método chave em casa servlet é o SERVICE,
que aceita um objeto SERVLETRESPONSE e
SERVLET REQUEST
• Esses objetos fornecem acesso a fluxos de
entrada e saída que permitem aos servlets ler
dados do cliente e enviar dados ao cliente
• Esses fluxos podem ser baseados em bytes ou
em caracteres
14. MÉTODOS DA CLASSE HTTPSERVLET
MÉTODO DESCRIÇÃO
DODELTE Chamado em resposta a uma solicitação de HTTP DELETE.
Utilizada para excluir um arquivo de um servidor. Isso talvez
não esteja disponível em alguns servidores por causa dos
riscos inerentes de sergurança.
DOHEAD Chamado em resposta a uma solicitação de HTTP HEAD.
Utilizada quando o cliente quer somente os cabeçalhos da
resposta, como o tipo do seu conteúdo e o comprimento do
conteúdo.
DOOPTIONS Chamado em resposta a uma solicitação de HTTP OPTIONS.
Isso retorna as informações ao cliente indicando as opções de
HTTP suportadas pelo servidor, como a versão do HTTP e os
métodos de solicitação que o servidor suporta.
15. MÉTODOS DA CLASSE HTTPSERVLET
MÉTODO DESCRIÇÃO
DOPUT Chamado em resposta a uma solicitação HTTP PUT.
Essa solicitação é normalmente utilizada para
armazenar um arquivo no servidor. Isso talvez não
esteja disponível em alguns servidores por causa dos
riscos inerentes de segurança.
DOTRACE Chamado em resposta a uma solicitação HTTP
TRACE. Essa solicitação é normalmente utilizada
para depuração. A implementação desse método
retorna automaticamente um documento de HTML
para o cliente contendo as informações de
cabeçalho da solicitação
16. Métodos HTTPSERVLETREQUEST
MÉTODO DESCRIÇÃO
STRING
GETPARAMETER(
STRING NAME )
Obtém o valor de um parâmetro enviado ao
servlet como parte de uma solicitação get ou
post. O argumento name representa o nome do
parâmetro
ENUMERATION
GETPARAMENTERNA
MES()
Retorna os nomes de todos os parâmetros
enviados para o servlet como parte de uma
solicitação post
STRING[]
GETPARAMETERVALU
ES( STRING NAME)
Para um parâmetro com múltiplos valores, este
método retorna um array de strings contendo os
valores para um parâmetro especificado de
servlet
17. Métodos HTTPSERVLETREQUEST
MÉTODO DESCRIÇÃO
COOKIE[]
GETCOOKIES()
Retorna um array de objetos COOKIE armazenados no
cliente pelo servidor. Objetos COOKIE podem ser
utilizados para identificar unicamente os clientes para o
servlet
HTTPSESSION
GETSESSION( BOOLEAN
CREATE )
Retorna um objeto HTTPSESSION associado com a atual
sessão de navegação do cliente. Este método pode
criar um objeto HTTPSESSION( ARGUMENTO TRUE ) se
ainda não existir um para o cliente. Objetos
HTTPSESSION e COOKIE são utilizados de maneira
semelhante para clientes unicamente identificados
19. Métodos HTTPSERVLETRESPONSE
MÉTODO DESCRIÇÃO
VOID ADDCOOKIE(
COOKIE COOKIE)
Utilizado para adicionar um COOKIE ao cabeçalho
da resposta para o cliente. A idade máxima do
COOKIE e se COOKIES estão ativados no cliente
determina se COOKIES são armazenados no
cliente.
SERVLETOUTPUTSTREAM
GETOUTPUTSTREAM()
Obtém um fluxo de saída baseado em bytes para
enviar dados binários ao cliente.
PRINTWRITER
GETWRITER()
Obtém um fluxo de saída baseado em caracteres
para enviar dados de texto ao cliente
20. Métodos HTTPSERVLETRESPONSE
MÉTODO DESCRIÇÃO
VOID
SETCONTENTTYPE(
STRING TYPE )
Especifica o tipo de conteúdo da resposta para o
navegador. O tipo de conteúdo ajuda o navegador a
determinar como exibir os dados. O tipo de
conteúdo também é conhecido como tipo de dados
MIME.
STRING
GETCONTENTTYPE()
Obtém o tipo de conteúdo da resposta