ServletConfig X ServletContext

Pretendo discutir um pouco sobre o uso de ServletConfig e ServletCOntext, existem pequenas diferenças entre os dois, mas especificamente no contexto de acesso as informaçoes contidas nos dois.

ServletConfig

A interface javax.servlet.ServletConfig prove diversas informações sobre o servlet atual, tais como parâmetros de inicialização e nome do servlet, esta diretamente ligada ao servlet e não tem informações de outros servlets.

Um exemplo de utilização desta interface seria a busca de parâmetros de inicialização dentro do método init() do servlet.

Defino um parâmetro de inicialização para o servlet:

<servlet>

<servlet-name>TestServlet</servlet-name>

<servlet-class>br.com.yross.servlets.TestServlet</servlet-class>

<init-param>

<param-name>nameParamInitServlet</param-name>

<param-value>valueParamInitServlet</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

Busco esta informações na inicialização do servlet, para isso reescrevo o método init():

public class YRossServlet extends HttpServlet {

public void init() throws ServletException {

String valueParamInitServlet = getServletConfig().getInitParameter(“nameParamInitServlet”);

System.out.println(“ServletConfig – valueParamInitServlet: ” + valueParamInitServlet);

}

}

Observe o uso do método getServletConfig() implementado na classe abstrata javax.servlet.GenericServlet, ele retorna um objeto javax.servlet.ServletConfig com todas as configurações necessárias para a existência do servlet atual. Em resumo a o ServletConfig contém apenas informações do servlet que esta atendendo a requisição, diferente do ServletContext que contém informações compartilhadas no contexto dos servlets.

ServletContext

Um pouco diferente do ServletConfig, a interface javax.servlet.ServletContext tem a capacidade de armazenar informações que podem ser compartilhadas entre todos os servlet no contêiner servlet, tais como informações de conexão com um determinado banco de dados, estas informações podem ser compartilhadas com diversos servlet que precisam de acesso ao banco de dados, exemplo:

<web-app>

<context-param>

<description></description>

<param-name>dburl</param-name>

<param-value>jdbc:databaseurl</param-value>

</context-param>

</web-app>

Observe que o parâmetro não é informado para um servlet específico, mas para o contexto dos servlet dentro do contêiner.

Reutilizando o exemplo anterior, recupero as informações de a maneira a seguir:

public class YRossServlet extends HttpServlet {

public void init() throws ServletException {

ServletContext context = getServletContext();

String dburl = context.getInitParameter(“dburl”);

System.out.println(“ServletContext – Url para base de dados: ” + dburl);

}

}

Observe o uso do método getServletContext() implementado na classe abstrata javax.servlet.GenericServlet, ele retorna um objeto javax.servlet.ServletContext com todas as informações de contexto dos servlets.

É possível conseguir uma instancia de ServletContext atraves do ServletConfig, exemplo:

ServletContext context = getServletConfig().getServletContext();

Explore posts in the same categories: Certificações, JEE, Java, SCWCD

Tags: , , , , ,

You can comment below, or link to this permanent URL from your own site.

One Comment on “ServletConfig X ServletContext”

  1. victor Says:

    bem resumido, mas bom pra quem está formando os conceitos sobre servletContext e servletConfig


Comment: