Чтение файла из сервлета Java - PullRequest
1 голос
/ 17 июля 2009

Я написал код для чтения файла в моем классе сервлетов Java. (Я использую Netbeans в Windows вместе с сервером Tomcat). Однако мой сервлет не может найти файл!

После долгих копаний я обнаружил, что должен был поместить файл, который хотел прочитать, в папку Tomcat / bin. Это очень удивительно. Как я могу получить путь к моей папке Webapps /? Давайте предположим, что мой проект веб-сайта называется "Web1".

По сути, я пытаюсь прочитать мой файл .xsl для преобразования моего документа DOM в HTML. Сначала я попытался разместить этот файл .xsl везде (на том же уровне, что и мой index.jsp, в том же каталоге, что и мой файл класса сервлета и т. Д., Но не работал вообще)

Кроме того, когда я закончил transform (), мой HTML-файл также помещается в папку Tomcat / bin ~!

Ответы [ 3 ]

5 голосов
/ 17 июля 2009

Можете ли вы использовать javax.servlet.ServletContext.getRealPath (String path)?

Возвращает строку, содержащую реальный путь для данного виртуального пути. Например, путь "/index.html" возвращает абсолютный путь к файлу в файловой системе сервера, который будет обслуживаться запросом "http://host/contextPath/index.html",, где contextPath - это путь контекста этого ServletContext .. Реальный возвращенный путь будет в форме, соответствующей компьютеру и операционной системе, в которой работает контейнер сервлета, включая надлежащие разделители пути. Этот метод возвращает значение NULL, если контейнер сервлета по какой-либо причине не может преобразовать виртуальный путь в реальный путь (например, когда контент становится доступным из архива .war).

0 голосов
/ 17 июля 2009

Что-то вроде этого может быть более удобным для вас:

    java.net.URL url = ClassLoader.getSystemResource(file_name);
    try {
        InputStream is = url.openStream());
        //Read the file and do stuff
    } catch(IOException e) {
        System.err.println("Error: could not load the file");
    }

Это позволит вам получить InputStream для файла внутри classpath (в вашем случае, что-то в папке webapps). Что касается записи результатов, я не уверен.

0 голосов
/ 17 июля 2009

Где вы потребляете этот XSL? Если из вашего Java-кода поместите файл в src / java / resources, чтобы он был в верхней части вашего пути к классам при сборке WAR /WEB-INF/classes/foo.xsl. Тогда вы можете использовать Class # getResource ("foo.xsl") или, что еще лучше, если вы используете DOM4J или эквивалентный, есть способы загрузки файла. Теперь, если это ваш JavaScript, который выполняет преобразование на клиенте, это другая история

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