2008-09-11 22 views
6

En mi servlet me gustaría acceder a la raíz del contexto para poder hacer algo de minificación de JavaScript.Acceso a la ruta de contexto de Tomcat desde el servlet

Se podría hacer el minify como parte del proceso de instalación, pero me gustaría hacerlo en el inicio de Servlet para reducir el costo de implementación.

¿Alguien sabe de un método para obtener el directorio de contexto para que pueda cargar y escribir archivos en el disco?

Respuesta

13

Esto debería darle la ruta real que puede usar para extraer/editar archivos.

Javadoc Link

Estamos haciendo algo similar en un oyente contexto.

public class MyServlet extends HttpServlet { 

    public void init(final ServletConfig config) { 
     final String context = config.getServletContext().getRealPath("/"); 
     ... 
    } 

    ... 
} 
+0

¡Brillante! Exactamente lo que buscaba. Sospecho que esto es lo que wrumsby estaba buscando en su respuesta. Gracias chicos. La calidad del contenido en este sitio continúa impresionándome. –

-1

Qué quiere decir:

public class MyServlet extends HttpServlet { 

    public void init(final ServletConfig config) { 
     final String context = config.getServletContext(); 
     ... 
    } 

    ... 
} 

O algo más complejo?

+0

Esta podría ser la ruta correcta, pero no creo que me lleve todo el camino hasta allí. Todavía necesito poder abrir archivos que están en el directorio de contexto. –

0

Estaba buscando en Google el resultado y no obteniendo ningún lugar. En las páginas JSP que necesitan utilizar Java Script para acceder al contextPath actual, es bastante fácil.

Simplemente ponga las siguientes líneas en su cabeza html dentro de un bloque script.

// set up a global java script variable to access the context path 
var contextPath = "${request.contextPath}" 
2

En mi Servlet me gustaría tener acceso a la raíz del contexto para que yo pueda hacer algo de JavaScript minifying

También puede acceder a los archivos en el WebContent por ServletContext#getResource(). Así que si su archivo JS es, por ejemplo, situada en WebContent/js/file.js entonces usted puede utilizar lo siguiente en su Servlet para conseguir una manija File de ella:

File file = new File(getServletContext().getResource("/js/file.js").getFile()); 

o para obtener un InputStream:

InputStream input = getServletContext().getResourceAsStream("/js/file.js"); 

Dicho esto , ¿con qué frecuencia necesita minificar los archivos JS? Nunca he visto la necesidad de la minificación basada en solicitudes, solo agregaría innecesariamente demasiados gastos generales. Probablemente desee hacerlo solo una vez durante el inicio de la aplicación. Si es así, usar una Servlet para esto es una mala idea. Mejor use ServletContextListener y haga lo suyo en contextInitialized().

Cuestiones relacionadas