2012-09-16 10 views

Respuesta

9

¿Cuál es la diferencia entre los dos

No hay ninguna diferencia entre los dos, que son una y la misma.

El método getServletContext() al que puede llamar directamente es solo cuando su código está en una clase que se extiende HttpServlet. Esto se debe a que la clase base HttpServlet tiene este método definido (en realidad en la clase GenericServlet que se extiende a HttpServlet).

El ServletContext devuelto por req.getSession(). GetServletContext() is same as the one returned above. HttpSession contains a reference to the ServletContext` que esta sesión pertenece.

cuál debo usar? ¿Hay algún escenario basado en el cual debería usar uno y no el otro?

Siempre que su código esté en la clase de servlet, puede usar cualquier cosa ya que ambos pueden invocarse.

Digamos (hipotéticamente) que llama a un método en su clase personalizada desde su servlet y le pasa el objeto de sesión para que funcione con algunos datos en la sesión. Esta clase personalizada no extiende el servlet. Necesita una referencia al ServletContext en esta clase personalizada. Como tiene una referencia a la sesión, puede obtener acceso al ServletContext utilizando el método session.getServletContext().

Espero que esto esté claro.

+0

Soy novato ... ¿puede por favor desglosar un poco su respuesta para que pueda entender :(... tal vez con un ejemplo – Nav

+0

en realidad no entendí la parte en la que decía "ser utilizado en lugares fuera de la clase HttpServlet. " – Nav

+0

@Nav, traté de explicar mi respuesta. Consulte la edición. – Vikdor

-1

Los Sesión variables sólo se guardan para un navegador y los Contexto variables pueden ser utilizadas por todos los navegadores en una sola sesión.

Así que si el usuario solo usa un navegador (como en la mayoría de los casos) no hay diferencia entre ellos, pero si desea trabajar desde diferentes navegadores en una sesión mejor use el Contexto.