Сервлет: Что именно использовать в context.getRealPath (""); - PullRequest
5 голосов
/ 26 января 2011

Как я знаю, он возвращает путь к приложению? Но какая именно польза от этого.

Ответы [ 4 ]

5 голосов
/ 26 января 2011

Во многих средах пользователь приложения не имеет права читать какие-либо файлы за пределами каталога развертывания. В основном это делается в целях безопасности - например, если кто-то взломает ваше приложение, он не сможет прочитать файл паролей.

А в профессионально управляемых средах разработчики часто не могут сказать, в каком каталоге будет размещено приложение.

Поэтому, если вам нужно прочитать файл, такой как свойства, изображения, сертификаты и т. Д., Вы можете поместить его в каталог приложения (или файл .war) и использовать getRealPath (""), чтобы получить путь, который вам нужно загрузить.

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

2 голосов
/ 26 января 2011

getRealPath () дает абсолютный путь (в файловой системе), ведущий к файлу, указанному в параметрах вызова. Возвращает путь в формате, специфичном для ОС. С другой стороны, getContextPath () возвращает URI или относительный путь к ресурсу.

1 голос
/ 26 января 2011

Это реальный путь в файловой системе.

От javadoc:

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

Я думаю, что это очень ясно.Почему нам это надо?Иногда веб-приложения выполняют некоторые манипуляции в файловой системе.Например, чтение материалов из файлов, запись файлов и т. Д. Этот API позволяет получить доступ к месту, где действительно хранятся ваши JSP и другие материалы.

1 голос
/ 26 января 2011

Насколько я помню, я использовал его для сохранения изображений или других файлов данных, поскольку он позволяет увидеть , где ваше приложение развернуто в данный момент .Например, Eclipse и Tomcat создадут временную папку, которая находится глубоко в вашем профиле Eclipse, и развернут там приложение.

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