Diferença b/w e
-
20-09-2019 - |
Pergunta
Elementos DD <context-param>
e <init-param>
Ambos podem ser recuperados pelo getInitParameter()
Método, no código do servlet.
Agora a questão é: como isso diferencia <context-param>
e <init-param>
?
Solução
Servlet Parâmetros init são apenas para um único servlet. Nada fora desse servlet pode acessar isso. É declarado dentro do <servlet>
Tag do descritor de implantação, por outro lado Parâmetro init de contexto é para todo o aplicativo da web. Qualquer servlet ou jsp nesse aplicativo da web pode acessar Parâmetro init de contexto. Parâmetros de contexto são declarados em uma tag <context-param>
diretamente dentro do <web-app>
marcação.
Os métodos para acessar Parâmetro init de contexto é
getServletContext().getInitParameter("name");
enquanto o método para acessar Parâmetro INIT para servlet é
getServletConfig().getInitParameter("name");
Outras dicas
Conforme explicado por Adeel Ansari aqui, depende de qual objeto você está invocando o método getInitParameter()
no código do servlet.
Todos os servlets se estende de e, portanto, são a instância de GenericServlet
.
.
Elementos DD <context-param>
pode ser recuperado por:
ServletContext context = this.getServletContext();
String paramValue = context.getInitParamter("paramName");
.
Elementos DD <init-param>
Ambos podem ser recuperados por:
ServletConfig config = this.getServletConfig();
String paramValue = config.getInitParamter("paramName");
Observe também que desde GenericServlet
implementos de classe ServletConfig
Interface, sua classe de servlet também é servletconfig (implica this = this.getServletConfig()
). Portanto, você também pode obter elementos DD <init-param>
diretamente por:
String paramValue = this.getInitParamter("paramName");
.
Você pode tentar isso tendo o mesmo param-name nos dois elementos DD com valores diferentes e depois imprimi-lo em seu servlet.