java servlets deployment-descriptor init-parameters

java - Diferencia b/w<context-param> y<init-param>



servlets deployment-descriptor (2)

Los elementos DD <context-param> y <init-param> ambos pueden recuperarse mediante el método getInitParameter() , en el código del servlet.

Ahora la pregunta es, ¿cómo diferencia <context-param> y <init-param> ?


Como explicó Adeel Ansari, aquí depende de qué objeto invoque el método getInitParameter() en el código del servlet.

Todos los servlets se extienden desde y, por lo tanto, son instancia de GenericServlet .

.

Los elementos DD <context-param> pueden recuperarse mediante:

ServletContext context = this.getServletContext(); String paramValue = context.getInitParamter("paramName");

.

Elementos de DD <init-param> ambos pueden ser recuperados por:

ServletConfig config = this.getServletConfig(); String paramValue = config.getInitParamter("paramName");

También tenga en cuenta que dado que la clase GenericServlet implementa la interfaz ServletConfig , su clase de servlet también es ServletConfig (implica this = this.getServletConfig() ). Por lo tanto, también puede obtener elementos DD <init-param> directamente por:

String paramValue = this.getInitParamter("paramName");

.

Puede intentar esto teniendo el mismo nombre de parámetro en ambos elementos DD con diferentes valores y luego imprimirlo en su servlet.


Los parámetros de inicio del servlet son solo para un solo servlet. Nada fuera de ese servlet puede acceder a eso. Se declara dentro de la etiqueta <servlet> de Deployment Descriptor; por otro lado, el parámetro context init es para toda la aplicación web. Cualquier servlet o JSP en esa aplicación web puede acceder al parámetro init de contexto . Los parámetros de contexto se declaran en una etiqueta <context-param> directamente dentro de la etiqueta <web-app> .

Los métodos para acceder al parámetro init de contexto son

getServletContext().getInitParameter("name");

mientras que el método para acceder al parámetro servlet init es

getServletConfig().getInitParameter("name");