Как добавить файл в проекты Java EE? - PullRequest
1 голос
/ 11 августа 2009

Я хочу добавить xml-файл в мой проект Java ee и использовать его в своем коде, но когда я обращаюсь к файлу из каталога src, он не понимает мой адрес и ищет файл в каталоге bin tomcat.Мой проект использует каркас калитки и JavaEE.Кто-нибудь знает, как обратиться к файлу или где я должен разместить файл для доступа из проекта?

Ответы [ 4 ]

1 голос
/ 11 августа 2009

Если ваш xml-файл является ресурсом, доступ к которому должен осуществляться только на стороне сервера, то лучше всего разместить его в каталоге WEB-INF внутри вашей войны или в каком-либо подкаталоге внутри WEB-INF. Таким образом вы гарантируете, что ресурс не будет доступен через Интернет.

Затем вы можете получить его, используя ServletContext.getResource , как указал Питер Д.

Например, в сервлете вы можете получить его таким образом (обработка исключений опущена):

String path = "/WEB-INF/my.xml";
URL url = getServletConfig().getServletContext().getResource(path);
InputStream in = url.openStream();
// read content from input stream...
0 голосов
/ 11 августа 2009

Обычно src не используется во время выполнения. Я не использую tomcat, но в моей среде у меня есть задачи сборки, которые копируют не-Java файлы из src в каталог bin.

Вы можете счесть необходимым открыть файл с помощью метода загрузки классов getResourceAsStream (), чтобы вы искали те же каталоги, из которых получены ваши классы.

Предполагается, что вы хотите доставить XML в приложение. В качестве альтернативы вы можете предпочесть иметь его где-то еще. Ссылки на ресурсы URI могут помочь

0 голосов
/ 11 августа 2009

Почему бы вам не поместить файл XML в каталог ресурсов. Вы можете получить к нему доступ из любого класса с помощью:

MyClass.class.getClassLoader () getResourceAsStream (имя файла);.

0 голосов
/ 11 августа 2009

Внутри вашего сервлета вы можете:

this.getServletContext().getResource( path );

public java.net.URL getResource(java.lang.String path)
                         throws java.net.MalformedURLException

Возвращает URL-адрес ресурса, который сопоставлен с указанным путем. Путь должен начинаться с "/" и интерпретируется как относящийся к текущему корневому контексту.

Этот метод позволяет контейнеру сервлетов сделать ресурс доступным для сервлетов из любого источника. Ресурсы могут находиться в локальной или удаленной файловой системе, в базе данных или в файле .war.

Контейнер сервлета должен реализовывать обработчики URL и объекты URLConnection, необходимые для доступа к ресурсу.

Этот метод возвращает ноль, если ни один ресурс не сопоставлен с путем.

Некоторые контейнеры могут разрешать запись в URL, возвращаемый этим методом, используя методы класса URL.

Содержимое ресурса возвращается напрямую, поэтому имейте в виду, что запрос страницы .jsp возвращает исходный код JSP. Вместо этого используйте RequestDispatcher, чтобы включить результаты выполнения.

Этот метод имеет другое назначение, чем java.lang.Class.getResource, который ищет ресурсы на основе загрузчика классов. Этот метод не использует загрузчики классов.

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