【发布时间】:2013-06-04 13:09:03
【问题描述】:
我正在研究 struts 2.0 。我正在设计一个网络应用程序。
我在我的应用程序中使用 Jasper Report。我想访问我的操作类中的*.jrxml 文件。我不想为文件提供硬编码路径。因此,为了动态获取路径,我用谷歌搜索并得到了可以使用getRealPath() 方法获取路径的解决方案。但我发现了两种实现方式:
-
使用
HttpSession获取ServletContext的对象并使用ServletContext对象的getRealPath()方法。 像这样:HttpSession session = request.getSession(); String realPath = session.getServletContext().getRealPath("/"); -
第二种方法直接使用
ServletActionContext的静态方法getServletContext()。然后我们可以使用getRealPath()方法获取应用程序的真实路径。 像这样:String realPath = ServletActionContext.getServletContext().getRealPath("/");
请告诉我,以上两者有什么区别,还请告诉我是否有其他方法可以获取路径?
【问题讨论】:
-
你为什么不把你的文件放到webapp里呢?
-
@AleksandrM 这些文件在我的 webapp 中。但是我们在三个地方部署我们的应用程序。 localhost 开发和测试应用程序,然后演示我们公司的服务器和现场服务器。如果我给出
/WebContent/reports/位置的硬编码路径,那么每次我将其部署到服务器时都必须相应地更改它。而且我想要一种方式,这样就不用每次都改了。