Я работаю над распорками 2.0. Я разрабатываю веб-приложение. Я использую отчет Jasper в своем приложении. Я хочу получить доступ к файлам *.jrxml
в своем классе действий. Я не хочу давать жесткий путь к файлам. Поэтому, чтобы получить путь динамически, я искал его и получил решение, которое я могу получить, используя метод getRealPath()
. Но я нашел два осуществления делает это:лучший подход к реализации getRealPath()
Использование
HttpSession
, чтобы получить объектServletContext
и используяgetRealPath()
методServletContext
объекта. Как это:HttpSession session = request.getSession(); String realPath = session.getServletContext().getRealPath("/");
Второй подход, чтобы сделать это непосредственно, используя статический метод
getServletContext()
изServletActionContext
. И тогда мы можем получить реальный путь приложения, используя методgetRealPath()
. Как это:String realPath = ServletActionContext.getServletContext().getRealPath("/");
Скажите, пожалуйста, есть ли какая-то разница между двумя выше и также скажите, пожалуйста, есть ли какой-либо другой способ, чтобы получить путь?
Связанный: http://stackoverflow.com/questions/12160639/what-does-mean-in-the-function-servletcontext-getrealpath и http://stackoverflow.com/questions/14843615/servlet-failing-to -write-uploaded-image-to-disk – BalusC
Почему вы не помещаете свои файлы в webapp? –
@AleksandrM Эти файлы находятся в моем webapp. Но есть три места, где мы развертываем наше приложение. localhost, чтобы разработать и протестировать приложение, а затем демонстрационный сервер нашей компании и живой сервер. И если я дам жестко закодированный путь в каталоге '/ WebContent/reports /', тогда я должен менять его каждый раз, когда я его разворачиваю на сервер. И я хочу, чтобы мне не приходилось менять его каждый раз. – Vicky