Saltar al contenido

init-param y context-param

Solución:

<init-param> y <context-param> son parámetros estáticos que se almacenan en el archivo web.xml. Si tiene datos que no cambian con frecuencia, puede almacenarlos en uno de ellos.

Si desea almacenar datos particulares que se limitan a un ámbito de servlet particular, entonces puedes usar <init-param> .Cualquier cosa que declares dentro <init-param> solo es accesible para ese servlet en particular. init-param se declara dentro del <servlet> etiqueta.

<servlet>
     <display-name>HelloWorldServlet</display-name>
     <servlet-name>HelloWorldServlet</servlet-name>
     <init-param>
         <param-name>Greetings</param-name>
         <param-value>Hello</param-value>
     </init-param>
</servlet>

y puede acceder a esos parámetros en el servlet de la siguiente manera:

out.println(getInitParameter("Greetings"));

Si desea almacenar datos que son comunes para toda la aplicación y si no cambia con frecuencia, puede usar <context-param> en lugar de servletContext.setAttribute() método del contexto de la aplicación. Para obtener más información sobre el uso de <context-param> VS ServletContext.setAttribute() eche un vistazo a esta pregunta. parámetro de contexto se declaran bajo la etiqueta web-app. Puede declarar y acceder al <context-param> como sigue

<web-app>
    <context-param>
        <param-name>Country</param-name>
        <param-value>India</param-value>
    </context-param>
    <context-param>
        <param-name>Age</param-name>
        <param-value>24</param-value>
    </context-param>
</web-app>

Uso en la aplicación en JSP o Servlet

getServletContext().getInitParameter("Country");
getServletContext().getInitParameter("Age");

Considere la siguiente definición en web.xml

<servlet>
    <servlet-name>HelloWorld</servlet-name>
    <servlet-class>TestServlet</servlet-class>
    <init-param>
        <param-name>myprop</param-name>
        <param-value>value</param-value>
    </init-param>
</servlet>

Puede ver que init-param está definido dentro de un elemento de servlet. Esto significa que solo está disponible para el servlet bajo declaración y no para otras partes de la aplicación web. Si desea que este parámetro esté disponible para otras partes de la aplicación, diga una JSP, esto debe pasarse explícitamente a la JSP. Por ejemplo, pasado como request.setAttribute (). Esto es muy ineficiente y difícil de codificar.

Entonces, si desea obtener acceso a valores globales desde cualquier lugar dentro de la aplicación sin pasar explícitamente esos valores, debe usar los parámetros de inicio de contexto.

Considere la siguiente definición en web.xml

 <web-app>
      <context-param>
           <param-name>myprop</param-name>
           <param-value>value</param-value>
      </context-param>
 </web-app>

Este parámetro de contexto está disponible para todas las partes de la aplicación web y se puede recuperar del objeto Context. Por ejemplo, getServletContext (). GetInitParameter (“dbname”);

Desde una JSP puede acceder al parámetro de contexto utilizando el objeto implícito de la aplicación. Por ejemplo, application.getAttribute (“dbname”);

<context-param> 
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath*:/META-INF/PersistenceContext.xml
    </param-value>
</context-param>

He inicializado mi PersistenceContext.xml dentro de <context-param> porque todos mis servlets interactuarán con la base de datos en el marco MVC.

Howerver,

<servlet>
    <servlet-name>jersey-servlet</servlet-name>
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:ApplicationContext.xml
        </param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.organisation.project.rest</param-value>
    </init-param>
</servlet>

en el código antes mencionado, estoy configurando jersey y el ApplicationContext.xml solo para descansar capa. Por lo mismo que estoy usando </init-param>

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *