Accediendo a la ruta de contexto de Tomcat desde servlet
Pregunta
En mi Servlet me gustaría acceder a la raíz del contexto para poder minimizar JavaScript.
Sería posible minimizar como parte del proceso de instalación, pero me gustaría hacerlo al iniciar el servlet para reducir el costo de implementación.
¿Alguien conoce algún método para obtener el directorio contextual para poder cargar y escribir archivos en el disco?
Solución
Esto debería proporcionarle la ruta real que puede utilizar para extraer/editar archivos.
Estamos haciendo algo similar en un oyente de contexto.
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext().getRealPath("/");
...
}
...
}
Otros consejos
En mi Servlet me gustaría acceder a la raíz del contexto para poder minimizar JavaScript
También puede acceder a los archivos en WebContent haciendo clic en ServletContext#getResource()
.Entonces, si su archivo JS se encuentra, por ejemplo, en WebContent/js/file.js
entonces puedes usar lo siguiente en tu Servlet
conseguir un File
manejarlo:
File file = new File(getServletContext().getResource("/js/file.js").getFile());
o para conseguir un InputStream
:
InputStream input = getServletContext().getResourceAsStream("/js/file.js");
Dicho esto, ¿con qué frecuencia es necesario minimizar los archivos JS?Nunca he visto la necesidad de una minimización basada en solicitudes, solo agregaría muchos gastos generales innecesariamente.Probablemente quieras hacerlo sólo una vez durante el inicio de la aplicación.Si es así, entonces usando un Servlet
porque esto es una mala idea.Mejor uso ServletContextListener
y haz lo tuyo contextInitialized()
.
Estaba buscando en Google el resultado y no llegué a ninguna parte.En páginas JSP que necesitan usar Java Script para acceder al archivo actual ruta contextual en realidad es bastante fácil.
Simplemente escriba las siguientes líneas en su cabeza html dentro de una script
bloquear.
// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}"
Quieres decir:
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext();
...
}
...
}
¿O algo más complejo?