LINGUAGEM DE
PROGRAMAÇÃO III
SERVLETS
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)
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.
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.
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
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
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
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.
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
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
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
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
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
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.
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
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
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
Métodos HTTPSERVLETREQUEST
MÉTODO DESCRIÇÃO
STRING
GETLOCALADDR()
Obtém o endereço IP em que a solicitação foi recebida
INT GETLOCALPORT() Obtém o número de porta do IP em que a solicitação
foi recebida
STRING
GETLOCALNAME()
Obtém o nome de host em que a solicitação foi
recebida
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
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

Servlets

  • 1.
  • 2.
    Servlets • Um servletestende 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 permiteque 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ãoaplicativos 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 Vidade 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 Vidade 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 Vidade 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 Vidade 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 Vidade 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 pacotesde 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 maioriados 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étodochave 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 CLASSEHTTPSERVLET 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 CLASSEHTTPSERVLET 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( STRINGNAME ) 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() Retornaum 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
  • 18.
    Métodos HTTPSERVLETREQUEST MÉTODO DESCRIÇÃO STRING GETLOCALADDR() Obtémo endereço IP em que a solicitação foi recebida INT GETLOCALPORT() Obtém o número de porta do IP em que a solicitação foi recebida STRING GETLOCALNAME() Obtém o nome de host em que a solicitação foi recebida
  • 19.
    Métodos HTTPSERVLETRESPONSE MÉTODO DESCRIÇÃO VOIDADDCOOKIE( 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( STRINGTYPE ) 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