Java Avan - PowerPoint PPT Presentation

About This Presentation
Title:

Java Avan

Description:

Title: Java Avan ado Subject: Servlets Author: Guilherme Kely de Melo Oliveira Keywords: Servlets, J2EE, Threads, Filas, Sessions, Cookies Last modified by – PowerPoint PPT presentation

Number of Views:165
Avg rating:3.0/5.0
Slides: 93
Provided by: Guilhe1
Category:
Tags: avan | java | servlet

less

Transcript and Presenter's Notes

Title: Java Avan


1
Java Avançado
Material cedido por Daniel Arraes
Pereira dap_at_cin.ufpe.br
  • Java Servlets

Guilherme Kely de Melo Oliveira gkmo_at_cin.ufpe.br
Jobson Ronan Jeronimo da Silva jrjs_at_cin.ufpe.br
2
Servlets
  • É a tecnologia Java em resposta à CGI (Common
    Gateway Interface). São programas que rodam no
    servidor Web, atuando como camada intermediária
    entre uma requisição vinda de um cliente HTTP e
    banco de dados ou aplicações no servidor Web.

Common Gateway Interface É uma especificação que
permite que um programa, escrito em uma linguagem
de programação qualquer, possa responder a
requisições HTTP encaminhadas por um servidor web.
3
Servlets
  • Suas tarefas são
  • Ler todos os dados enviados pelo usuário.
  • Gerar resultados.
  • Formatar os resultados.
  • Ajustar os parâmetros da resposta HTTP.
  • Enviar a resposta ao cliente.

4
Servlets
  • Por que usá-los?
  • Facilidade de uso.
  • Facilidade de desenvolvimento.
  • Maturidade da linguagem Java. Servlets são
    classes Java.
  • Eficientes
  • Independentes de browsers.
  • Robustez, segurança, Multiplataforma, possuem
    praticamente toda a plataforma Java disponível.

5
Servlets
  • Como usá-los?
  • Escreve uma classe que extenda a classe Servlet
    sobrescrevendo os métodos relativos ao tipos de
    requisição.
  • Cria a estrutura de dirétorios necessária e faz o
    deploy do servlet em tal estrutura.
  • Realiza o mapeamento do servlet em uma(s) URL
    através do deployment descriptor da aplicação

