O GoConqr está de visual novo! Conte para nós o que você achou.

Notas

O modelo de servlet container - Exemplos

Luis Felipe Guariento Desenvolvimento de Software Concursos Públicos Português 5 páginas

Conteúdo das notas (5)

Página 1

Diretório do Projeto

O projeto a seguir exemplifica o conceito de interfaces listener.

Algumas considerações sobre listeners:

Classes listeners devem implementar interfaces listeners, sendo inicializadas pelo container web e seus métodos serão chamados quando o respectivo evento associado ao método dessa classe ocorrer.

As interfaces listeners possuem métodos a serem implementados pela classe que implementa a interface nos escopos de sessão (HttpSession), aplicação (ServletContext) e requisição (ServletRequest).

Ainda, a classe listener deve ser informado no arquivo web.xml, a não ser que a classe listener seja HttpSessionBindingListener. Nesse caso a classe não será informada no descritor.

Os métodos de evento de HttpSessionAttributeListener, ServletRequestAttributeLIstener e ServletContextAttributeListener notificam sobre mudanças na lista de atributos dos escopos de sessão, requisição e aplicação, respectivamente e terão os mesmos nomes de métodos a serem implementados: attributeAdded(), attributeRemoved() e attributeReplaced(), mas não os mesmos parâmetros, o que dependerá da classe listener ser de sessão ( HttpSessionBindingEvent ), aplicação (ServletContextAttributeEvent) ou requisição ( ServletRequestAttributeEvent).

Os métodos das classes listener ServletRequestListener, HttpSessionListener e ServletContextListener serão chamados para eventos de requisição, sessão ou aplicação, respectivamente, quando a requisição, sessão ou aplicação for inicializada ou destruída. Para isso, cotamos com os métodos XXXDestroyed() ou XXXInitialized(), sendo o XXX substutuído por Request, Session ou Context dependendo de qual interface listener está sendo implementada. Os eventos passados a esses métodos são ServletRequestEvent ( para eventos de requisição ), ServletContextEvent ( para eventos de aplicação ) ou HttpSessionEvent ( para eventos de sessão ).

A interface listener HttpSessionBindingListener será utilizada para receber notificação quando objetos são associados ou desassociados de uma sessão, não sendo configurado no descritor de implantação. A classe listener que implementar essa interface deve implementar os métodos: public void valueBound( HttpSessionBindingEvent e), para notificar que o objeto encapsulado pela classe implementadora está sendo associado a uma sessão e public void valueUnbound( HttpSessionBindingEvent e) para notificar desassociação do objeto.

Obs: a diferença entre a interface HttpSessionAttributeListener e HttpSessionBindingListener é que o container criará várias instâncias das classes implementadoras de HttpSessionBindingListener, que executa as ações especificadas quando o objeto determinado for adicionado ou removido da sessão, enquanto para classes que implementam HttpSessionAttributeListener, criará somente uma instância da classe especificada sendo utilizada para rastrear a atividade de todas as sessões no nível de aplicação, necessita ser configurada no descritor de implantação ( arquivo web.xml ).

Por fim, a interface HttpSessionActivationListener será usada pelos atributos de sessão para receber notificação quando uma sessão estiver sendo migrada para uma outra JVM em um ambiente distribuído. A classe que implementar essa interface deve fornecer implementação a seus métodos public void sessionWillPassivate(HttpSessionEvent se) - chamado quando a sessão estiver para ser migrada e public void sessionDidActivate( HttpSessionEvent se ) - chamado depois que a sessão for ativada em outra JVM.

O modelo de servlet container - Exemplos

O modelo de servlet container - Exemplos

O modelo de servlet container - Exemplos

Página 2

Arquivo web.xml

Aqui podemos ver o arquivo web.xml com a definição da tag < listener > declarando o caminho completo de nossa classe listener em < listener-class > e definindo um atributo de aplicação em < context-param > de nome dburl e de valor jdbc:databaseurl

Reparar também no mapeamento do servlet TesteServlet utilizado no nosso exemplo e chamado via url /parametrosgerais.

O modelo de servlet container - Exemplos

Página 3

Arquivo do servlet TesteServlet.java

Aqui o código do servlet TesteServlet que gera uma página HTML com o parâmetro de inicialização obtido de web.xml.

Nesse código atentar para:

ServletContext contexto = getServletContext();

O código acima utiliza GenericServlet.getServletContext() para obtenção do objeto javax.servlet.ServletContext, que é

uma interface através da qual o servlet container se comunica e expõe seu ambiente aos servlets. Outra maneira de obter esse mesmo objeto é através do objeto ServletConfig no código ServletContext context = getServletConfig().getServletContext();

Enumeration parametros = contexto.getInitParameterNames();

No código acima obtemos os nomes dos parâmetros de inicialização da aplicação web através do objeto ServletContext

String valorParametro = contexto.getInitParameter(nomeParametro);

Para cada parâmetro de inicialização, conforme pode ser visto no código abaixo, obteremos o valor associado a cada nome do parâmetro.

O modelo de servlet container - Exemplos

Página 4

Listener MyServletContextListener

No descritor de implantação, informamos através de < listener > e < listener-class > o nome da classe listener MyServletContextListener, e conforme discutido implementamos seus métodos abstratos contextInitialized() e contextDestroyed() para que, assim que a aplicação web inicializar, imprimirmos na linha de comando do tomcat uma mensagem referente a inicialização da aplicação, e assim que a mesma finalizar execução, imprimirmos uma mensagem indicando que a aplicação foi finalizada. Poderíamos conforme o código comentado abaixo, definirmos que assim que a aplicação finalizar, fecharmos a conexão com a base de dados e assim que a aplicação inicializar, abrirmos uma conexão com a base de dados.

O modelo de servlet container - Exemplos

Página 5

Execução de TesteServlet

Aqui e conforme definido no arquivo web.xml, assim que informarmos a url parametrosgerais, associada a TesteServlet, a lista de parâmetros iniciais do ServletContext será impresso na saída da página JSP.

Ainda, podemos ver na segunda imagem que a mensagem de inicialização da aplicação será mostrada no prompt de comando do Tomcat, conforme definido no web.xml:

< listener >

< listener-class >controle.MyServletContextListener< /listener-class >

< /listener >

E definido na classe listener MyServletContextListener, que implementa a interface listener ServletContextListener e seus métodos:

public void contextInitialized ( ServletContextEvent e ) - mensagem da inicialização da aplicação

public void contextDestroyed ( ServletContextEvent e ) - mensagem de finalização da aplicação

O modelo de servlet container - Exemplos

O modelo de servlet container - Exemplos

Informações

Descrição
Concursos Públicos Desenvolvimento de Software (OCEJWCD 6 ONLINE COURSE) Notas sobre O modelo de servlet container - Exemplos, criado por Luis Felipe Guariento em 04-05-2018.
Criado por
Luis Felipe Guariento · mai 2018
Atualizado
4 mai 2018
Visualizações
2
Avaliação

Fale Conosco

Sobre o que é sua mensagem?

O que você acha do novo visual?

Você gostou?