Доступ к пути контекста Tomcat из сервлета
Вопрос
В моем сервлете я хотел бы получить доступ к корню контекста, чтобы можно было выполнить минимизацию JavaScript.
Можно было бы выполнить минимизацию как часть процесса установки, но я бы хотел сделать это при запуске сервлета, чтобы снизить стоимость реализации.
Кто-нибудь знает способ получения контекстного каталога, чтобы я мог загружать и записывать файлы на диск?
Решение
Это должно дать вам реальный путь, который вы можете использовать для извлечения/редактирования файлов.
Ссылка на документацию Javadoc
Мы делаем нечто подобное в прослушивателе контекста.
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext().getRealPath("/");
...
}
...
}
Другие советы
В моем сервлете я хотел бы получить доступ к корню контекста, чтобы можно было выполнить минимизацию JavaScript.
Вы также можете получить доступ к файлам в веб-контенте, ServletContext#getResource()
.Итак, если ваш JS-файл, например, расположен по адресу WebContent/js/file.js
то вы можете использовать следующее в своем Servlet
чтобы получить File
ручка этого:
File file = new File(getServletContext().getResource("/js/file.js").getFile());
или чтобы получить InputStream
:
InputStream input = getServletContext().getResourceAsStream("/js/file.js");
Тем не менее, как часто вам нужно минимизировать файлы JS?Я никогда не видел необходимости в минимизации на основе запросов, это только привело бы к излишнему увеличению накладных расходов.Вероятно, вы захотите сделать это только один раз во время запуска приложения.Если да, то с помощью Servlet
потому что это плохая идея.Лучше использовать ServletContextListener
и делай свое дело contextInitialized()
.
Я гуглил результат и ничего не нашел.На страницах JSP, которым необходимо использовать Java Script для доступа к текущему контекстПуть на самом деле это довольно легко.
Просто вставьте следующие строки в свой HTML-голова внутри script
блокировать.
// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}"
Ты имеешь ввиду:
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext();
...
}
...
}
Или что-то более сложное?