Доступ к контекстному пути Tomcat из сервлета - PullRequest
6 голосов
/ 12 сентября 2008

В моем сервлете я хотел бы получить доступ к корню контекста, чтобы можно было минимизировать JavaScript.

Можно было бы выполнить минификацию как часть процесса установки, но я хотел бы сделать это при запуске сервлета, чтобы снизить стоимость реализации.

Кто-нибудь знает способ получения каталога контекста, чтобы я мог загружать и записывать файлы на диск?

Ответы [ 4 ]

13 голосов
/ 12 сентября 2008

Это должно дать вам реальный путь, который вы можете использовать для извлечения / редактирования файлов.

Ссылка Javadoc

Мы делаем что-то подобное в прослушивателе контекста.

public class MyServlet extends HttpServlet {

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

    ...
}
2 голосов
/ 27 ноября 2009

В моем сервлете я хотел бы получить доступ к корню контекста, чтобы я мог выполнить минимизацию JavaScript

Вы также можете получить доступ к файлам в WebContent по 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().

0 голосов
/ 27 ноября 2009

Я гуглил результат и ничего не получил. На страницах JSP, которым для доступа к текущему contextPath необходимо использовать Java Script, это на самом деле довольно просто.

Просто поместите следующие строки в вашу головку HTML внутри блока script.

// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}" 
0 голосов
/ 12 сентября 2008

Вы имеете в виду:

public class MyServlet extends HttpServlet {

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

    ...
}

Или что-то более сложное?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...