实现getRealPath()的最佳方法

时间:2013-06-04 13:09:04

标签: servlets struts2

我正在研究struts 2.0。我正在设计一个Web应用程序。 我在我的申请中使用了Jasper报告。我想访问动作类中的*.jrxml个文件。我不想给文件提供硬编码路径。因此,为了动态获取路径,我使用Google搜索并获得了可以使用getRealPath()方法获取路径的解决方案。但是我发现了两个这样做的实现:

  1. 使用HttpSession获取ServletContext的对象并使用getRealPath()对象的ServletContext方法。 像这样:

    HttpSession session = request.getSession();
    String realPath = session.getServletContext().getRealPath("/");
    
  2. 使用getServletContext()的静态方法ServletActionContext直接执行此操作的第二种方法。然后我们可以使用getRealPath()方法获取应用程序的真实路径。 像这样:

    String realPath = ServletActionContext.getServletContext().getRealPath("/");

  3. 请告诉我,上述两者之间是否有任何区别,请告诉我是否还有其他方法可以获得这条路径?

1 个答案:

答案 0 :(得分:0)

两者都不是“更好”,而且我认为两者都不是特别好。

我可能会尝试在初始化servlet中获取上下文路径并将其粘贴到应用程序上下文中,然后执行您的操作ApplicationAware并从地图中检索值。

这具有辅助可测试性和删除操作中的静态引用的附加好处。

那就是说,我认为没有理由通过你的第一种方法的额外机制:它增加了很多噪音,没有可感知的好处;我甚至不确定为什么会被考虑。

除非有真正的需要,具体用途是什么,否则我也会谨慎对待这样的道路。通常,您不需要按其路径访问应用内部资源。

相关问题