6
Servlet Hello World
  • public class HelloWorldServlet extends
    HttpServlet
  • protected void doGet(HttpServletRequest
    request,

  • HttpServletResponse response)
  • throws ServletException,
    IOException
  • response.setContentType("text/html")
  • PrintWriter out response.getWriter()
  • out.println("lthtmlgtltheadgtlttitlegtHilt/titlegt
    lt/headgt")
  • out.println("ltbodygt")
  • out.println("Hello World!!")
  • out.println("lt/bodygt")
  • out.println("lt/htmlgt")
  • out.close()

7
Servlet Hello World - Deploy
  • webapps
  • ROOT Contexto principal. URL default.
  • Nome do contexto
  • Arquivos JSP
  • META-INF
  • WEB-INF
  • classes Classes da aplicação (Servlets, ...)
  • lib bibliotecas específicas da aplicação.
    .jar.
  • Deployment Descriptor (web.xml)

8
Servlet Hello WorldDeployment Descriptor
(web.xml)
  • Arquivo que faz o mapeamento entre URLs e
    Servlets além de configurações de segurança,
    eventos, filtros, ...

9
Servlet Hello WorldDeployment Descriptor
(web.xml)
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltweb-app id"WebApp_ID" version"2.4"
    xmlns"http//java.sun.com/xml/ns/j2ee"
    xmlnsxsi"http//www.w3.org/2001/XMLSchema-instan
    ce" xsischemaLocation"http//java.sun.com/xml/ns
    /j2ee http//java.sun.com/xml/ns/j2ee/web-app_2_4.
    xsd"gt
  • ltdisplay-namegtHelloWorldlt/display-namegt
  • ltservletgt
  • ltdescriptiongtlt/descriptiongt
  • ltdisplay-namegtHelloWorldServletlt/display-namegt
  • ltservlet-namegtHelloWorldServletlt/servlet-namegt
  • ltservlet-classgtHelloWorldServletlt/servlet-classgt
  • lt/servletgt
  • ltservlet-mappinggt
  • ltservlet-namegtHelloWorldServletlt/servlet-namegt
  • lturl-patterngt/HelloWorldServletlt/url-patterngt
  • lt/servlet-mappinggt
  • ltwelcome-file-listgt
  • ltwelcome-filegtindex.htmlt/welcome-filegt
  • ltwelcome-filegtindex.jsplt/welcome-filegt
  • lt/welcome-file-listgt
  • lt/web-appgt

10
Servlet Hello World
  • Executando
  • http//localhost8080/HelloWorld/HelloWorldServlet

11
Ciclo de vida de um Servlet
  • Antes que o Servlet esteja pronto para atender as
    requisições do cliente, o container precisa
    realizar algumas tarefas para levar o Servlet até
    um estado no qual este possa atender tais
    requisições.

12
Ciclo de vida de um Servlet
13
Ciclo de Vida de Um Servlet
Método Descrição
void init(ServletConfig) Invocado pelo container para iniciar o servlet. Recebe parâmetros especificados no deployment descriptor da aplicação
void service(ServletRequest, ServletResponse) Invocado pelo container para servir requisições dos clientes. Ele é quem na verdade intercepta as chamadas. Delega essas aos métodos correspondentes (doGet, doPost, ...)
void destroy( ) Invocado pelo container quando decide descarregar o servlet.
14
Método service()
15
A interface ServletConfig
16
Parâmetros de inicialização
  • ltweb-appgt
  • ltservletgt
  • ltservlet-namegtexemplolt/servlet-namegt
  • ltservlet-classgtcurso.ExemploServletlt/servlet-c
    lassgt
  • ltinit-paramgt
  • ltparam-namegtJDBCDriverlt/param-namegt
  • ltparam-valuegtsun.jdbc.odbc.JdbcOdbcDriverlt
    /param-valuegt
  • lt/init-paramgt
  • ltload-on-startupgt1lt/load-on-startupgt //
    preloading
  • lt/servletgt
  • lt/web-appgt

17
Servlets e requisições
  • Suportam todos os tipos de requisições. Mapeadas
    em chamadas de métodos na instancia do Servlet em
    questão.
  • GET doGet(...)
  • POST doPost(...)
  • PUT doPut(...)
  • DELETE doDelete(...)
  • TRACE doTrace(...)
  • HEAD doHead(...)
  • OPTIONS doOptions(...)

18
Servlets e requisições
Características GET POST
Tipo de dados Texto Texto ou binário
Quantidade de dados Máximo de 255 caracteres Ilimitado
Visibilidade Dados fazem parte da URL e podem ser vistos Dados não fazem parte da URL e sim do corpo da mensagem. Não podem ser vistos
19
Servlets e requisições
  • Exemplos
  • GET
  • http//www.cin.ufpe.br/servlet/ServletProcurar?nu
    mero12codigo1
  • POST
  • ltform methodPOST actionhttp//www.cin.ufpe.br
    /servlet/ServletProcurargt
  • ltinput typetext namenumerogt
  • ltinput typetext namecodigogt
  • ltinput typesubmitgt
  • lt/formgt

20
Servlets e requisições analisando
  • Interface ServletRequest
  • Provê métodos de acesso ao conteúdo da requisição
    que são relevantes a qualquer protocolo.
  • Pacote javax.servlet.
  • Interface HttpServletRequest
  • Extende ServletRequest
  • Provê métodos relativos ao protocolo HTTP.
  • Pacote javax.servlet.http.

21
ServletRequest
Método Descrição
String getParameter(String paramName) Retorna o valor associado ao determinado parâmetro.
String getParameterValues(String name) Retorna todos os valores associados ao determinado parâmetro. (List boxes, Check boxes)
Enumeration getParameterNames() Retorna os nomes dos parâmetros passados na requisição.
22
HttpServletRequest
Método Descrição
String getHeader(String headerName) Retorna um dos valores associados ao Header.
Enumeration getHeaderValues(String headerName) Retorna todos os valores associados ao Header
Enumeration getHeaderNames() Retorna os nomes dos Headers.
23
Servlets e requisições Exemplo
  • protected void doGet(HttpServletRequest
    request,
  • HttpServletResponse
    response)
  • throws
    ServletException
  • String nome request.getParameter(name)
  • int idade Integer.parseInt(request.getPa
    rameter(age))
  • fachada.cadastrarCliente(new
    Cliente(nome, idade))
  • response.sendRedirect(sucesso.jsp)

24
Prática 1
  • Escreva um servlet que receba o nome e o telefone
    do usuário e retorne tais dados formatados em uma
    string passada ao servlet como parâmetro de
    inicialização
  • Use o método estático format da classe String

25
Servlets - Enviando respostas
  • Interface ServletResponse
  • Provê métodos de resposta que são relevantes a
    qualquer protocolo.
  • Pacote javax.servlet.
  • Interface HttpServletResponse
  • Extende ServletResponse
  • Provê métodos relativos ao protocolo HTTP.
  • Pacote javax.servlet.http.

26
ServletResponse
Método Descrição
PrintWriter getWriter() Retorna um java.io.PrintWriter, que pode ser usado para enviar texto ao cliente.
ServletOutputStream getOutputStream() Retorna um javax.servlet.ServletOutputStream, que pode ser usado para enviar dados binários ao cliente.
void setContentType(String type) Usado para ajustar o tipo do conteúdo da resposta. Ex text/html, image/jpeg, application/jar
27
HttpServletResponse
Método Descrição
void setXXXHeader(...) Seta pares nome / valor para o Header. (String, Inteiros, Datas)
boolean containsHeader(String name) Retorna se um header com este nome já está setado.
void sendRedirect(String location) Redireciona a chamada à URL especificada.
28
Servlets Enviando RepostasExemplo
  • protected void doGet(HttpServletRequest req,
  • HttpServletResponse res)
  • throws ServletException,
    IOException
  • res.setContentType("application/jar")
  • File f new File("test.jar")
  • byte bytearray new byte(int) f.length()
  • FileInputStream is new FileInputStream(f)
  • is.read(bytearray)
  • OutputStream os res.getOutputStream()
  • os.write(bytearray)
  • os.flush()

29
Prática 2
  • Crie um servlet que retorne uma imagem.

30
Contextos
  • O contexto de uma aplicação é, fisicamente, o
    conjunto de componentes, arquivos recursos que a
    compõem. (dentro do diretório do contexto).
  • Toda aplicação web deve possui um contexto
    único.
  • http//localhost8080/contexto/hello
  • No caso da API de J2EE, os contextos são
    representados pela classe ServletContext.

31
ServletContext
  • Classe que representa o contexto de uma
    aplicação.
  • Serve para comunicação entre servlets da mesma
    aplicação (através do próprio contexto) e
    servlets de aplicações diferentes (acessando
    diferentes contextos) entre outras
    funcionalidades.

32
ServletContext
Método Descrição
Object getAttribute(String name) Retorna o objeto mapeado ao nome passado como parâmetro.
void setAttribute(String name, Object value) Associa um objeto a um nome no contexto.
Enumeration getAttibuteNames() Lista os nomes de todos os atributos presentes no contexto.
33
ServletContext
Método Descrição
Enumeration getInitParameterNames() Retorna o nome de todos os parâmetros de inicialização.
URL getResource(String path) Retorna um recurso da aplicação. Podem acessar arquivos dentro de .jar, .war... Livre do sistema de arquivos
InputStream getResourceAsStream(String path) Retorna um recurso da aplicação. Podem acessar arquivos dentro de .jar, .war... Livre do sistema de arquivos
34
ServletContext
Método Descrição
ServletContext getContext(String uri) Retorna o contexto da URI passada como parâmetro.
String getServerInfo() Retorna uma string contendo informações sobre o container web.
void log(String msg, Throwable t) Loga uma exceção com uma devida mensagem.
35
ServletContext
Método Descrição
String getMimeType(String file) Retorna o mime do arquivo especificado ou null se o mime não eh conhecido
String getRealPath(String path) Retorna uma string contendo o caminho real do caminho relativo passado como parâmetro.
36
Interface ServletContext
  • As maneiras mais comuns de acessá-la são
  • Através da requisição request.getServletConte
    xt()
  • Através do próprio servlet
    this.getServletContext()
  • Através da configuração config.getServletCont
    ext()

37
Prática 3
  • Mude o servlet do exercício passado para que este
    carregue a image como um recurso do contexto e
    para que descubra o mime da mesma em tempo de
    execução.

38
Sessões Introdução
  • Motivação
  • Guardar informações entre requisições de um
    cliente
  • Problema
  • HTTP não mantém estado.
  • Soluções.
  • Campos ocultos em formulário.
  • Cookies
  • Reescrita de URLs
  • Sessões

39
Sessões
  • É uma série de interações request-response sem
    interrupções, ou seja, para cada requisição parte
    da sessão, o servidor pode identificar que a
    requisição vem do mesmo cliente
  • Características
  • Armazenadas no lado do servidor.
  • Possibilidade de se armazenar objetos Java.
  • Única de cada cliente.
  • Normalmente implementadas indiretamente através
    de Cookies ou reescrita de URLs.
  • Representada pela classe HttpSession

40
HttpSession
  • Classe que representa uma sessão.
  • Criação / Aquisição
  • HttpSession s request.getSession(boolean
    create)
  • create true se a sessão não existir, esta é
    criada e depois retornada caso exista é,
    simplesmente, retornada.
  • create false se a sessão não existir, retorna
    null caso exista retorna a sessão existente.

41
HttpSession Exemplo
  • protected void doGet(HttpServletRequest request,
  • HttpServletResponse
    response)
  • throws ServletException
  • HttpSession session request.getSession(t
    rue)
  • Usuario user (User) session.getAttribute
    ("usuario")
  • if (user ! null)
  • //Faça alguma coisa
  • else
  • session.invalidate()
  • response.sendRedirect("login.jsp")

42
HttpSession Métodos
Método Descrição
void setAttribute(String alias, Object objeto) Armazena um objeto na sessão corrente. A princípio, só o dono da sessão pode ter acesso a tal objeto.
Object getAttribute(String alias) Retorna o objeto armazenado com tal apelido.
void removeAttribute(String alias) Remove o objeto armazenado com tal apelido
43
HttpSession Métodos
Método Descrição
void setMaxInactiveInterval(int segundos) Define quanto tempo a sessão poderá ficar inativa.
int getMaxInactiveInterval () Retorna quanto tempo a sessão poderá ficar inativa.
boolean isNew(String alias) Retorna se uma sessão é válida.
44
HttpSession Métodos
Método Descrição
Enumeration getAttributesNames() Retorna uma enumeração com todos os nomes(alias) dos atributos armazenados na sessão.
void invalidate () Invalida a sessão e remove todos os objetos associados a ela.
45
HttpSession
  • Pode-se definir o Timeout de uma sessão no
    deploymente descriptor da aplicação.
  • ltweb-appgt
  • ltsession-configgt
  • ltsession-timeoutgt30lt/session-timeoutgt
  • lt/session-configgt
  • ltweb-appgt

46
Sessões
  • Importante
  • A sessão não é enviada a cada requisição /
    resposta (lento e inseguro). Apenas o ID da
    sessão é transmitido através de um cookie com
    nome JSESSIONID.
  • A API de servlets permite o uso de sessões mesmo
    que o navegador do usuário nao suporte cookies. É
    preciso passar o valor do JSESSIONID como um
    parâmetro especial da requisição. Isso pode ser
    feito utilizando o método HttpServletResponse.enco
    deURL(). (URL rewriting)

47
Cookies
  • Dados permanentes mantidos em um browser do
    cliente entre várias sessões.
  • Informações do tipo nome / valor.
  • Usados para armazenar perfis de usuários entre
    outras funcionalidades.

48
Cookie
  • Classe
  • javax.servlet.http.Cookie
  • Criação
  • Cookie c new Cookie(chave, valor)
  • Obtenção
  • Cookie cs request.getCookies()
  • Persistindo
  • response.addCookie(cookie)

49
Cookie
  • Por padrão, existem enquanto a sessão existir.
  • Pode-se configurar o tempo de expiração de um
    Cookie através do método
  • setMaxAge(int intervalo)
  • Intervalo gt 0 tempo de vida em segundos.
  • Intervalo 0 apaga o cookie instantaneamente.
  • Intevalo lt 0 remove o cookie ao fim da sessão

50
Cookie métodos
Método Descrição
String getName() Retorna a chave do cookie.
String/void get/setValue () Retorna ou ajusta o valor do cookie.
51
Cookie Exemplo
  • protected void doGet(HttpServletRequest request,
  • HttpServletResponse
    response)
  • throws ServletException
  • HttpSession session request.getSession(t
    rue)
  • Perfil p (Perfil) session.getAttribute(
    perfil")
  • if (p ! null)
  • //Atualiza o perfil
  • response.addCookie(new Cookie(perfil,
    p.toString()))
  • else
  • response.sendRedirect(cadastroPerfil.
    jsp")

52
Prática 4
  • Crie um pequeno sistema (uma funcionalidade), que
    só possa ser usada caso o usuário esteja logado.
  • Deverão ser criados
  • Um servlet de login
  • Um HTML com um form de login.
  • Um servlet para a aplicacao em si.
  • Um HTML de front-end da aplicação
  • Uma página de erro com um link para a página de
    login

53
Método sendError()
  • Métodos sendError() da interface
    HttpServletResponse
  •  
  • public void sendError(int sc) throws
    IOException
  • public void sendError(int sc, String msg)
    throws IOException
  • Envia um erro como resposta para o cliente
    utilizando o código de status e limpa o buffer de
    saída.
  • Caso a resposta já tenha sido enviada, este
    método lança a exceção IllegalStateException.

54
Método sendError()
  • try
  • //processamento
  • catch(Exception e)
  • String msg Erro
  • res.sendError(res.SC_NOT_FOUND, msg )

55
Método sendError()
56
Códigos
  • 200 ok
  • 400 Requisição mal formada
  • 403 Acesso negado
  • 404 Recurso inexistente
  • 500 Erro no servidor (requisição não pode ser
    tratada)

57
Servlets e Threads
58
O Modelo MultiThreaded
59
O Modelo MultiThreaded
  • Deve ser utilizado para grandes aplicações.
  • Padrão
  • Eficiente
  • Difícil de preservar a consistência.

60
O Modelo SingleThreaded
61
O Modelo SingleThreaded
  • Deve-se implementar a interface SingleThreadModel
  • Apesar de conveniente não é aconselhável utilizar
    pelas seguintes razões
  • Pode ocupar muita memória.
  • Falsa sensação de segurança de thread.
  • Falta de compartilhamento de dados.
  • Extremamente ineficiente

62
Variáveis X Segurança
63
Context scope
  • Não é Thread-Safe.
  • Usado para compartilhar dados que são raramente
    modificados.

64
Session scope
  • Não é Thread-Safe. O usuário pode abrir várias
    janelas do browser simultaneamente.
  • Geralmente sincroniza-se o acesso a sessão. (Não
    causa perda de eficiência relevante)

65
Request scope
  • É Thread-Safe.
  • Deve se usado apenas no escopo do método
    service(...).

66
Observação.
  • Existe uma outra variação do comportamento de um
    servlet. Quando o elemento servlet do descritor
    web declara o sub-elemento ltdistributable/gt. Essa
    marcação é útil em ambiente distribuído. Ela
    indica que cada JVM do cluster possuirá sua
    própria instancia do servlet.

67
Upload
68
Upload
  • Submissão de arquivos do cliente para o
    servidor.
  • Utilização da biblioteca commons-fileupload-1.0
    da apache foundation.
  • Import org.apache.commons.fileupload.

69
Upload o html
  • ltform action"/curso/up" enctype"multipart/form-d
    ata" method"post"gt
  • ltinput type"file" name"datafile" size"40"gt
  • ltinput type"submit" value"Send"gt
  • lt/formgt

70
Upload o servlet
  • public void doPost(HttpServletRequest request,
    HttpServletResponse response) throws
    ServletException, IOException
  • DiskFileUpload fu new DiskFileUpload()
  • try
  • fu.setSizeMax(1000000)
  • fu.setSizeThreshold(4096)
  • fu.setRepositoryPath(this.getServletCo
    ntext().getRealPath("/tmp"))
  • List fileItems fu.parseRequest(reque
    st)
  • Iterator i fileItems.iterator()
  • while (i.hasNext())
  • FileItem fi (FileItem)i.next()
  • String fileName fi.getName()
  • fi.write(new File(this.getServletC
    ontext().getRealPath("/tmp")

    getRelativePath(fileName)))

71
Prática 5
  • Escreva um servlet e uma página para realizar
    uploads de arquivos.

72
Filtros
73
Filtros
  • Para uma aplicação web, um filtro é um
    componente que reside no servidor e atua
    intermediando (filtrando) as mensagens trocadas
    por tal servidor e pelo cliente.
  • Previne que informações indesejadas transitem
    livremente.

74
Filtros
75
Filtros funcionamento
  • Quando o container recebe uma requisição de um
    recurso, ele checa se existe um filtro associado
    a tal recurso. Em caso positivo, ele direciona a
    requisição para tal filtro. Este, depois de
    processar a requisição, pode
  • Gerar a resposta ele mesmo.
  • Passa a requisição (modificada ou não) para o
    recurso requisitado.
  • Repassar a requisição para outro recurso.

76
Filtros implementação
  • Todos os filtros
  • Devem implementar a interface Filter (init(),
    doFilter(), destroy())
  • Estarem corretamente mapeados no descritor da
    aplicação

77
Filtros API
Interface / Classe Descrição
javax.servlet.Filter Interface implementada para construir os filmes
javax.servlet.FilterChain Representa a cadeia de filtros.
javax.servlet.FilterConfig Similar ao ServletConfig.
78
Filtros exemplo
  • public class ExFilter implements Filter
  • public void doFilter(ServletRequest req,
    ServletResponse res, FilterChain fc)
  • // processa a requisição e faz a validação
  • // dos parâmetros
  • fc.doFilter(req, res)//passa o controle
    para
  • // o próximo filtro ou para o recurso
  • ...

79
Filtros implementação
  • ltfiltergt
  • ltfilter-namegtvalidarlt/filter-namegt
  • ltfilter-classgtcurso.ExFilterlt/filter-classgt
  • lt/filtergt
  • ltfilter-mappinggt
  • ltfilter-namegtvalidarlt/filter-namegt
  • lturl-patterngt/secure/lt/url-patterngt
  • lt/filter-mappinggt
  • OBS O mapeamento pode ser feito pelo nome do
    servlet também.
  • ltfilter-mappinggt
  • ltfilter-namegtvalidarlt/filter-namegt
  • lturl-patterngtloginServletlt/url-patterngt
  • lt/filter-mappinggt

80
Filtros
  • Pode-se encadear um conjunto de filtros

81
Filtros encadeando
  • Quando o container recebe, ele acha todos os
    filtros que mapeiam a máscara da url do recurso e
    forma o primeiro conjunto. Em seguida acha todos
    os filtros que mapeiam o recurso no nome do
    servlet. A ordem da cadeia é feita da seguinte
    forma
  • O primeiro conjunto antecede o segundo
  • Cada conjunto é ordenado de acordo com a
    declaração dos filtros no descritor da aplicação.
  • Nesse caso, o método doFilter() passa a mensagem
    para o próximo filtro ou para o recurso
    propriamente dito.

82
Filtros encadeando
  • ltfiltergt
  • ltfilter-namegtValidatorFilterlt/filter-namegt
  • ltfilter-classgtValidatorFilterlt/filter-classgt
  • lt/filtergt
  • ltfiltergt
  • ltfilter-namegtSpamFilterlt/filter-namegt
  • ltfilter-classgtSpamFilterlt/filter-classgt
  • lt/filtergt
  • ltfilter-mappinggt
  • ltfilter-namegtValidatorFilterlt/filter-namegt
  • lturl-patterngt/secure/lt/url-patterngt
  • lt/filter-mappinggt
  • ltfilter-mappinggt
  • ltfilter-namegtSpamFilterlt/filter-namegt
  • lturl-patterngt/secure/lt/url-patterngt
  • lt/filter-mappinggt

83
Prática 6
  • Escreva uma pequena aplicação que filtre um
    subconjunto de requisições, redirecionando estas
    para uma página de erro ou, para o caso de uma
    requisição aprovada, envie esta para um servlet
    que realize um processamento simples.

84
Eventos de ciclo de vida
85
Eventos
  • A criação ou destruição, assim como a manipulação
    de atributos, tanto no contexto como na sessão,
    levantam eventos que podem ser capturados por
    classes implementadas pelo desenvolvedor.
  • Tais classes devem implementar as respectivas
    classes

86
Eventos
  • ServletContextListener

Método Descrição
void contextDestroyed (ServletContextEvent sce) Chamado quando o contexto é destruído.
void contextInitialized (ServletContextEvent sce) Chamado quando o contexto é criado.
87
Eventos
  • ServletContextAttributeListener

Método Descrição
void attributeAdded (ServletContextAttributeEvent scae) Chamado quando um atributo é adicionado ao contexto
void attributeRemoved (ServletContextAttributeEvent scae) Chamado quando um atributo é removido do contexto
void attributeReplaced (ServletContextAttributeEvent scae) Chamado quando um atributo é substituído do contexto
88
Eventos
  • HttpSessionListener

Método Descrição
void sessionCreated (HttpSessionEvent se) Chamado quando a sessão é criada.
void sessionDestroyed (HttpSessionEvent se) Chamado quando a sessão é destruida.
89
Eventos
  • HttpSessionAttributeListener

Método Descrição
void attributeAdded (HttpSessionBindingEvent scae) Chamado quando um atributo é adicionado à sessão
void attributeRemoved (HttpSessionBindingEvent scae) Chamado quando um atributo é removido da sessão
void attributeReplaced (HttpSessionBindingEvent scae) Chamado quando um atributo é substituído da sessão
90
Eventos
  • Configurando
  • ltlistenergt
  • ltlistener-classgt
  • com.abcinc.MyServletContextAttributeListener
  • lt/listener-classgt
  • lt/listenergt
  • OBS Apenas o nome da classe ouvinte precisa
    ser declarada, pois o container faz as devidas
    inferências.

91
Eventos
  • Existem outras interfaces de eventos
  • HttpSessionBindingListener
  • HttpSessionActivationListener
  • Não serão abordadas nesse curso.

92
Eventos
  • Existem outras interfaces de eventos
  • HttpSessionBindingListener
  • HttpSessionActivationListener
  • Não serão abordadas nesse curso.
Write a Comment
User Comments (0)
About PowerShow.com