2008-09-11 2 views
6

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

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

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

ответ

13

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

Javadoc Link

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

public class MyServlet extends HttpServlet { 

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

    ... 
} 
+0

Блестящий! Точно, что я был после. Я подозреваю, это то, что wrumsby снимал в своем ответе. Спасибо, ребята. Качество контента на этом сайте продолжает меня впечатлять. – 2008-09-12 05:56:36

-1

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

public class MyServlet extends HttpServlet { 

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

    ... 
} 

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

+0

Это может быть правильный путь, но я не думаю, что все это меня достало. Мне все же нужно иметь возможность открывать файлы, которые находятся в каталоге контекста. – 2008-09-11 20:42:49

0

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

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

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

В моем Servlet я хотел бы доступ к корню из контекста, так что я могу сделать некоторые 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().